• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

domain check در ASP.NET

aref1364

Registered User
تاریخ عضویت
23 جولای 2005
نوشته‌ها
395
لایک‌ها
1
از کجا برنامه ای برای چک کردن وجود دومین در asp.net با vb پیدا کنم؟
 

Y2K

Registered User
تاریخ عضویت
20 فوریه 2006
نوشته‌ها
656
لایک‌ها
1
محل سکونت
Location

aref1364

Registered User
تاریخ عضویت
23 جولای 2005
نوشته‌ها
395
لایک‌ها
1

mehdivk

Registered User
تاریخ عضویت
5 آپریل 2006
نوشته‌ها
319
لایک‌ها
0
میشه بگی whois server ت چیه . همه کدها یک مدل هستند . همه از یک روش برای whois گرفتن استفاده می کنند .
 

aref1364

Registered User
تاریخ عضویت
23 جولای 2005
نوشته‌ها
395
لایک‌ها
1
یه سر اینجا بزن ، ضمن اینکه میگی از چه سروری استفاده میکنی !

http://www.codeproject.com/info/sea...1=Search&author=&sd=15+Nov+1999&ed=9+Jan+2007


آقا اینم سروری که در کد جدیدتون نوشته: http://www.directnic.com/whois/index.php
اما اینو هم که می زنم مینیویسه برای این دومین اطلاعات در دسترس نیست اما از توی خود سایت درست نشون می ده!!!
 

aref1364

Registered User
تاریخ عضویت
23 جولای 2005
نوشته‌ها
395
لایک‌ها
1
یه سر اینجا بزن ، ضمن اینکه میگی از چه سروری استفاده میکنی !

http://www.codeproject.com/info/sea...1=Search&author=&sd=15+Nov+1999&ed=9+Jan+2007

PHP:
Imports System.Net.Sockets
Imports System.Text
Imports System.IO
Imports System.Collections
Imports System.Net
Imports System.Text.RegularExpressions

