PDA

View Full Version : فهمیدن ثبت بودن یک وب سایت در اینترنت



IranVisual
یک شنبه 18 فروردین 1387, 23:25 عصر
میخوام تو یک قسمت سایت یه جستجو بزارم مبنی بر اینکه طرف بتونه ببینه دامینی که وارد کرده توی اینترنت قبلا ثبت شده یا نه

Mojtaba_ss
یک شنبه 18 فروردین 1387, 23:42 عصر
در مورد Whois Lookcup در گوگل جستجو کنید.
سورس کد زیاده.

IranVisual
دوشنبه 19 فروردین 1387, 00:29 صبح
در مورد Whois Lookcup در گوگل جستجو کنید.
سورس کد زیاده.

من هرچی سوال داشته باشم میتونم تو گوگل سرچ کنم و پیدا کنم خوب اینجوری که سایت برنامه نویس بیکار میمونه همه میتونن توی گوگل به جواب برسن

twelve
دوشنبه 19 فروردین 1387, 01:55 صبح
من هرچی سوال داشته باشم میتونم تو گوگل سرچ کنم و پیدا کنم خوب اینجوری که سایت برنامه نویس بیکار میمونه همه میتونن توی گوگل به جواب برسن

اگر بهروز بود میگفت اینجا یه انجمن تخصصیه . بهروز جون صفاتو...

IranVisual
دوشنبه 19 فروردین 1387, 01:59 صبح
اینجا یک انجمن تخصصیه منم سورس کد نخواستم اگه کسی بلده راهنمایی کنه یا آموزش بده

Mojtaba_ss
دوشنبه 19 فروردین 1387, 05:26 صبح
اینجا یک انجمن تخصصیه منم سورس کد نخواستم اگه کسی بلده راهنمایی کنه یا آموزش بده

دوست من می بخشی.
در آدرس زیر یه مقاله فارسی واسه همین کار هستش.
ضمنا سورس کد به همراه توضیح هم وجود داره.

http://nofa.ir/ShowArticle-id62.aspx

IranVisual
دوشنبه 19 فروردین 1387, 07:32 صبح
ممنون ولی من با vb کار میکنم کسی میتونه کدشو به vb تبدیل کنه ممنون میشم

