using var handler = new HttpClientHandler
{
    UseProxy = true,
    Proxy = new WebProxy("http://proxy.example:8080")
};
using var client = new HttpClient(handler);

string html = await client.GetStringAsync(
    "https://www.example.com/catalog");
var document = new HtmlAgilityPack.HtmlDocument();
document.LoadHtml(html);

Ĉi tiu moderna .NET-fragmento uzas System.Net kaj System.Net.Http. La konfigurita kliento regas retan enkursigon, kaj Html Agility Pack ricevas la redonitan HTML-ĉenon. Konservu taŭge konfiguritan klienton por daŭra laboro anstataŭ rekonstrui ĝiajn naĝejojn por ĉiu paĝo.

Por ĉi tiu ekzemplo de publika paĝo, neaŭtentigita kandidato el la HTTP-prokurila listo povas anstataŭigi la peranton. Anstataŭigu la celon aparte. La reteja URL konservas sian TLS-identecon. Aŭtentigitaj prokurilaj akreditaĵoj apartenas al WebProxy; nek retejaj akreditaĵoj nek malŝaltita kontrolado anstataŭigas ilin.

GetStringAsync traktas nesukcesajn HTTP-statustatojn kiel erarojn. Ne transformu malsukcesan elŝuton en malplenan HtmlDocument. Se la aplikaĵo bezonas kapojn, statusdetalojn aŭ eraran korpon, uzu respondorientitan HTTP-operacion kaj ekzamenu ĝin antaŭ analizado.

La ĉena metodo evitas senkondiĉan plian UTF-8-konvertadon de krudaj bajtoj. Se vi intence elprenas bajtojn, portu la postulojn pri responda kaj dokumenta kodigo en la malkodadon.

LoadHtml produktas analizitan dokumenton; ĝi ne plenumas skriptojn, ne ŝargas stilojn nek sekvas ligilojn. Solvu postajn relativajn ligilojn rilate al la loko de la respondo, kaj memoru, ke elementoj bildigitaj de la retumilo povas manki en la elŝutita fonto. Ĉiu respondo devus produkti sian propran dokumenton eĉ kiam petoj dividas la saman konfiguritan HTTP-klienton.

Rilataj artikoloj