我是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可以很好地工作。
答案 0 :(得分:1)
您只需在AngleSharp的配置中添加一些内容(operator==
,即handler
实例),而AngleSharp中的任何内容都不会使用该内容。
首先,AngleSharp的内部HTTP客户端仅是默认客户端。出于兼容性原因,如果使用HttpClientHandler
,则AngleSharp不能附带HttpClient
。这还允许您设置代理。
现在,如果您要使用代码,建议您使用AngleSharp.Io(https://www.nuget.org/packages/AngleSharp.Io或https://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
。
希望有帮助!