در این پروژه به شما نشان داده می شود که چطور می توان یک سیستم Whois Lookup که کاربران بوسیله آن بتوانند اطلاعات یک دومین را جستجو کنند. این پروژه بصورت Windows Application پیاده سازی شده است. می توان براحتی آنرا به Asp.net تبدیل کنید و در سایتان استفاده نمائید.

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace Whois
{

public delegate void WhoisEventHandler(object sender, WhoisEventArgs e);

/// <summary>
/// Our class containing information to be passed to
/// the lookup event.
/// </summary>

کلاس حاوی اطلاعاتی که به رخداد (event) lookup ارسال می شود

public class WhoisEventArgs : EventArgs
{

public string WhoisInfo
{

get
{
return this.whoisInfo;
}
}



آدرس سروری که اطلاعات دومین در آن جستجو(lookup) می شود.

public string WhoisServer
{
get
{
return this.whoisServer;
}

}
private string whoisInfo;
private string whoisServer;

public WhoisEventArgs(string Info,string Server)
{
this.whoisInfo = Info;
this.whoisServer = Server;
}

}



/// <summary>
/// Perform a whois lookup on a domain name, enabling you to
/// find out if a domain name is registered, and if it is -
/// to whom and what name servers it uses.
/// </summary>

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



public class Whois
{

/// <summary>
/// The server used to perform the whois. If this is not set,
/// then an attempt to find the whois server automatically is
/// made. If none is found, the internic whois server is used
/// by default.
/// </summary>



آدرس سروری که اطلاعات دومین در آن جستجو(lookup) می شود.

public string WhoisServer
{

get
{

return this.whoisServer;

}

set
{

this.whoisServer = value;

}

}



/// <summary>
/// Called when the lookup has been complete.
/// </summary>

زمانیکه عمل جستجو تمام شود این رخداد صدا می شود.

public event WhoisEventHandler LookupComplete;

private string whoisServer = "";

/// <summary>
/// Performs a whois lookup on the domain provided.
/// </summary>

/// <param name="Domain">The domain to lookup.</param>
/// <returns>Information returned by the domain whois server,
/// which can then be string parsed to see if the domain is available or taken.</returns>

بوسیله این متد می توانید یک دومین را جستجو کند. نام دومین را با پارامتر Domain بدهید.

public void Lookup(string Domain)
{

نتیجه جستجو در این متغییر نگهداری می شود.

string result = "";
string[] parts = new string[] {};


// Knock off http and www if it's in the Domain

اگر ابتدای دومین با http:// شروع شده باشد آنرا حذف می کند چون هنگام جستجوی دومین باید نام دومین بدون http:// باشد

if ( Domain.StartsWith("http://") )
{

Domain = Domain.Replace("http://","");

}

اگر ابتدای دومین با www. شروع شده باشد آنرا حذف می کند چون هنگام جستجوی دومین باید نام دومین بدون www. باشد

if ( Domain.StartsWith("www.") )
{
Domain = Domain.Substring(4,Domain.Length -4);
}



if ( Domain.IndexOf(".tv") != -1 || Domain.IndexOf(".pro") != -1 || Domain.IndexOf(".name") != -1)

{

// As result says - certain domain authorities like to keep their whois service private.

// There maybe extra tlds to add.

اگر دومین از نوع .tv .pro .name باشد به کاربر اخطار می دهد که این دومین ها به حساب کاربری نیاز دارند.

result = "'.pro','.name', and '.tv' domains require an account for a whois";

}
else
{

حتما باید نام دومین . (نقطه) داشته باشد مانند nofa.ir

if ( Domain.IndexOf(".") != -1 )
{

// Find the whois server for the domain ourselves, if non set.

if ( this.whoisServer == "" )
{

اگر آدرس سرور whois را نداده باشید سیستم آدرس سرور را قرار می دهد

this.whoisServer = this.getWhoisServer(Domain);

} }



// Connect to the whois server

در این قسمت از طریق پورت 43 به سرور whois متصل می شود.

43 پورتی است که سرور های whois از آن استفاده می کند.

TcpClient tcpClient = new TcpClient();
tcpClient.Connect(this.whoisServer,43);
NetworkStream networkStream = tcpClient.GetStream();

// Send the domain name to the whois server

در این قسمت نام دومین به سرور whois ارسال می گردد.

byte[] buffer = ASCIIEncoding.ASCII.GetBytes(Domain + "\r\n");
networkStream.Write(buffer,0,buffer.Length);

// Read back the results

در این قسمت جواب های سرور whois خوانده می شود. این جوابها به اندازه 8192 بایت بافر می شود.

buffer = = new byte[8192];
int i = networkStream.Read(buffer,0,buffer.Length);
while ( i > 0)
{ {

i = networkStream.Read(buffer,0,buffer.Length);
result += ASCIIEncoding.ASCII.GetString(buffer);;

}

networkStream.Close();
tcpClient.Close();

} }

else
{

result = "Please enter a valid domain name.";

}

}



// Fire event with the info of the lookup

در این قسمت رخداد پایان رسیدن جستجو صدا می شود.

if ( this.LookupComplete != null )

{

WhoisEventArgs whoisEventArgs = new WhoisEventArgs(result,this.whoisServer);

this.LookupComplete(this,whoisEventArgs);

}

}



/// <summary>

/// Gets the whois server for a domain using

/// whois-servers.net.

/// </summary>

/// <param name="domainName">The domain name to retrieve the whois server for.</param>

/// <returns>The whois server hostname.</returns>



در این متد اگر آدرس سرور whois داده نشده باشد .سیستم به صورت اتوماتیک بدنبال سرور whois می گردد و از آن استفاده می کند. اگر سروری پیدا نکند از سرور inetrnic استفاده می کند.

private string getWhoisServer(string domainName)

{

string [] parts = domainName.Split('.');

string tld = parts[parts.Length -1];

string host = tld + ".whois-servers.net";



// .tk doesn't resolve, but it's whois server is public

if ( tld == "tk")

{

return "whois.dot.tk";

}



try

{

IPHostEntry ipHostEntry = Dns.GetHostByName(host);



if ( ipHostEntry.HostName == host )

{

// No entry found, use internic as default

host = "whois.internic.net";

}

else

{

host = ipHostEntry.HostName;

}



return host;

}

catch

{

host = "whois.internic.net";

return host;

}

}

}

}

