PDA

View Full Version : ساختن یک Whois Engine



EHSH
پنج شنبه 11 اسفند 1384, 18:30 عصر
با سلام خدمت همگی دوستان !

من میخواستم یه سرویس whois برای جستجوی دامنه های آزاد و اطلاعات .... بنویسم
از اساتید بزرگوار کسی هست مرا راهنمایی کنه ؟

PrinceDotNet
پنج شنبه 11 اسفند 1384, 20:53 عصر
از این مقاله استفاده کن.

http://www.iranasp.net/Articles/ShowArticle.aspx?articleid=167

EHSH
یک شنبه 14 اسفند 1384, 23:11 عصر
مرسی Prince تستش میکنم ، نتایجش را میذارم اینجا !!!

nazaninam
دوشنبه 15 اسفند 1384, 13:53 عصر
من تستش کردم به خوبی جواب میده به زبون vb هم باز نویسی کردم کسی خواست بگه

shakiba_12
دوشنبه 15 اسفند 1384, 16:34 عصر
اگر امکانش هست کد وی بی خودتون رو قرار بدید

nazaninam
دوشنبه 15 اسفند 1384, 21:18 عصر
سلام دوست من اینم با vb.net

iekrang
دوشنبه 28 فروردین 1385, 08:06 صبح
این برنامه برای من به درستی کار میکنه فقط یه مشکلی باهاش دارم:
آیا راهی هست که فقط اطلاعات مربوط به whois رو نشون بده و هیچ مشخصاتی از سرور و اطلاعات اضافی نداشته باشه؟
ممنون میشم اگر من رو راهنمایی کنید.

nazaninam
دوشنبه 28 فروردین 1385, 18:48 عصر
بیشتر توضیح بدید!!

پیمان مظفری
چهارشنبه 27 تیر 1386, 12:14 عصر
سلام
دستتون درد نکنه فایل جالبی بود فقط می خواستم بپرسم مشخصات هر دامنه رو با استفاده از اون چطور میشه گرفت ؟

ClaimAlireza
پنج شنبه 28 تیر 1386, 10:05 صبح
اقا این لینکی که گذاشتین کار نمیکنه!!!!!!!!!!!

mab designer
دوشنبه 01 مهر 1387, 00:18 صبح
سلام...این پست خیلی قدیمی هست مجبورم که دوباره بیارمش بالا.... این لینک برای کد سی شارپ دیگه کار نمیکنه....اگه کسی کد سی شارپ جستجوی دامنه را داره لطفا بزاره برای دانلود...ممنونم

