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

Este fragmento moderno de .NET usa System.Net e System.Net.Http. O cliente configurado encargase do encamiñamento de rede e Html Agility Pack recibe a cadea HTML devolta. Mantén un cliente configurado axeitadamente para o traballo continuo en lugar de reconstruír os seus conxuntos para cada páxina.

Para este exemplo de páxina pública, un candidato non autenticado da lista de proxies HTTP pode substituír o intermediario. Substitúe o destino por separado. O URL do sitio conserva a súa identidade TLS. As credenciais de proxy autenticadas pertencen a WebProxy; nin as credenciais do sitio nin a verificación desactivada as substitúen.

GetStringAsync trata os estados HTTP non exitosos como erros. Non convertas unha descarga fallida nun HtmlDocument baleiro. Se a aplicación necesita cabeceiras, detalles do estado ou un corpo de erro, usa unha operación HTTP orientada á resposta e inspecciona na antes de analizar.

O método de cadea evita unha conversión adicional incondicional a UTF-8 de bytes en bruto. Se obtés bytes deliberadamente, leva os requisitos de codificación da resposta e do documento á descodificación.

LoadHtml produce un documento analizado; non executa scripts, non carga estilos nin segue ligazóns. Resolve as ligazóns relativas posteriores respecto á localización da resposta e lembra que os elementos renderizados polo navegador poden faltar no código fonte descargado. Cada resposta debería producir o seu propio documento aínda que as solicitudes compartan o mesmo cliente HTTP configurado.

Artigos relacionados