ezamnejad
دوشنبه 19 فروردین 1387, 10:11 صبح
در این آدرس میتونید کار تبدیل کد را انجام بدهید .
http://labs.developerfusion.co.uk/convert/csharp-to-vb.aspx

twelve
دوشنبه 19 فروردین 1387, 10:32 صبح
Imports System
Imports System.Net
Imports System.Net.Sockets
Imports System.Text

Namespace Whois

Public delegate void WhoisEventHandler(Object sender, WhoisEventArgs e)

'/ <summary>
'/ Our class containing information to be passed to
'/ the lookup event.
'/ </summary>

کلاس حاوی اطلاعاتی که به رخداد (event) lookup ارسال می شود

Public Class WhoisEventArgs
Inherits EventArgs

Public ReadOnly Property WhoisInfo() As String
Get
Return Me.whoisInfo
End Get
End Property



آدرس سروری که اطلاعات دومین در آن جستجو(lookup) می شود.

Public ReadOnly Property WhoisServer() As String
Get
Return Me.whoisServer
End Get
End Property
Private whoisInfo As String
Private whoisServer As String

Public Sub New(ByVal Info As String, ByVal Server As String)
Me.whoisInfo = Info
Me.whoisServer = Server
End Sub

End Class



'/ <summary>
'/ Perform a whois lookup on a domain name, enabling you to
'/ find out if a domain name is registered, and if it is -
'/ to whom and what name servers it uses.
'/ </summary>

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



Public Class Whois

'/ <summary>
'/ The server used to perform the whois. If this is not set,
'/ then an attempt to find the whois server automatically is
'/ made. If none is found, the internic whois server is used
'/ by default.
'/ </summary>



آدرس سروری که اطلاعات دومین در آن جستجو(lookup) می شود.

Public Property WhoisServer() As String
Get

Return Me.whoisServer

End Get
Set (ByVal Value As String)

Me.whoisServer = value

End Set
End Property



'/ <summary>
'/ Called when the lookup has been complete.
'/ </summary>

زمانیکه عمل جستجو تمام شود این رخداد صدا می شود.

Public event WhoisEventHandler LookupComplete

Private whoisServer As String = ""

'/ <summary>
'/ Performs a whois lookup on the domain provided.
'/ </summary>

'/ <param name="Domain">The domain to lookup.</param>
'/ <returns>Information returned by the domain whois server,
'/ which can then be string parsed to see if the domain is available or taken.</returns>

بوسیله این متد می توانید یک دومین را جستجو کند. نام دومین را با پارامتر Domain بدهید.

Public Sub Lookup(ByVal Domain As String)

نتیجه جستجو در این متغییر نگهداری می شود.

Dim result As String = ""
Dim parts() As String = New String() {}


' Knock off http and www if it's in the Domain

اگر ابتدای دومین با http:' شروع شده باشد آنرا حذف می کند چون هنگام جستجوی دومین باید نام دومین بدون http:// باشد

If Domain.StartsWith("http://") Then

Domain = Domain.Replace("http://","")

End If

اگر ابتدای دومین با www. شروع شده باشد آنرا حذف می کند چون هنگام جستجوی دومین باید نام دومین بدون www. باشد

If Domain.StartsWith("www.") Then
Domain = Domain.Substring(4,Domain.Length -4)
End If



If Domain.IndexOf(".tv") <> -1 Or Domain.IndexOf(".pro") <> -1 Or Domain.IndexOf(".name") <> -1 Then

' As result says - certain domain authorities like to keep their whois service private.

