9

在进行 HTTP 请求时是否有可能(如果是,如何)绕过 DNS?

我想通过 HTTP 请求直接访问前端,而不通过 NLB,但使用正确的主机标头。由于我有我的服务器的 IP,我只需要绕过 DNS。

我尝试使用 WebRequest,将 URL 替换为 IP 并设置 Host 标头,但此标头受到保护。

我怎样才能做到这一点 ?我需要自己创建 HTTP 请求吗?

注意:编辑主机文件不是一个选项

4

4 回答 4

7

在提出这个问题时,这不可能与 WebRequest 类有关。然而,在此问题引发的 Microsoft Connect 问题之后,Microsoft 将 Host 属性添加到 .Net 4.0 版中的 HttpWebRequest 类中。因此,如果您使用的是 .net 4.0 或更高版本,则可以使用此代码实现您想要的。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://127.0.0.1");
Request.Host = "www.example.com"

在 .Net 版本 4 之前,唯一真正的选择是打开一个 Socket 并自己执行 HTTP 请求,或者找到一个具有更多功能的第 3 方组件。

于 2008-11-27T11:54:35.633 回答
3

我设法做我需要将代理设置为远程服务器的 IP 地址的事情:

request.Proxy = new WebProxy(ip.ToString());

它并非在所有情况下都有效,但在我的情况下确实有效。

于 2008-12-11T13:49:41.743 回答
0

我自己也有类似的问题,但设法使用套接字解决了它(正如 Martin Brown 所提到的。这是我的答案:https ://stackoverflow.com/questions/359041/request-web-page-in-c-spoofing -主机#359299

于 2008-12-11T13:22:23.953 回答
0

你可以使用我的解决方案来解决这个问题,它发布在这里:

如何在 HttpWebRequest 中设置自定义“主机”标头?

这可以帮助您编辑主机标头,并避免使用代理解决方法。

于 2013-09-25T17:17:22.080 回答