Obter HTML a través dun proxy antes de analizalo con Html Agility Pack
Combina un HttpClient configurado con proxy con Html Agility Pack e mantén os erros de rede separados da análise HTML.
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.