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 חי עד שהעבודה בדפדפן תסתיים. ביטולו הוא גם חלק מניקוי התהליך, בעוד ביטול הלשונית מגביל את הקשר הדפדפן המשויך.

מאמרים קשורים