SEO:适用于 .SE 域的 whois 服务器?

发布于 2024-10-07 03:03:32 字数 1850 浏览 9 评论 0原文

我正在开发一个小型域名检查器,但无法让 .SE 工作:

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();
}

我尝试过 whois 服务器 whois.nic-se.se 和 whois.iis.se put 我不断收到:

# 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.

编辑:

我尝试更改转换为 UTF8,没有其他结果。

当我尝试使用 sysinternals 中的 whois 时,我得到了正确的结果,但不是我的代码,甚至没有使用 SE.whois-servers.net。

/尼尔斯

I'm developing a small domain checker and I can't get .SE to work:

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();
}

I've tried whois servers whois.nic-se.se and whois.iis.se put I keep getting:

# 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:

I've tried changing to UTF8 with no other result.

When I try using whois from sysinternals I get the correct result, but not with my code, not even using SE.whois-servers.net.

/Niels

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

So要识趣 2024-10-14 03:03:32

嗯,在我的 Mac 上执行 whois google.se 时,我得到以下信息:

# 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

所以这可能只是您的代码。也许您必须以非 ASCII 编码(例如 UTF8)进行请求?

Hmmm, when doing a whois google.se on my Mac I get the following:

# 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

So it's probably just your code. Maybe you have to do the request in a non-ASCII encoding, such as UTF8?

自我难过 2024-10-14 03:03:32

我终于解决了。

使用wireshark,我看到sysinternals中的whois没有添加“DOMAIN”部分:

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

(recordType.ToString ==“域”)。

所以当我删除它时,它起作用了!

I finally solved it.

Using wireshark, I saw that the whois from sysinternals doesn't add the "DOMAIN" part:

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

(recordType.ToString == "DOMAIN").

So when I removed that, it worked!

情深已缘浅 2024-10-14 03:03:32

不查看您的代码为什么不:

示例 @ http://balexandre.com/verifyDomain.aspx

这将给出你,对于par.se

IP Found:
- 193.13.249.142

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

如果你只是想要一个IP的RIPE信息,你也可以使用我的页面进行测试

http://balexandre.com/iplookup.aspx?ip={ip 至测试}


按钮事件

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));
}

域检查代码:

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;
    }
}

without looking to your code why not:

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

this will give you, for par.se

IP Found:
- 193.13.249.142

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

If you just want the RIPE information of an IP, you can also use my page for test

http://balexandre.com/iplookup.aspx?ip={ip to test}


Button event

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));
}

DomainCheck 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;
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文