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

Ce fragment .NET moderne utilise System.Net et System.Net.Http. Le client configuré gère le routage réseau, et Html Agility Pack reçoit la chaîne HTML renvoyée. Conservez un client correctement configuré pour le travail continu plutôt que de reconstruire ses pools à chaque page.

Pour cet exemple de page publique, un candidat non authentifié de la liste de proxys HTTP peut remplacer l'intermédiaire. Remplacez la destination séparément. L'URL du site conserve son identité TLS. Les identifiants de proxy authentifiés appartiennent à WebProxy ; ni les identifiants du site ni la vérification désactivée ne les remplacent.

GetStringAsync traite les statuts HTTP non réussis comme des erreurs. Ne transformez pas un téléchargement échoué en HtmlDocument vide. Si l'application a besoin d'en-têtes, de détails de statut ou d'un corps d'erreur, utilisez une opération HTTP orientée réponse et inspectez-la avant l'analyse.

La méthode de chaîne évite une conversion UTF-8 supplémentaire inconditionnelle des octets bruts. Si vous récupérez des octets délibérément, reportez les exigences d'encodage de la réponse et du document dans le décodage.

LoadHtml produit un document analysé ; il n'exécute pas de scripts, ne charge pas de styles et ne suit pas de liens. Résolvez les liens relatifs suivants par rapport à l'emplacement de la réponse, et rappelez-vous que les éléments rendus par le navigateur peuvent être absents de la source téléchargée. Chaque réponse devrait produire son propre document même lorsque les requêtes partagent le même client HTTP configuré.

Articles similaires