وبلاگ فربد | Farbod Blog

توی این وبلاگ راجع به پروژه هام صحبت می کنم

نوشتن اسکریپت whois با پایتون

  • ۶۸۰

سلام دوستان :)

توی این برنامه قراره یک اسکریپت whois با پایتون بنویسیم اما به روشی متفاوت

خب همونطور که میدونید اکثرا برای نوشتن این اسکریپت از کتابخونه های آماده و ابزار ها استفاده میکنن ولی ما میخوایم الان با اتصال مستقیم به سرور های whois اطلاعات مربوط به domain رو ازش استخراج کنیم

خب اول یکم از نظر مفهومی توضیح بدم

هر وب سایتی که توی اینترنته یک دامین داره مثلا google.com , aparat.com. این دامین ها رو صاحب های وبسایت خریدن و روی وبسایتشون ثبت کردن

دیتابیس هایی توی جهان موجودند که به اونها whois server میگن توی این دیتابیس ها اطلاعات این دامنه و صاحب اون نوشته می شن مثل شماره تلفن ، آدرس ، ایمیل و... که ما میتونیم با وصل شدن به اونها به این اطلاعات دسترسی داشته باشیم

خب برای اینکار دو تا سرور whois معروف توی جهان وجود دارن:

1- whois.internic.net

2- whois.iana.org

 

خب ما برای بدست آوردن اطلاعات از دو سرور بالا استفاده میکنیم. سرور اول برای دامین های org, com و... هست و سرور دوم برای دامین های کشوری مثل ir, ca و...

 

پروتکل whois روی پورت 43 TCP کار میکنه برای همین باید روی پورت 43 یک اتصال TCP به سمت سرور برقرار کنیم و یک درخواست برای اطلاعات دامین مورد نظرمون بفرستیم تا اطلاعات دامین مورد نظر رو برامون ارسال کنه 

 

برای اتصال به سرور ها و برقراری کانکشن به سمت سرور(چه TCP و چه UDP) از کتابخونه socket در پایتون استفاده میکنیم که بطور پیشفرض نصب هستش

 

خب میریم سراغ کد

 

سورس:

import socket

domain = input("Domain : ").lower()

domain = domain.replace("http://","")
domain = domain.replace("https://","")
domain = domain.replace("www.","")

if domain[-3:] == "org" or domain[-3:] == "com" or domain[-3:] == "net":
    whois_server = "whois.internic.net"
else:
    whois_server =  "whois.iana.org"

s = socket.socket(socket.AF_INET , socket.SOCK_STREAM)

s.connect((whois_server,43))

s.send((domain+"\r\n").encode())

msg = s.recv(10000)

print(msg.decode())

 

خب اول دامین رو از کاربر گرفتیم و همشو تبدیل به حروف کوچیک کردیم بعدش http یا https و www رو ازش حذف کردیم

 

بعدش یک if نوشتیم که چک میکنه ببینه آیا دامین com , org یا net هست اگر بود سرور اولی رو برای اتصال انتخاب کنه اگر نه سرور دومی رو

 

حالا یک شی برای اتصال به سرور درست میکنیم

socket.AF_INET داره میگه که کانکشن از نوع IPV4 هست و socket.SOCK_STREAM میگه کانکشن از نوع TCP هست

 

بعدش روی پورت 43 به سرور متصل میشیم و دامین رو براش میفرستیم و جواب رو ازش دریافت میکنیم و چاپ میکنیم.

 

 

امیدوارم براتون مفید بوده باشه D:


نظرات: (۰) هیچ نظری هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی