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);

Bu müasir .NET fraqmenti System.Net və System.Net.Http-dən istifadə edir. Konfiqurasiya edilmiş klient şəbəkə marşrutlaşdırmasını idarə edir, Html Agility Pack isə qaytarılan HTML sətrini alır. Hər səhifə üçün hovuzlarını yenidən qurmaq əvəzinə davam edən iş üçün düzgün konfiqurasiya edilmiş klienti saxlayın.

Bu ictimai səhifə nümunəsi üçün HTTP proxy siyahısından autentifikasiyasız namizəd vasitəçini əvəz edə bilər. Hədəfi ayrıca əvəz edin. Veb saytın URL-i TLS kimliyini qoruyur. Autentifikasiya edilmiş proxy etimadnamələri WebProxy-də yerləşir; nə veb sayt etimadnamələri, nə də deaktiv edilmiş yoxlama onları əvəz etmir.

GetStringAsync uğursuz HTTP statuslarını xəta kimi qəbul edir. Uğursuz yükləməni boş HtmlDocument-ə çevirməyin. Tətbiq başlıqlara, status təfərrüatına və ya xəta gövdəsinə ehtiyac duyursa, cavab yönümlü HTTP əməliyyatından istifadə edin və təhlildən əvvəl onu yoxlayın.

Sətir metodu xam baytların şərtsiz əlavə UTF-8 çevrilməsindən çəkinir. Baytları qəsdən əldə edirsinizsə, cavab və sənəd kodlaşdırma tələblərini dekodlaşdırmaya daşıyın.

LoadHtml təhlil edilmiş sənəd yaradır; o, skriptləri icra etmir, üslubları yükləmir və keçidləri izləmir. Sonrakı nisbi keçidləri cavabın yerinə görə həll edin və yadda saxlayın ki, brauzerin göstərdiyi elementlər yüklənmiş mənbədə olmaya bilər. Sorğular eyni konfiqurasiya edilmiş HTTP klientini paylaşsa da, hər cavab öz sənədini yaratmalıdır.

Əlaqəli məqalələr