簡體   English   中英

如何與代理一起使用?

[英]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.Iohttps://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

希望有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM