Recupera l'HTML tramite un proxy prima di analizzarlo con Html Agility Pack
Combina un HttpClient configurato con un proxy e Html Agility Pack mantenendo gli errori di rete separati dall'analisi 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);Questo frammento .NET moderno usa System.Net e System.Net.Http. Il client configurato gestisce l'instradamento di rete e Html Agility Pack riceve la stringa HTML restituita. Mantieni un client configurato in modo appropriato per il lavoro continuativo invece di ricostruire i suoi pool per ogni pagina.
Per questo esempio di pagina pubblica, un candidato non autenticato dal elenco di proxy HTTP può sostituire l'intermediario. Sostituisci la destinazione separatamente. L'URL del sito conserva la sua identità TLS. Le credenziali del proxy autenticate appartengono a WebProxy; né le credenziali del sito né la verifica disabilitata le sostituiscono.
GetStringAsync tratta gli stati HTTP non riusciti come errori. Non convertire un download fallito in un HtmlDocument vuoto. Se l'applicazione ha bisogno di intestazioni, dettagli sullo stato o di un corpo di errore, usa un'operazione HTTP orientata alla risposta e ispezionala prima dell'analisi.
Il metodo string evita una conversione UTF-8 aggiuntiva incondizionata dei byte grezzi. Se recuperi i byte deliberatamente, trasferisci i requisiti di codifica della risposta e del documento nella decodifica.
LoadHtml produce un documento analizzato; non esegue script, non carica stili né segue collegamenti. Risolvi i collegamenti relativi successivi rispetto alla posizione della risposta e ricorda che gli elementi renderizzati dal browser possono mancare nel sorgente scaricato. Ogni risposta dovrebbe produrre il proprio documento anche quando le richieste condividono lo stesso client HTTP configurato.