' There maybe extra tlds to add.

اگر دومین از نوع .tv .pro .name باشد به کاربر اخطار می دهد که این دومین ها به حساب کاربری نیاز دارند.

result = "'.pro','.name', and '.tv' domains require an account for a whois"

Else

حتما باید نام دومین . (نقطه) داشته باشد مانند nofa.ir

If Domain.IndexOf(".") <> -1 Then

' Find the whois server for the domain ourselves, if non set.

If Me.whoisServer = "" Then

اگر آدرس سرور whois را نداده باشید سیستم آدرس سرور را قرار می دهد

Me.whoisServer = Me.getWhoisServer(Domain)

End If
End If



' Connect to the whois server

در این قسمت از طریق پورت 43 به سرور whois متصل می شود.

43 پورتی است که سرور های whois از آن استفاده می کند.

Dim tcpClient As TcpClient = New TcpClient()
tcpClient.Connect(Me.whoisServer,43)
Dim networkStream As NetworkStream = tcpClient.GetStream()

' Send the domain name to the whois server

در این قسمت نام دومین به سرور whois ارسال می گردد.

Dim buffer() As Byte = ASCIIEncoding.ASCII.GetBytes(Domain + "\r\n")
networkStream.Write(buffer,0,buffer.Length)

' Read back the results

در این قسمت جواب های سرور whois خوانده می شود. این جوابها به اندازه 8192 بایت بافر می شود.

buffer = = New Byte(8192) {}
Dim i As Integer = networkStream.Read(buffer,0,buffer.Length)
While i > 0
{

i = networkStream.Read(buffer,0,buffer.Length)
result += ASCIIEncoding.ASCII.GetString(buffer)

}

networkStream.Close()
tcpClient.Close()

End While
Else

result = "Please enter a valid domain name."

End If

End Sub



' Fire event with the info of the lookup

در این قسمت رخداد پایان رسیدن جستجو صدا می شود.

If Not Me.LookupComplete Is Nothing Then

Dim whoisEventArgs As WhoisEventArgs = New WhoisEventArgs(result,Me.whoisServer)

Me.LookupComplete(this,whoisEventArgs)

End If

End Class



'/ <summary>

'/ Gets the whois server for a domain using

'/ whois-servers.net.

'/ </summary>

'/ <param name="domainName">The domain name to retrieve the whois server for.</param>

'/ <returns>The whois server hostname.</returns>



در این متد اگر آدرس سرور whois داده نشده باشد .سیستم به صورت اتوماتیک بدنبال سرور whois می گردد و از آن استفاده می کند. اگر سروری پیدا نکند از سرور inetrnic استفاده می کند.

Private Function getWhoisServer(ByVal domainName As String) As String

Dim parts() As String = domainName.Split("."c)

Dim tld As String = parts(parts.Length -1)

Dim host As String = tld + ".whois-servers.net"



' .tk doesn't resolve, but it's whois server is public

If tld = "tk" Then

Return "whois.dot.tk"

End If



Try

Dim ipHostEnTry As IPHostEnTry = Dns.GetHostByName(host)



If ipHostEnTry.HostName = host Then

' No entry found, use internic as default

host = "whois.internic.net"

Else

host = ipHostEnTry.HostName

End If



Return host

Catch

host = "whois.internic.net"

Return host

End Try

End Function

End Namespace

IranVisual
سه شنبه 20 فروردین 1387, 12:16 عصر
خیلی ممنونم از همه بچه ها ولی من نتونستم ازش استفاده کنم خیلی کارم گیره اگه لطف کنین برام تکمیلش کنین بصورت پروژه بمن بدید از وقتی که گرفتم دارم باهاش کل کل میکنم آخر هم بهیچ نتیجه ای نرسیدم
من فقط میخوام بدونم که دامین توی اینترنت ثبت هستش یا نه فقط همین

raravaice
سه شنبه 20 فروردین 1387, 12:26 عصر
سلام

شما بگرد دنبال اصول اینکار.

