如何与代理一起使用?

时间:2019-08-31 15:55:17

标签: c# anglesharp

我是Anglesharp的新手。我在文档中尝试了代理更改,但没有成功。 现在,我正在使用它,它可以与webclient一起很好地工作,但是不能与AngleSharp一起工作。

我正在尝试的代码是;

            var handler = new HttpClientHandler()
            {
                Proxy = new WebProxy(String.Format("{0}:{1}", "myProxy", "myPort"), false),
                PreAuthenticate = true,
                UseDefaultCredentials = false,
            };
            var config = Configuration.Default.WithJs().WithCookies().WithDefaultLoader().With(handler);

            //Create a new context for evaluating webpages with the given config
            var context = BrowsingContext.New(config);     
            var document = await context.OpenAsync("https://api.ipify.org?format=json");
            Console.WriteLine(document.DocumentElement.OuterHtml);

我没有收到任何错误,代理无法正常运行。我正在获取原始IP,而不是代理。 但是使用WebClient可以很好地工作。

1 个答案:

答案 0 :(得分:1)

您只需在AngleSharp的配置中添加一些内容(operator==,即handler实例),而AngleSharp中的任何内容都不会使用该内容。

首先,AngleSharp的内部HTTP客户端仅是默认客户端。出于兼容性原因,如果使用HttpClientHandler,则AngleSharp不能附带HttpClient。这还允许您设置代理。

现在,如果您要使用代码,建议您使用AngleSharp.Io(https://www.nuget.org/packages/AngleSharp.Iohttps://github.com/AngleSharp/AngleSharp.Io)。非常简单明了:

HttpWebRequest

仅添加了var handler = new HttpClientHandler { Proxy = new WebProxy(String.Format("{0}:{1}", "myProxy", "myPort"), false), PreAuthenticate = true, UseDefaultCredentials = false, }; var config = Configuration.Default .WithRequesters(handler) .WithDefaultLoader() .WithJs() .WithTemporaryCookies() .WithDefaultLoader(); var context = BrowsingContext.New(config); var document = await context.OpenAsync("https://api.ipify.org?format=json"); Console.WriteLine(document.DocumentElement.OuterHtml) 。这将添加来自AngleSharp.Io的请求者。通过提供.WithRequesters(handler),我们可以配置handler

希望有帮助!