1

我搜索了这个问题,但没有找到任何我想要的东西,基本上我想使用带有 htmlagilitypack 的代理,我之前有代码可以做到但丢失了,这是我到目前为止的代码,它正在工作. 但是我在我正在制作的程序上让自己超时,需要启用代理。

    private void button1_Click(object sender, EventArgs e)
    {
        StringBuilder output = new StringBuilder();
        string raw = "http://www.google.com";
        HtmlWeb webGet = new HtmlWeb();
        webGet.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6";
        var document = webGet.Load(raw);


    }
4

3 回答 3

9

在我们的公司设置中,将其添加到 app.config 对我来说有效,无需任何代码更改

<system.net>
   <defaultProxy useDefaultCredentials="true" />
</system.net>
于 2016-12-01T00:08:27.450 回答
6

HtmlWeb.Load()使用使用代理的重载。有两个重载签名:

HtmlDocument Load(string url, string method, WebProxy proxy, NetworkCredential credentials);
HtmlDocument Load(string url, string proxyHost, int proxyPort, string userId, string password);

我没有在我的代码中使用代理的任何第一手经验,但我希望这能奏效。

于 2012-08-23T20:40:54.993 回答
5

HtmlAgilityPack 不会从 url 下载数据。使用类下载支持Proxy的页面。

例如

WebClient wc = new WebClient();
wc.Proxy = new WebProxy(host,port);
var page = wc.DownloadString(url);

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(page);

编辑

假设您11.22.33.44:5678 从文本文件中读取类似的内容,也可以将代理创建为

wc.Proxy = new WebProxy("11.22.33.44:5678");
于 2012-08-23T20:38:24.047 回答