我如何使用代理?

How can i use with proxy?

我是 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 效果很好。

您只需在 AngleSharp 的配置中添加一些东西(handler,即 HttpClientHandler 实例)- AngleSharp 中的任何东西都不会使用的东西。

首先,AngleSharp 的内部 HTTP 客户端只是一个默认客户端。出于兼容性原因,如果使用 HttpWebRequest,则 AngleSharp 无法使用 HttpClient。这也允许您设置代理。

现在,如果您想使用您的代码,我建议您使用 AngleSharp.Io (https://www.nuget.org/packages/AngleSharp.Io or https://github.com/AngleSharp/AngleSharp.Io)。它非常简单直接:

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)

仅添加了 .WithRequesters(handler)。这会添加来自 AngleSharp.Io 的请求者。通过提供 handler 我们可以配置 HttpClient.

希望对您有所帮助!