ตั้งค่า ProxyServer ของ chromedp บน ExecAllocator
สร้าง context ของเบราว์เซอร์จาก ExecAllocator ที่ถือ ProxyServer เพื่อให้โปรเซส Chromium ที่ต้องการได้รับแฟล็ก proxy ของตน
chromedp.ProxyServer เป็นตัวเลือกในการเปิดเบราว์เซอร์ ให้นำไปใช้กับ allocator ที่สร้างโปรเซส Chromium:
opts := append(chromedp.DefaultExecAllocatorOptions[:],
chromedp.ProxyServer("http://proxy.example:8080"),
)
allocCtx, cancelAllocator := chromedp.NewExecAllocator(
context.Background(), opts...,
)
defer cancelAllocator()
tabCtx, cancelTab := chromedp.NewContext(allocCtx)
defer cancelTab()
err := chromedp.Run(tabCtx,
chromedp.Navigate("https://www.example.com/"),
)
โค้ดนี้อยู่ในฟังก์ชันที่มีอยู่แล้วของแอปพลิเคชัน พร้อมการจัดการข้อผิดพลาดตามปกติสำหรับ err NewContext สืบทอด allocator จาก allocCtx context ที่สร้างจาก parent อื่นอาจสร้างเบราว์เซอร์อื่นโดยไม่มีตัวเลือกนั้น
URL ของ proxy ระบุตัวรับฟัง HTTP; ผู้สมัครสาธารณะมีอยู่ในรายการ HTTP proxy; หน้ายังคงเป็นปลายทาง HTTPS ProxyServer สแมปกับแฟล็ก --proxy-server ของ Chromium ไม่ใช่การกำหนดค่า proxy ของ net/http ใน Go
Chromium ไม่ยอมรับชื่อผู้ใช้และรหัสผ่านที่ฝังอยู่ใน URL ของ proxy แบบกำหนดเอง ปลายทางที่ต้องยืนยันตัวตนต้องใช้การยืนยันตัวตนของเบราว์เซอร์ที่รองรับหรือการจัดวางตัวกลาง การเพิ่ม user:password ในแฟล็กนี้ไม่เท่ากับการยืนยันตัวตนผ่าน URL ใน HTTP client ลำดับเหตุการณ์การยืนยันตัวตนของ CDP ใน Chrome เป็นหนึ่งในวิธีที่รองรับสำหรับจัดการความท้าทายของ proxy ที่ต้องการ
เก็บ allocator ให้มีชีวิตอยู่จนงานของเบราว์เซอร์เสร็จ การยกเลิกก็เป็นส่วนหนึ่งของการทำความสะอาดโปรเซส ขณะที่การยกเลิกแท็บกำหนดขอบเขต context ของเบราว์เซอร์ที่เกี่ยวข้อง