Partial Class whois
    Inherits System.Web.UI.Page
    'Protected WithEvents Label1 As System.Web.UI.WebControls.Label
    'Protected WithEvents btnQuery As System.Web.UI.WebControls.Button
    'Protected WithEvents txtResult As System.Web.UI.WebControls.Label
    'Protected WithEvents Label2 As System.Web.UI.WebControls.Label
    'Protected WithEvents txtDomain As System.Web.UI.WebControls.TextBox


    Private Sub Page_Load(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles MyBase.Load
        ' Adds the java script code for clearing  the existing text
        ' from the text box when user wants to
        ' enter a new domain name
        txtDomain.Attributes.Add("onclick", "this.value='';")
    End Sub

    Private Sub btnQuery_Click(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles btnQuery.Click
        ' Stores the bufData extracted from the webclient 
        Dim firstLevelbufData As String
        Try
            ' similarly we can select any server address for bufData mining
            Dim strURL As String = _
              "http://www.directnic.com/whois/index.php?query=" _
              + txtDomain.Text
            Dim web As New WebClient()
            ' byte array to store the extracted bufData by webclient
            Dim bufData As Byte()
            bufData = web.DownloadData(strURL)
            ' got the bufData now convert it into string form
            firstLevelbufData = Encoding.Default.GetString(bufData)
            ' this exception will be fired when the host name
            ' is not resolved or any other connection problem
        Catch ex As System.Net.WebException
            txtResult.Text = ex.Message()
            Exit Sub
        End Try
        Try
            ' first and last are the regular expression string
            ' for extraction bufData witnin two tags
            ' you can change according to your requirement
            Dim first, last As String
            ' chr(34) is used for (") symbol
            first = "<p class=  " + Chr(34) + "text12" + Chr(34) + ">"
            last = "</p>"
            Dim RE As New Regex(first + _
              "(?<MYDATA>.*?(?=" + last + "))", _
              RegexOptions.IgnoreCase Or RegexOptions.Singleline)
            ' try to extract the bufData  within the first and last tag
            Dim m As Match = RE.Match(firstLevelbufData)
            ' got the result
            txtResult.Text = m.Groups("MYDATA").Value + ""
            ' check if no information abour that domain is available
            If txtResult.Text.Length < 10 Then _
              txtResult.Text = _
                "Information about this domain is not available !!"
        Catch e3 As Exception
            txtResult.Text = "Sorry the whois information" & _
                                 " is currently not available !!"
        End Try
    End Sub
End Class
 

Y2K

Registered User
تاریخ عضویت
20 فوریه 2006
نوشته‌ها
656
لایک‌ها
1
محل سکونت
Location
از مقاله زیر استفاده کن ببین چی میشه
فقط سرور رو باید درست بنویسی



اگر به سایتهای ثبت دامنه مانند www.Register.com سر زده باشید، دیده اید که این سایتها امکاناتی برای جستجوی نام دامنه در اختیار شما می گذارند که به شما وجود یا عدم وجود آن نام را اطلاع می دهند و اطلاعاتی نیز درباره فرد یا سازمان صاحب نام می دهد. در این مقاله نحوه ی انجام این کار را با ASP.NET شرح می دهیم.

برای انجام عمل جستجو ابتدا باید یک ارتباط با سرورهایی که بانکهای اطلاعاتی آنها این مشخصات را دارند ارتباط برقرار کرد و با یک Query، اطلاعات مورد نظر را درخواست نمود. این ارتباط از نوع TCP و از طریق پورت 43 انجام می گیرد. لیست کاملی از این سرورها را اینجا می توانید ببینید.


مشخص کردن فضا نامها
ابتدا فضا نامهای مورد نیاز را مشخص می کنیم:
کد:
Using System.Net.Sockets;
Using System.Text;
Using System.IO
Using System.Text.RegularExpressions;

با استفاده از TcpClient در NetFramework. می توانیم این ارتباط را با سرور مورد نظر برقرار نماییم. برای استفاده از این کلاس باید فضانام System.Net.Sockets را وارد کنیم. از دو فضانام دیگر نیز برای فرمت ورودی و خروجی خود استفاده می کنیم.


ایجاد و ارسال Query
ابتدا متغیرهای مورد نیاز را تعریف می کنیم:


کد:
string StrSvr,StrDomain, Resp;
TcpClient TcpClt;
byte[] ArrDomain;
Stream TcpStr;
StreamReader TcpStrRdr;


حال باید رشته ای را که می خواهیم به عنوان Query به سرور ارسال نماییم، ایجاد کنیم. برای این کار باید نام درخواستی کاربر را همراه پسوند مورد نظر(Com ،Org،...) را به سرور ارسال نماییم. توجه داشته باشید که هر کدام از سرورهای موجود در لیست فوق الذکر برای جستجوی پسوند خاصی می باشد. برای مثال whois.internic.com تنها برای دامنه های net. و com. و edu. می باشد و اگر دامنه ای با پسوند Info. را با این سرور جستجو نمایید، جواب مطلوب را نخواهید گرفت.

بنابراین ابتدا باید پسوند مورد نظر کاربر و سپس سرور مربوطه را مشخص نماییم . در اینجا برای انتخاب پسوند از DropDownList استفاده کرده ام:




کد:
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";
}



همانطور که می بینید، رشته ای که برای جستجو ارسال می شود به "r\n\" ختم می شود. اگر این رشته را در انتهای نام دامنه قرار ندهید، سرور نمی تواند جواب مطلوب را برگرداند.


اتصال به سرور
حال یک ارتباط باید با سرور مورد نظر برقرار نماییم. کلاس TcpClient، متدهایی برای اتصال، دریافت و ارسال اطلاعات دارد. به دو صورت می توانیم با یک سرور ارتباط برقرار کنیم:

1 – ایجاد یک نمونه از کلاس TcpClient بدون هیچ پارامتری و سپس استفاده از متد Connect:


کد:
TcpClient TcpClt = new TcpClient();
TcpClt.Connect(StrSvr,43);

2 – ایجاد یک نمونه از کلاس TcpClient با پارامترهای آدرس سرور و پورت مقصد که می خواهید با آن ارتباط برقرار کنید. این Constructor ارتباط را به صورت اتوماتیک ایجاد می کند:


کد:
TcpClient objTCPC = new TcpClient(StrSvr, 43);


پس از آن با متد GetBytes کلاس Encoding (فضا نام System.Text) رشته StrDomain را به یک آرایه از نوع بایت می نویسیم.


کد:
ArrDomain = Encoding.ASCII.GetBytes(strDomain);

با استفاده از متد GetStream کلاس TcpClient ، یک Stream ایجاد می کنیم و از طریق آن به ارسال و دریافت اطلاعات می پردازیم:

کد:
TcpStr = TcpClt.GetStream();


با استفاده از این Stream می توانیم با متد Write یک آرایه از Byte را در Stream جاری نوشت :

کد:
TcpStr.Write (ArrDomain,0,StrDomain.Length);


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

کد:
TcpStrRdr = new StreamReader(TcpClt.GetStream(),Encoding.ASCII);

قدم بعد، استفاده از متد ReadToEnd برای دریافت جواب سرور می باشد. این رشته شامل کاراکترهای خط جدید "n\" می باشد که باید با "<br>" جایگزین شود. برای این کار از متد Replace کلاس RegEx استفاده می کنیم ، سپس برای راحتی جستجو این رشته را به حروف کوچک تبدیل می کنیم :


کد:
Resp = Regex.Replace(TcpStrRdr.ReadToEnd(),"\n","<br>");
Resp = Resp.ToLower();

اگر در این رشته، زیر رشته هایی مانند "no match" يا "not found" یا "no entries found" وجود داشته باشد، نام دامنه مورد نظر آزاد می باشد. در غیر اینصورت آن دامنه ثبت شده است. حال با استفاده از این مساله، نتیجه را به کاربر اعلام می کنیم. برای جستجوی این زیر رشته ها از متد IsMatch کلاس RegEx استفاده می کنیم. اگر در این متد زیر رشته مورد نظر در رشته موجود باشد True و در غیر اینصورت False برگشت داده می شود.

کد:
if (Regex.IsMatch(Resp,"no match") || Regex.IsMatch(Resp,"not found") || Regex.IsMatch(Resp,"no entries found"))
{
    SearchRes = " دامنه مورد نظر موجود مي باشد ";
    PnlOrder.Visible = true;
    PnlOrderOk.Visible = false;
}
else
{
    SearchRes = " دامنه مورد نظر موجود نمي باشد ";
    PnlOrder.Visible = false;
    PnlOrderOk.Visible = false; 
}

در انتها نیز ارتباط را می بندیم.


TcpClt.Close();

منبع: ایران ای اس پی مرحوم
نویسنده: احسان صادقی
 

aref1364

Registered User
تاریخ عضویت
23 جولای 2005
نوشته‌ها
395
لایک‌ها
1
آقا دمت گرم بالاخره این کار کرد اما ایندفعه همش رو NOT AVAILABLE نشون می ده!!!!!!!!!!!!!!!!!!!.
یه دیگه: سوال از کجا می تونم لیست extension ها رو که به سرورهای مختلف وصل هستند رو دربیارم. مثلا برای .gov و.ca و ... ؟

اینم کد من:

کد:
Imports System.Net.Sockets
Imports System.Text
Imports System.IO
Imports System.Text.RegularExpressions

Partial Class whois_index
    Inherits System.Web.UI.Page

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

        'Declaring variables
        Dim StrSvr, StrDomain, Resp As String
        Dim ArrDomain() As Byte
        Dim TcpStr As Stream

        'Getting the extension
        If (exts.SelectedItem.Value = ".com" Or exts.SelectedItem.Value = ".net" Or exts.SelectedItem.Value = ".edu") Then
            StrSvr = "whois.internic.net"
            StrDomain = dn.Text.Trim() & exts.SelectedItem.Value & "\r\n"
        ElseIf (exts.SelectedItem.Value = ".org") Then
            StrSvr = "whois.publicinterestregistry.net"
            StrDomain = dn.Text.Trim() & exts.SelectedItem.Value & "\r\n"
        ElseIf (exts.SelectedItem.Value = ".biz") Then
            StrSvr = "whois.neulevel.biz"
            StrDomain = dn.Text.Trim() & exts.SelectedItem.Value & "\r\n"
        ElseIf (exts.SelectedItem.Value = ".info") Then
            StrSvr = "whois.afilias.info"
            StrDomain = dn.Text.Trim() & exts.SelectedItem.Value & "\r\n"
        ElseIf (exts.SelectedItem.Value = ".ir" Or exts.SelectedItem.Value = ".net.ir") Then
            StrSvr = "whois.nic.ir"
            StrDomain = dn.Text.Trim() & exts.SelectedItem.Value & "\r\n"
        End If

        'Connecting to the server via port 43
        Dim objtcpc As New TcpClient(StrSvr, 43)

        'Convert to byte
        ArrDomain = Encoding.ASCII.GetBytes(StrDomain)

        'Making a stream
        TcpStr = objtcpc.GetStream

        'Writing to the stream
        TcpStr.Write(ArrDomain, 0, StrDomain.Length)

        'Receiving the results of the query
        Dim TcpStrRdr As New StreamReader(objtcpc.GetStream(), Encoding.ASCII)
        Resp = Regex.Replace(TcpStrRdr.ReadToEnd(), "\n", "<br />")
        Resp = Resp.ToLower

        'Determining and displaying the final result
        Response.Write(Resp)
        'If (Regex.IsMatch(Resp, "no match") Or Regex.IsMatch(Resp, "not found") Or Regex.IsMatch(Resp, "no entries found")) Then
        '    result.ForeColor = Drawing.Color.Green
        '    result.Text = "!دامنه ی مورد نظر هنوز ثبت نشده است"
        'Else
        '    result.ForeColor = Drawing.Color.Red
        '    result.Text = "!دامنه ی مورد نظر قبلا ثبت شده است"
        'End If
        objtcpc.Close()
    End Sub
End Class
[CODE/]
 

aref1364

Registered User
تاریخ عضویت
23 جولای 2005
نوشته‌ها
395
لایک‌ها
1
آقا اینم سروری که در کد جدیدتون نوشته: http://www.directnic.com/whois/index.php
اما اینو هم که می زنم مینیویسه برای این دومین اطلاعات در دسترس نیست اما از توی خود سایت درست نشون می ده!!!

من یه چیزی پیدا کردم اونم این که پیغامی که از سرور دریافت می کنم رو مستقیما چاپ کردم دیدم نوشته:
% this is the irnic whois server.
برای سرور های دیگه هم پیزی شبیه این هست.
 
بالا