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

ഈ ആധുനിക .NET ശകലം System.Net, System.Net.Http എന്നിവ ഉപയോഗിക്കുന്നു. ക്രമീകരിച്ച ക്ലയന്റ് നെറ്റ്‌വർക്ക് റൂട്ടിംഗ് കൈകാര്യം ചെയ്യുന്നു, Html Agility Pack തിരികെ ലഭിച്ച HTML സ്ട്രിംഗ് സ്വീകരിക്കുന്നു. ഓരോ പേജിനും അതിന്റെ പൂളുകൾ പുനർനിർമ്മിക്കുന്നതിനുപകരം തുടർച്ചയായ ജോലിക്കായി ശരിയായി ക്രമീകരിച്ച ക്ലയന്റ് സൂക്ഷിക്കുക.

ഈ പൊതു പേജ് ഉദാഹരണത്തിന്, HTTP പ്രോക്സി പട്ടികയിൽ നിന്നുള്ള പ്രാമാണീകരിക്കാത്ത സ്ഥാനാർത്ഥിക്ക് ഇടനിലക്കാരനെ മാറ്റാൻ കഴിയും. ലക്ഷ്യസ്ഥാനം വേർതിരിച്ച് മാറ്റുക. വെബ്‌സൈറ്റ് URL അതിന്റെ TLS ഐഡന്റിറ്റി നിലനിർത്തുന്നു. പ്രാമാണീകരിച്ച പ്രോക്സി ക്രെഡൻഷ്യലുകൾ WebProxy-യിൽ ഉള്ളവയാണ്; വെബ്‌സൈറ്റ് ക്രെഡൻഷ്യലുകളോ പ്രവർത്തനരഹിതമാക്കിയ പരിശോധനയോ അവയ്ക്ക് പകരമാകുന്നില്ല.

GetStringAsync വിജയകരമല്ലാത്ത HTTP സ്റ്റാറ്റസുകളെ പിശകുകളായി കണക്കാക്കുന്നു. പരാജയപ്പെട്ട ഡൗൺലോഡ് ശൂന്യമായ HtmlDocument ആക്കി മാറ്റരുത്. ആപ്ലിക്കേഷന് ഹെഡറുകൾ, സ്റ്റാറ്റസ് വിശദാംശങ്ങൾ അല്ലെങ്കിൽ പിശക് ബോഡി ആവശ്യമുണ്ടെങ്കിൽ, പ്രതികരണാധിഷ്ഠിത HTTP പ്രവർത്തനം ഉപയോഗിച്ച് പാഴ്‌സ് ചെയ്യുന്നതിന് മുമ്പ് അത് പരിശോധിക്കുക.

സ്ട്രിംഗ് രീതി അസംസ്കൃത ബൈറ്റുകളുടെ നിരുപാധികമായ അധിക UTF-8 പരിവർത്തനം ഒഴിവാക്കുന്നു. ബൈറ്റുകൾ ബോധപൂർവ്വം നേടുന്നുവെങ്കിൽ, പ്രതികരണത്തിന്റെയും ഡോക്യുമെന്റിന്റെയും എൻകോഡിംഗ് ആവശ്യകതകൾ ഡീകോഡിംഗിലേക്ക് കൈമാറുക.

LoadHtml പാഴ്‌സ് ചെയ്ത ഡോക്യുമെന്റ് സൃഷ്ടിക്കുന്നു; അത് സ്ക്രിപ്റ്റുകൾ പ്രവർത്തിപ്പിക്കുന്നില്ല, സ്റ്റൈലുകൾ ലോഡ് ചെയ്യുന്നില്ല, ലിങ്കുകൾ പിന്തുടരുന്നില്ല. തുടർന്നുള്ള ആപേക്ഷിക ലിങ്കുകൾ പ്രതികരണത്തിന്റെ സ്ഥാനത്തിന് ആപേക്ഷികമായി പരിഹരിക്കുക, ബ്രൗസർ റെൻഡർ ചെയ്യുന്ന ഘടകങ്ങൾ ഡൗൺലോഡ് ചെയ്ത ഉറവിടത്തിൽ ഇല്ലായിരിക്കാം എന്ന് ഓർക്കുക. അഭ്യർത്ഥനകൾ ഒരേ ക്രമീകരിച്ച HTTP ക്ലയന്റ് പങ്കിട്ടാലും ഓരോ പ്രതികരണവും സ്വന്തം ഡോക്യുമെന്റ് സൃഷ്ടിക്കണം.

അനുബന്ധ ലേഖനങ്ങൾ