הגדרת ProxyServer של chromedp על ה-ExecAllocator
צרו את הקשר של הדפדפן מה-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. הקשר שנוצר מהורה אחר יכול ליצור דפדפן אחר בלי האפשרות הזו.
כתובת ה-proxy מזהה מאזין HTTP; מועמדים ציבוריים זמינים ברשימת ה-proxy של HTTP; העמוד נשאר יעד HTTPS. ProxyServer ממופה לדגל --proxy-server של Chromium, ולא לתצורת ה-proxy של net/http ב-Go.
Chromium אינו מקבל שם משתמש וסיסמה המוטמעים בכתובת proxy ידנית. נקודת קצה מאומתת זקוקה לאימות דפדפן נתמך או לסידור מתווך; הוספת user:password לדגל הזה אינה שקולה לאימות כתובת בלקוח HTTP. זרימת אירועי האימות של CDP ב-Chrome היא אחת הדרכים הנתמכות להתמודד עם אתגר ה-proxy המיועד.
השאר את ה-allocator חי עד שהעבודה בדפדפן תסתיים. ביטולו הוא גם חלק מניקוי התהליך, בעוד ביטול הלשונית מגביל את הקשר הדפדפן המשויך.