2010-12-12 7 views
2

Ich bin eine kleine Domain-Checker Entwicklung und ich kann nicht .SE an die Arbeit:SEO: Ein Whois-Server, der für .SE-Domains funktioniert?

public string Lookup(string domain, RecordType recordType, SeoToolsSettings.Tld tld) 
{ 
    TcpClient tcp = new TcpClient(); 
    tcp.Connect(tld.WhoIsServer, 43); 
    string strDomain = recordType.ToString() + " " + domain + "\r\n"; 
    byte[] bytDomain = Encoding.ASCII.GetBytes(strDomain.ToCharArray()); 
    Stream s = tcp.GetStream(); 
    s.Write(bytDomain, 0, strDomain.Length); 
    StreamReader sr = new StreamReader(tcp.GetStream(), Encoding.ASCII); 
    string strLine = ""; 
    StringBuilder builder = new StringBuilder(); 
    while (null != (strLine = sr.ReadLine())) 
    { 
     builder.AppendLine(strLine); 
    } 
    tcp.Close(); 
    if (tld.WhoIsDelayMs > 0) System.Threading.Thread.Sleep(tld.WhoIsDelayMs); 
    return builder.ToString(); 
} 

ich Whois-Server whois.nic-se.se versucht haben und whois.iis.se habe ich behalten bekommen:

# Copyright (c) 1997- .SE (The Internet Infrastructure Foundation). 
# All rights reserved. 

# The information obtained through searches, or otherwise, is protected 
# by the Swedish Copyright Act (1960:729) and international conventions. 
# It is also subject to database protection according to the Swedish 
# Copyright Act. 

# Any use of this material to target advertising or 
# similar activities is forbidden and will be prosecuted. 
# If any of the information below is transferred to a third 
# party, it must be done in its entirety. This server must 
# not be used as a backend for a search engine. 

# Result of search for registered domain names under 
# the .SE top level domain. 

# The data is in the UTF-8 character set and the result is 
# printed with eight bits. 

"domain google.se" not found. 

Edit:

ich habe mit keinem anderen Ergebnis zu UTF8 versucht zu ändern.

Wenn ich versuche, whois von sysinternals zu verwenden, bekomme ich das richtige Ergebnis, aber nicht mit meinem Code, nicht einmal mit SE.whois-servers.net.

/Niels

+0

Code funktionierts mit whois ser Vers für andere TLDs? –

+0

Ich bekomme richtige Ausgabe mit Sysinternals 'Whois google.se' auf Win7 –

+0

Ja, mein Code funktioniert gut für andere TLDs. Ich verwende whois.internic.net für .com-Domains und das funktioniert gut. –

Antwort

1

Ich habe es endlich gelöst.

wireshark benutzen, sah ich, dass die whois von Sysinternals nicht die "DOMAIN" Teil hinzufügen:

String strDomain = recordType.ToString() + "" + domain + "\ r \ n";

(recordType.ToString == "DOMAIN").

Also als ich das entfernte, funktionierte es!

1

Hmmm, wenn ein whois google.se auf meinem Mac zu tun bekomme ich folgendes:

# Copyright (c) 1997- .SE (The Internet Infrastructure Foundation). 
# All rights reserved. 

# The information obtained through searches, or otherwise, is protected 
# by the Swedish Copyright Act (1960:729) and international conventions. 
# It is also subject to database protection according to the Swedish 
# Copyright Act. 

# Any use of this material to target advertising or 
# similar activities is forbidden and will be prosecuted. 
# If any of the information below is transferred to a third 
# party, it must be done in its entirety. This server must 
# not be used as a backend for a search engine. 

# Result of search for registered domain names under 
# the .SE top level domain. 

# The data is in the UTF-8 character set and the result is 
# printed with eight bits. 

state:   active 
domain:   google.se 
holder:   googoo5855-00001 
admin-c:   - 
tech-c:   - 
billing-c:  - 
created:   2008-10-20 
modified:   2010-09-18 
expires:   2011-10-20 
transferred:  2009-03-06 
nserver:   ns1.google.com 
nserver:   ns2.google.com 
nserver:   ns3.google.com 
nserver:   ns4.google.com 
dnssec:   unsigned delegation 
status:   ok 
registrar:  MarkMonitor Inc 

es ist also wahrscheinlich nur Ihren Code. Vielleicht müssen Sie die Anfrage in einer Nicht-ASCII-Codierung wie UTF8 durchführen?