در ابتدا پایگاه Whois دامین مورد نظرت رو پیدا کن و بعد با پورت 43 اون از طریق سوکت یه نشست با اون بزار و اطلاعات مربوط به دامین رو ازش بگیر.
مثلا برای دامین ir باید با پورت 43 دامین whois.nic.ir ارتباط بر قرار کنی

موفق باشید

IranVisual
سه شنبه 20 فروردین 1387, 13:33 عصر
ممنون من اطلاعات زیادی در این مورد ندارم اگه میشه یه نمونه مثال کامل بزنید

nazaninam
سه شنبه 20 فروردین 1387, 19:44 عصر
یعنی انقدر یک سرچ کردن داخل این تالار سخته ؟
http://barnamenevis.org/forum/showthread.php?t=68498&highlight=whois
http://barnamenevis.org/forum/showthread.php?t=39873&highlight=whois
http://barnamenevis.org/forum/showthread.php?t=90668&highlight=whois
http://barnamenevis.org/forum/showthread.php?t=59941&highlight=whois
http://how2learnasp.net/article.aspx?code=2ae31c71-6b23-4465-9be4-64782329f517

IranVisual
سه شنبه 20 فروردین 1387, 22:48 عصر
من پروژه شما رو (nazaninam) که با vb گزاشته بودید دانلود کردم موقع کانوراتور کردن این پیغامها رو میده

Solution: whois
Filename Status Errors Warnings
whois.sln No Conversion Required 0 0
Conversion Issues - whois.sln:
The solution file does not require conversion.

1 file Converted: 0
Not converted 1 0 0

Project: whois.vbproj
Filename Status Errors Warnings
whois.vbproj:(Error List) 1 0
Conversion Issues - whois.vbproj:(Error List):
ERROR: The following files were not migrated because they were not found in the project file or the associated 'BuildAction' is set to 'None'. You may need to exclude these files from the project after the conversion process in order to compile your web site: File List == App_Code_Old\global.asax.vb,App_Code_Old\assemblyi nfo.vb.

whois.vbproj:(Warning List) 0 1
Conversion Issues - whois.vbproj:(Warning List):
Warning: This web project was converted as a file-based web application. If your site contained any IIS meta-information, e.g. sub-folders marked as virtual directories, it is recommended that you close this web site and re-open it using the Open Web Site command and selecting the Local IIS tab.

whois.vbproj Converted 0 0
Conversion Issues - whois.vbproj:
Converted. There may be some unresolved conversion issues you will need to manually fix. For more information, please refer to http://go.microsoft.com/fwlink/?LinkId=46995 or search for the help topic "Converting from Visual Studio .NET 2002 or 2003".

3 files Converted: 1
Not converted 2 1 1


Conversion Settings
Solution File: C:\Documents and Settings\ebrahim\My Documents\Visual Studio 2005\Projects\whois\whois.sln
Log Number: 2



البته فرم اجرا میشه ولی هر چی دامین رو وارد کنی مینویسه دامین مورد نظر ثبت نمیباشد
البته من توی کامپیوتر آزمایش کردم

Mojtaba_ss
سه شنبه 20 فروردین 1387, 23:55 عصر
دوست عزیز در آدرسی که بهتون دادم یه سمپل آماده هم وجود داره که میتونید ازش استفاده کنید.

IranVisual
چهارشنبه 21 فروردین 1387, 08:45 صبح
تمامی پروژه هایی که گرفتم هیچ کدوم کار نمیکنه فقط پروژه Windows Application خوب کار میکنه که نتونستم تو ASP.net ازش استفاده کنم

IranVisual
چهارشنبه 21 فروردین 1387, 09:18 صبح
بالاخره تونستم با تبدیل کد یکی از بچه ها درستش کنم از همه ممنونم

nazaninam
چهارشنبه 21 فروردین 1387, 21:13 عصر
پیشنهاد دوستانه و تجربه شخصی بنده این هست که اینقدر دنبال Convert کردن Vb به C# یا بالعکس نباشید ، سعی کنید با هر دو زبان کار کنید تا جایی که کد نویسی با هر دو برایتان یکسان باشد .
موفق باشید