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

Detta moderna .NET-utdrag använder System.Net och System.Net.Http. Den konfigurerade klienten hanterar nätverksdirigering och Html Agility Pack tar emot den returnerade HTML-strängen. Behåll en lämpligt konfigurerad klient för löpande arbete i stället för att bygga om dess pooler för varje sida.

För det här exemplet med en offentlig sida kan en oautentiserad kandidat från HTTP-proxylistan ersätta mellanhanden. Byt ut målet separat. Webbplatsens URL behåller sin TLS-identitet. Autentiserade proxyuppgifter hör till på WebProxy; varken webbplatsens uppgifter eller inaktiverad verifiering ersätter dem.

GetStringAsync behandlar HTTP-statusar utan framgång som fel. Konvertera inte en misslyckad nedladdning till ett tomt HtmlDocument. Om programmet behöver huvuden, statusinformation eller en felkropp, använd en svarsorienterad HTTP-åtgärd och granska den före tolkning.

Strängmetoden undviker en ovillkorlig extra UTF-8-konvertering av råa byte. Om du medvetet hämtar byte, för över kraven på svars- och dokumentkodning till avkodningen.

LoadHtml producerar ett tolkat dokument; det kör inga skript, laddar inga stilar och följer inga länkar. Lös efterföljande relativa länkar mot svarets placering och kom ihåg att element som webbläsaren renderar kan saknas i den nedladdade källan. Varje svar bör producera sitt eget dokument även när förfrågningar delar samma konfigurerade HTTP-klient.

Relaterade artiklar