+0

Hmmm ... werde versuchen, eine andere Codierung zu verwenden ...Aber ist es möglich zu sehen, welchen Whois-Server du auf dem Mac verwendest? Beachten Sie, dass ich es für .com-Domains mit Whois-Server whois.internic.net funktioniert habe. –

+0

Das Wechseln zu UTF8 funktionierte nicht besser. –

1

ohne an Ihrem Code zu suchen, warum nicht:

Beispiel @http://balexandre.com/verifyDomain.aspx

dies wird Ihnen geben, für par.se

IP Found: 
- 193.13.249.142 

Host name: 
- parweb1.par.se 
Aliases: 
none 
IP address list: 
- 193.13.249.142 

Wenn Sie nur die RIPE Informationen einer IP, Sie kann auch

meine Seite für Test verwenden

http://balexandre.com/iplookup.aspx?ip= {ip zu testen}


Button-Ereignis

protected void btnCheck_Click(object sender, EventArgs e) 
{ 
    DomainCheck domain = new DomainCheck(); 
    string ip = domain.GetIPFromDomain(txtDomain.Text.Trim()); 

    litResponse.Text = String.Format(
          "IP{0} Found:<br/> - <strong>{1}</strong><br/>{2}", 
          ip.Contains(",") ? "'s" : "", 
          ip.Replace(",", "<br/> - "), domain.VerifyIP(ip)); 
} 

Domain Code:

public class DomainCheck 
{ 
    public DomainCheck() { } 

    public string VerifyIP(string ipAddress) 
    { 
     if (String.IsNullOrEmpty(ipAddress)) 
      return "IP Address is invalid!"; 

     string r = ""; 

     if (ipAddress.Contains(",")) 
     { 
      foreach (string ip in ipAddress.Split(',')) 
       r += String.Format("<br/><br/>#### <em>Checking {0}</em>{1}", ip, CheckIPAddress(ip)); 
     } 
     else 
      r += CheckIPAddress(ipAddress); 

     return r; 
    } 
    public string GetIPFromDomain(string hostname) 
    { 
     string r = ""; 
     IPAddress[] addresslist = Dns.GetHostAddresses(hostname); 

     foreach (IPAddress theaddress in addresslist) 
     { 
      r += String.Format("{0},", theaddress.ToString()); 
     } 
     return String.IsNullOrEmpty(r) ? null : r.TrimEnd(','); 
    } 

    private string CheckIPAddress(string ipAddress) 
    { 
     string r = ""; 
     try 
     { 
      IPAddress hostIPAddress = IPAddress.Parse(ipAddress); 
      IPHostEntry hostInfo = Dns.GetHostByAddress(hostIPAddress); 
      // Get the IP address list that resolves to the host names contained in 
      // the Alias property. 
      IPAddress[] address = hostInfo.AddressList; 
      // Get the alias names of the addresses in the IP address list. 
      String[] alias = hostInfo.Aliases; 
      r += String.Format(
        "<br/>Host name: <br/>- <strong>{0}</strong><br/>Aliases: ", 
        hostInfo.HostName); 

      if (alias.Length == 0) 
       r += "<br/><em>none</em>"; 
      else 
       for (int index = 0; index < alias.Length; index++) 
        r += String.Format("<br/>- <strong>{0}</strong>", alias[index]); 

      r += "<br/>IP address list: "; 
      if (address.Length == 0) 
       r += "<br/><em>none</em>"; 
      else 
       for (int index = 0; index < address.Length; index++) 
        r += String.Format("<br/>- <strong>{0}</strong>", address[index]); 
     } 
     catch (SocketException e) 
     { 
      r = String.Format(
        "SocketException caught!!!<br/>Source : {0}<br/>Message : {1}", 
        e.Source, e.Message); 
     } 
     catch (FormatException e) 
     { 
      r = String.Format(
        "FormatException caught!!!<br/>Source : {0}<br/>Message : {1}", 
        e.Source, e.Message); 
     } 
     catch (ArgumentNullException e) 
     { 
      r = String.Format(
        "ArgumentNullException caught!!!<br/>Source : {0}<br/>Message : {1}", 
        e.Source, e.Message); 
     } 
     catch (Exception e) 
     { 
      r = String.Format(
        "Exception caught!!!<br/>Source : {0}<br/>Message : {1}", 
        e.Source, e.Message); 
     } 
     return r; 
    } 
}