0

当我打开 Firefox 并输入“209.191.122.70”作为 URL 并按 Enter 时,它立即解析为“http://failsafe.fp.yahoo.com/404.html”

我的目标是以编程方式检索相同的信息。

当我使用下面的代码时,要么我得到一个 SocketException,要么我得到一个看起来不像我使用 firefox 时得到的 url 的 HostName。

    static void Main(string[] args)
    {
        IPHostEntry entry = Dns.GetHostByAddress("209.191.122.70");
        Console.WriteLine(entry.HostName); //ir1.fp.vip.mud.yahoo.com
        Console.Read();
    }

System.Net.Sockets.SocketException我尝试其他一些地址时得到的信息显示“请求的名称有效,但未找到请求类型的数据”,堆栈跟踪如下所示:

 at System.Net.Dns.InternalGetHostByAddress(IPAddress address, Boolean includeIPv6, Boolean throwOnFailure)
 at System.Net.Dns.GetHostByAddress(String address)
 at reverseIP.Program.Main(String[] args) in C:\test\Program.cs:line 15

一些给我例外的地址在 Firefox 中解决得很好。

除了将 Firefox 作为一个单独的进程启动并使用 Windows API 检索地址栏中的文本之外,我如何检索我正在寻找的信息?

4

2 回答 2

0

IP 地址的反向查找不是Firefox 在这里所做的。

Firefox 只是简单地向该 IP 发出 http get。

在伪代码中(因为我目前无法访问编译器)相当于 Firefox 正在做的事情是

try {
 var request = WebClient.CreateRequest("http://209.191.122.70");
 request.GetResponse();
}
catch(WebException ex) {
 // handle 404 exception here.. You can access the response URL too.
}
于 2013-01-03T21:57:33.633 回答
0

System.Windows.Forms.WebBrowser 类帮助我获得了我正在寻找的信息。

于 2013-01-22T11:58:36.263 回答