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 ที่กำหนดค่าเดียวกัน

บทความที่เกี่ยวข้อง