raravaice
دوشنبه 01 مهر 1387, 00:43 صبح
mab designer (http://barnamenevis.org/forum/member.php?u=38861) ساختش کاری نداره!

یه سوکت TCP بزن به پورت 43 از سرور whois مورد نظرت.

مثالا برای ir با whois.nic.ir تعامل داشته باش و برای com,net و بقیه دامنه ها هم که چیزی که زیاده whois سرور.

telnet whois.nic.ir 43 رو یه تست بزن میگیری چی میگم.

موفق باشید

mostafa_sgh
دوشنبه 01 مهر 1387, 02:43 صبح
سلام به همه دوستان عزیز
شما برای شروع ابتدا باید آدرس سرورهای ارائه دهنده دامنه ها را بدانید که چند نمونه از آن در مثال زیر بیان شده است.

شما برای این مثال باید کد HTML زیر را در Web Page خود قرار دهید :




<asp:textbox id="TxtDomainName" runat="server"></asp:textbox><asp:dropdownlist id="DDLstSuffix" runat="server">


<asp:listitem selected="True" value=".COM">.com</asp:listitem>


<asp:listitem value=".NET">.net</asp:listitem>

<asp:listitem value=".EDU">.edu</asp:listitem>

<asp:listitem value=".BIZ">.biz</asp:listitem>
<asp:listitem value=".ORG">.org</asp:listitem>
<asp:listitem value=".INFO">.info</asp:listitem>
<asp:listitem value=".IR">.ir</asp:listitem>
<asp:listitem value=".NET.IR">.net.ir</asp:listitem>
<asp:listitem value=".CO.IR">.co.ir</asp:listitem>
<asp:listitem value=".ID.IR">.id.ir</asp:listitem>
</asp:dropdownlist>
&nbsp;
<asp:button id="btnWhois" onclick="Whois_Click" runat="server" text="Whois" width="58px"></asp:button><br />
<br />
<asp:label id="SearchRes" runat="server" font-names="tahoma" font-size="11pt"></asp:label>







سپس کد زیر را به صفحه کد Web Page خود اضافه کنید .




string StrSvr, StrDomain, Resp;


NetworkStream TcpStr;

StreamReader TcpStrRdr;

protected void Whois_Click(object sender, EventArgs e)
{
if (DDLstSuffix.SelectedItem.Value == ".COM" || DDLstSuffix.SelectedItem.Value == ".NET" || DDLstSuffix.SelectedItem.Value == ".EDU")
{
StrSvr = "whois.internic.net";
StrDomain = TxtDomainName.Text.Trim() + DDLstSuffix.SelectedItem.Value + "\r\n";
}
else if (DDLstSuffix.SelectedItem.Value == ".ORG")
{
StrSvr = "whois.publicinterestregistry.net";
StrDomain = TxtDomainName.Text.Trim() + DDLstSuffix.SelectedItem.Value + "\r\n";
}
else if (DDLstSuffix.SelectedItem.Value == ".BIZ")
{
StrSvr = "whois.neulevel.biz";
StrDomain = TxtDomainName.Text.Trim() + DDLstSuffix.SelectedItem.Value + "\r\n";
}
else if (DDLstSuffix.SelectedItem.Value == ".INFO")
{
StrSvr = "whois.afilias.info";
StrDomain = TxtDomainName.Text.Trim() + DDLstSuffix.SelectedItem.Value + "\r\n";
}
else if ((DDLstSuffix.SelectedItem.Value == ".IR") || (DDLstSuffix.SelectedItem.Value == ".CO.IR") || (DDLstSuffix.SelectedItem.Value == ".NET.IR") || (DDLstSuffix.SelectedItem.Value == ".ID.IR"))
{
StrSvr = "whois.nic.ir";
StrDomain = TxtDomainName.Text.Trim() + DDLstSuffix.SelectedItem.Value + "\r\n";
}
if (!string.IsNullOrEmpty(StrSvr) && !string.IsNullOrEmpty(StrDomain))
{
Connect();
}
}
protected void Connect()
{
byte[] ArrDomain;
TcpClient TcpClt = new TcpClient();
TcpClt.Connect(StrSvr, 43);
ArrDomain = Encoding.ASCII.GetBytes(StrDomain);
TcpStr = TcpClt.GetStream();
TcpStr.Write(ArrDomain, 0, StrDomain.Length);
TcpStrRdr = new StreamReader(TcpClt.GetStream(), Encoding.ASCII);
Resp = Regex.Replace(TcpStrRdr.ReadToEnd(),"\n","");
Resp = Resp.ToLower();
if (Regex.IsMatch(Resp, "no match") || Regex.IsMatch(Resp, "not found") || Regex.IsMatch(Resp, "no entries found"))
{
SearchRes.ForeColor = System.Drawing.Color.Green;
SearchRes.Text = " دامنه مورد نظر آزاد مي باشد ";
}
else
{
SearchRes.ForeColor = System.Drawing.Color.Red;
SearchRes.Text = " دامنه مورد نظر شما قبلاً ثبت شده است ";
}
TcpClt.Close();
}







شما برای اجرای این کد نیاز به NameSpace های زیر دارید که باید آنها را به صفحه کد بالا اضافه کنید :





System.IO;

System.Net.Sockets;

System.Text;
System.Text.RegularExpressions;







و در آخر صفحه را Run کرده و از آن لذت ببرید .

منبع : ازیکی از سایتها ( یادم نیست ) و با کمی دخل و تصرف

nazaninam
دوشنبه 01 مهر 1387, 13:36 عصر
میتونید از وب سرویس زیر برای این کار استفاده کنید :
Http://faradade.com/webservices/whois.asmx
موفق باشید

mab designer
سه شنبه 02 مهر 1387, 19:01 عصر
mab designer (http://barnamenevis.org/forum/member.php?u=38861) ساختش کاری نداره!

یه سوکت TCP بزن به پورت 43 از سرور whois مورد نظرت.

مثالا برای ir با whois.nic.ir تعامل داشته باش و برای com,net و بقیه دامنه ها هم که چیزی که زیاده whois سرور.

telnet whois.nic.ir 43 رو یه تست بزن میگیری چی میگم.

موفق باشید

ممنون یکم باهاش ور فتم درست شد.... دستت درد نکنه... حالا چی کار کنم که اگه دامین وجود داشت اطلاعاتشو بریزه بیرون؟؟؟؟

si6arp
چهارشنبه 08 تیر 1390, 01:12 صبح
میتونید از وب سرویس زیر برای این کار استفاده کنید :
Http://faradade.com/webservices/whois.asmx
موفق باشید

This Page Cann't Found

mobasherian
پنج شنبه 09 تیر 1390, 00:46 صبح
سلام
والا این وب سرویس های شرکت فراداده عشقی کار می کنه . .یه روز کار می کنه یه روز کار نمی کنه . .

دوستان کسی هست Whois نوشته باشه گه از نتایج جستجوی یک سایت بخونه . .

با تشکر

Saber Mogaddas
سه شنبه 01 آذر 1390, 14:01 عصر
سلام به همه دوستان عزیز
شما برای شروع ابتدا باید آدرس سرورهای ارائه دهنده دامنه ها را بدانید که چند نمونه از آن در مثال زیر بیان شده است.

شما برای این مثال باید کد HTML زیر را در Web Page خود قرار دهید :




<asp:textbox id="TxtDomainName" runat="server"></asp:textbox><asp:dropdownlist id="DDLstSuffix" runat="server">


<asp:listitem selected="True" value=".COM">.com</asp:listitem>


<asp:listitem value=".NET">.net</asp:listitem>

<asp:listitem value=".EDU">.edu</asp:listitem>

<asp:listitem value=".BIZ">.biz</asp:listitem>
<asp:listitem value=".ORG">.org</asp:listitem>
<asp:listitem value=".INFO">.info</asp:listitem>
<asp:listitem value=".IR">.ir</asp:listitem>
<asp:listitem value=".NET.IR">.net.ir</asp:listitem>
<asp:listitem value=".CO.IR">.co.ir</asp:listitem>
<asp:listitem value=".ID.IR">.id.ir</asp:listitem>
</asp:dropdownlist>
&nbsp;
<asp:button id="btnWhois" onclick="Whois_Click" runat="server" text="Whois" width="58px"></asp:button><br />
<br />
<asp:label id="SearchRes" runat="server" font-names="tahoma" font-size="11pt"></asp:label>







سپس کد زیر را به صفحه کد Web Page خود اضافه کنید .




string StrSvr, StrDomain, Resp;


NetworkStream TcpStr;

StreamReader TcpStrRdr;

protected void Whois_Click(object sender, EventArgs e)
{
if (DDLstSuffix.SelectedItem.Value == ".COM" || DDLstSuffix.SelectedItem.Value == ".NET" || DDLstSuffix.SelectedItem.Value == ".EDU")
{
StrSvr = "whois.internic.net";
StrDomain = TxtDomainName.Text.Trim() + DDLstSuffix.SelectedItem.Value + "\r\n";
}
else if (DDLstSuffix.SelectedItem.Value == ".ORG")
{
StrSvr = "whois.publicinterestregistry.net";
StrDomain = TxtDomainName.Text.Trim() + DDLstSuffix.SelectedItem.Value + "\r\n";
}
else if (DDLstSuffix.SelectedItem.Value == ".BIZ")
{
StrSvr = "whois.neulevel.biz";
StrDomain = TxtDomainName.Text.Trim() + DDLstSuffix.SelectedItem.Value + "\r\n";
}
else if (DDLstSuffix.SelectedItem.Value == ".INFO")
{
StrSvr = "whois.afilias.info";
StrDomain = TxtDomainName.Text.Trim() + DDLstSuffix.SelectedItem.Value + "\r\n";
}
else if ((DDLstSuffix.SelectedItem.Value == ".IR") || (DDLstSuffix.SelectedItem.Value == ".CO.IR") || (DDLstSuffix.SelectedItem.Value == ".NET.IR") || (DDLstSuffix.SelectedItem.Value == ".ID.IR"))
{
StrSvr = "whois.nic.ir";
StrDomain = TxtDomainName.Text.Trim() + DDLstSuffix.SelectedItem.Value + "\r\n";
}
if (!string.IsNullOrEmpty(StrSvr) && !string.IsNullOrEmpty(StrDomain))
{
Connect();
}
}
protected void Connect()
{
byte[] ArrDomain;
TcpClient TcpClt = new TcpClient();
TcpClt.Connect(StrSvr, 43);
ArrDomain = Encoding.ASCII.GetBytes(StrDomain);
TcpStr = TcpClt.GetStream();
TcpStr.Write(ArrDomain, 0, StrDomain.Length);
TcpStrRdr = new StreamReader(TcpClt.GetStream(), Encoding.ASCII);
Resp = Regex.Replace(TcpStrRdr.ReadToEnd(),"\n","");
Resp = Resp.ToLower();
if (Regex.IsMatch(Resp, "no match") || Regex.IsMatch(Resp, "not found") || Regex.IsMatch(Resp, "no entries found"))
{
SearchRes.ForeColor = System.Drawing.Color.Green;
SearchRes.Text = " دامنه مورد نظر آزاد مي باشد ";
}
else
{
SearchRes.ForeColor = System.Drawing.Color.Red;
SearchRes.Text = " دامنه مورد نظر شما قبلاً ثبت شده است ";
}
TcpClt.Close();
}







شما برای اجرای این کد نیاز به NameSpace های زیر دارید که باید آنها را به صفحه کد بالا اضافه کنید :





System.IO;

System.Net.Sockets;

System.Text;
System.Text.RegularExpressions;







و در آخر صفحه را Run کرده و از آن لذت ببرید .

منبع : ازیکی از سایتها ( یادم نیست ) و با کمی دخل و تصرف

سلام
دوست عزیز من با این دستور رفتم جلو متاسفانه این error رو..
No such host is known

تو این خط



Line 64: TcpClt.Connect(StrSvr, 43);

میده..
لطفا راهنمایم کنید..
ممنون..

mehdi-ghafari
دوشنبه 01 اسفند 1390, 19:37 عصر
سلام دوستان. ممنون از زحماتتون.
من با یه جای این کد مشکل دارم. من دارم اینو به VB تبدیل میکنم فقط نمی دونم به جای خط زیر چی بنویسم :
Resp = Regex.Replace(TcpStrRdr.ReadToEnd(),"\n","");
اون \n چیه و چکار میکنه؟
یا اینجاها :
StrDomain = TxtDomainName.Text.Trim() + DDLstSuffix.SelectedItem.Value + "\r\n";
در اینجا \n و \r اومده.

و اینکه آیا سرورها در جواب همین چند پاسخ رو برمیگردونن :
not found
no entries found
no match

---- در ضمن اینرو بگم که کد گذاشته شده توسط دوست خوبم mostafa_sgh به زبان #C به درستی کار میکنه:تشویق:

بازم ممنون

mehdi-ghafari
دوشنبه 01 اسفند 1390, 23:07 عصر
و یه چیز دیگه دوستان
من دامین tk رو هم اضاف کردم و سرور ادرس رو هم براش گذاشتم (whois.nic.tk) ولی موقع سرچ واسه این دامین خطای زیر رو میده
A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 195.20.32.82:43

kingmech
سه شنبه 02 اسفند 1390, 10:48 صبح
@mehdi-ghafari
/n یعنی سطر بعد
Resp = Regex.Replace(TcpStrRdr.ReadToEnd(),"\n","");

اینم میگه هرجا رفته بود سطر بعد بیارش کنار خط قبلی

zadbakhsh
پنج شنبه 05 مرداد 1391, 11:32 صبح
سلام به همه دوستان عزیز
شما برای شروع ابتدا باید آدرس سرورهای ارائه دهنده دامنه ها را بدانید که چند نمونه از آن در مثال زیر بیان شده است.

شما برای این مثال باید کد HTML زیر را در Web Page خود قرار دهید :




<asp:textbox id="TxtDomainName" runat="server"></asp:textbox><asp:dropdownlist id="DDLstSuffix" runat="server">


<asp:listitem selected="True" value=".COM">.com</asp:listitem>


<asp:listitem value=".NET">.net</asp:listitem>

<asp:listitem value=".EDU">.edu</asp:listitem>

<asp:listitem value=".BIZ">.biz</asp:listitem>
<asp:listitem value=".ORG">.org</asp:listitem>
<asp:listitem value=".INFO">.info</asp:listitem>
<asp:listitem value=".IR">.ir</asp:listitem>
<asp:listitem value=".NET.IR">.net.ir</asp:listitem>
<asp:listitem value=".CO.IR">.co.ir</asp:listitem>
<asp:listitem value=".ID.IR">.id.ir</asp:listitem>
</asp:dropdownlist>
&nbsp;
<asp:button id="btnWhois" onclick="Whois_Click" runat="server" text="Whois" width="58px"></asp:button><br />
<br />
<asp:label id="SearchRes" runat="server" font-names="tahoma" font-size="11pt"></asp:label>







سپس کد زیر را به صفحه کد Web Page خود اضافه کنید .




string StrSvr, StrDomain, Resp;


NetworkStream TcpStr;

StreamReader TcpStrRdr;

protected void Whois_Click(object sender, EventArgs e)
{
if (DDLstSuffix.SelectedItem.Value == ".COM" || DDLstSuffix.SelectedItem.Value == ".NET" || DDLstSuffix.SelectedItem.Value == ".EDU")
{
StrSvr = "whois.internic.net";
StrDomain = TxtDomainName.Text.Trim() + DDLstSuffix.SelectedItem.Value + "\r\n";
}
else if (DDLstSuffix.SelectedItem.Value == ".ORG")
{
StrSvr = "whois.publicinterestregistry.net";
StrDomain = TxtDomainName.Text.Trim() + DDLstSuffix.SelectedItem.Value + "\r\n";
}
else if (DDLstSuffix.SelectedItem.Value == ".BIZ")
{
StrSvr = "whois.neulevel.biz";
StrDomain = TxtDomainName.Text.Trim() + DDLstSuffix.SelectedItem.Value + "\r\n";
}
else if (DDLstSuffix.SelectedItem.Value == ".INFO")
{
StrSvr = "whois.afilias.info";
StrDomain = TxtDomainName.Text.Trim() + DDLstSuffix.SelectedItem.Value + "\r\n";
}
else if ((DDLstSuffix.SelectedItem.Value == ".IR") || (DDLstSuffix.SelectedItem.Value == ".CO.IR") || (DDLstSuffix.SelectedItem.Value == ".NET.IR") || (DDLstSuffix.SelectedItem.Value == ".ID.IR"))
{
StrSvr = "whois.nic.ir";
StrDomain = TxtDomainName.Text.Trim() + DDLstSuffix.SelectedItem.Value + "\r\n";
}
if (!string.IsNullOrEmpty(StrSvr) && !string.IsNullOrEmpty(StrDomain))
{
Connect();
}
}
protected void Connect()
{
byte[] ArrDomain;
TcpClient TcpClt = new TcpClient();
TcpClt.Connect(StrSvr, 43);
ArrDomain = Encoding.ASCII.GetBytes(StrDomain);
TcpStr = TcpClt.GetStream();
TcpStr.Write(ArrDomain, 0, StrDomain.Length);
TcpStrRdr = new StreamReader(TcpClt.GetStream(), Encoding.ASCII);
Resp = Regex.Replace(TcpStrRdr.ReadToEnd(),"\n","");
Resp = Resp.ToLower();
if (Regex.IsMatch(Resp, "no match") || Regex.IsMatch(Resp, "not found") || Regex.IsMatch(Resp, "no entries found"))
{
SearchRes.ForeColor = System.Drawing.Color.Green;
SearchRes.Text = " دامنه مورد نظر آزاد مي باشد ";
}
else
{
SearchRes.ForeColor = System.Drawing.Color.Red;
SearchRes.Text = " دامنه مورد نظر شما قبلاً ثبت شده است ";
}
TcpClt.Close();
}







شما برای اجرای این کد نیاز به NameSpace های زیر دارید که باید آنها را به صفحه کد بالا اضافه کنید :





System.IO;

System.Net.Sockets;

System.Text;
System.Text.RegularExpressions;







و در آخر صفحه را Run کرده و از آن لذت ببرید .

منبع : ازیکی از سایتها ( یادم نیست ) و با کمی دخل و تصرف

سلام،
من از این کد جواب گرفتم، تو یه هاست هم آپلود کردم سایتم رو و آنلاین هم جواب گرفتم.
میخواستم ببینم که اگر بخوام اطلاعات کاملتری، مثل این که مشخصات دارنده دامین و کلاینت ثبت کننده دامین رو برام بیاره از چه کدی باید استفاده کنم.
ممنون.