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 modern .NET parçası System.Net ve System.Net.Http kullanır. Yapılandırılmış istemci ağ yönlendirmesini yönetir ve Html Agility Pack döndürülen HTML dizesini alır. Her sayfa için havuzlarını yeniden oluşturmak yerine sürekli iş için uygun şekilde yapılandırılmış bir istemci tutun.

Bu genel sayfa örneği için HTTP proxy listesinden kimliği doğrulanmamış bir aday aracıyı değiştirebilir. Hedefi ayrı olarak değiştirin. Web sitesi URL'si TLS kimliğini korur. Kimliği doğrulanmış proxy kimlik bilgileri WebProxy'ye aittir; ne web sitesi kimlik bilgileri ne de devre dışı bırakılmış doğrulama bunların yerini tutar.

GetStringAsync başarılı olmayan HTTP durumlarını hata olarak ele alır. Başarısız bir indirmeyi boş bir HtmlDocument'e dönüştürmeyin. Uygulama üst bilgilere, durum ayrıntılarına veya bir hata gövdesine ihtiyaç duyuyorsa, yanıt odaklı bir HTTP işlemi kullanın ve ayrıştırmadan önce inceleyin.

Dize yöntemi, ham baytların koşulsuz ek UTF-8 dönüşümünden kaçınır. Baytları bilerek alıyorsanız, yanıt ve belge kodlama gereksinimlerini çözme aşamasına taşıyın.

LoadHtml ayrıştırılmış bir belge üretir; betikleri çalıştırmaz, stil yüklemez ve bağlantıları izlemez. Sonraki göreli bağlantıları yanıtın konumuna göre çözün ve tarayıcının işlediği öğelerin indirilen kaynakta bulunmayabileceğini unutmayın. İstekler aynı yapılandırılmış HTTP istemcisini paylaşsa bile her yanıt kendi belgesini üretmelidir.

İlgili makaleler