Skip to main content
 首页 » 编程设计

c#之使用具有已知 IP 端点的 System.Net.WebRequest

2024年02月01日28itcoder

我收集了大量已解析为 IP 地址的 DNS 名称。对于这个集合,我需要从他们那里下载 HTML。这是一个非常大的列表,我需要尽可能高效地完成它。

我正在使用 System.Net.HttpWebRequest 从每个域下载 HTML。 HttpWebRequest 正在重复 DNS 查找,这会增加连接时间。我已经运行测试以查看端口 80 上的那些 IP 的套接字是否会连接得更快,而且确实如此。

所以我想使用已知 IP 地址的 HttpWebRequest,但我不知道如何操作。所有 WebRequest 工厂方法都需要一个 URL。

现在我想我可以做这样的事情(其中 1.2.3.4 是 IP)

var req = WebRequest.Create("http://1.2.3.4/"); 
req.Headers.Add(....); <-- add something here 

我需要以某种方式将目标域添加到 HTTP header ,但我不确定该怎么做。

请您参考如下方法:

非常简单:

var ip = "93.184.216.119"; 
var host = "example.com"; 
var ipUri = new UriBuilder(Uri.UriSchemeHttp, ip).Uri; 
 
var request = WebRequest.CreateHttp(ipUri); 
request.Host = host; 
 
using (var response = request.GetResponse()) 
{ 
    // do something with response 
}