כיצד להגדיר פרוקסי עם אימות ב-Puppeteer (Node.js)
Updated:
Puppeteer שולט ב-Chrome וב-Chromium באמצעות DevTools Protocol (CDP), ומספק API מובנה של await page.authenticate({ username, password }) לאימות פרוקסי של HTTP 407. שילוב של --proxy-server=http://ip:port עם page.authenticate() מאפשר לרובוטי הסריקה שלכם ב-Node.js לנתב תעבורה דרך שרתי פרוקסי סטטיים של VinaProxy ללא תוספי דפדפן חיצוניים כלשהם.
--proxy-server=http://ip:port + page.authenticate({ username, password })- 1 IP40,000 ₫
- 5+ כתובות IP35,000 ₫
- 10+ כתובות IP25,000 ₫
- 20+ כתובות IP25,000 ₫
- 50+ כתובות IP25,000 ₫
- 100+ כתובות IP25,000 ₫
- 200+ כתובות IP25,000 ₫
- 500+ כתובות IP25,000 ₫
- 1000+ כתובות IP22,000 ₫
- 2000+ כתובות IP20,000 ₫
- 1 IP40,000 ₫
- 5+ כתובות IP35,000 ₫
- 10+ כתובות IP25,000 ₫
- 20+ כתובות IP25,000 ₫
- 50+ כתובות IP25,000 ₫
- 100+ כתובות IP25,000 ₫
- 200+ כתובות IP25,000 ₫
- 500+ כתובות IP25,000 ₫
- 1000+ כתובות IP22,000 ₫
- 2000+ כתובות IP20,000 ₫
הגדרת פרוקסי בשני שלבים ב-Puppeteer
לעולם אל תטמיעו user:pass@ בתוך ארגומנט ההפעלה --proxy-server. במקום זאת, העבירו את ה-host וה-port בעת ההפעלה ובצעו אימות על מופע ה-Page:
| שלב | קוד Puppeteer | מדוע זה חשוב |
|---|---|---|
| 1. הפעלת Chromium | puppeteer.launch({ args: ['--proxy-server=http://ip:port'] }) | מכוון את socket הרשת של Chromium אל פרוקסי ה-VinaProxy שלכם |
| 2. אימות ה-Page | await page.authenticate({ username, password }) | מספק פרטי התחברות ב-CDP עבור אתגרי אימות של HTTP 407 |
| 3. ניווט | await page.goto(url, { waitUntil: 'domcontentloaded' }) | טוען את כתובת ה-URL של היעד דרך המנהרה המאומתת |
רוטציה של מספר שרתי פרוקסי בין כרטיסיות באמצעות proxy-chain
- זכרו ש-
page.authenticate()מוגדר ברמת כרטיסייתPageבודדת – יש לקרוא לו בכל כרטיסייה חדשה שמוחזרת מ-browser.newPage() - כדי להשתמש בשרתי פרוקסי שונים בין הקשרי גלישה בסתר (incognito contexts) בתוך תהליך Chromium יחיד, עטפו כל כתובת URL בתבנית
http://user:pass@ip:portבאמצעות חבילת ה-npmproxy-chain (anonymizeProxy()), והעבירו אתproxyServerאלbrowser.createBrowserContext({ proxyServer }) - תואם ל-
puppeteer-extraול-puppeteer-extra-plugin-stealth
שלב אחר שלב
- 1
העבירו את --proxy-server=http://ip:port אל puppeteer.launch()
הפעילו את הדפדפן באמצעות
const browser = await puppeteer.launch({ args: ['--proxy-server=http://ip:port'] });. - 2
קראו ל-await page.authenticate() בדף החדש
פתחו כרטיסייה באמצעות
const page = await browser.newPage();וקראו ל-await page.authenticate({ username: 'USER', password: 'PASS' });. - 3
בדקו את כתובת ה-IP של היציאה
הריצו
await page.goto('https://vinaproxy.com/api/my-ip');ובדקו את ה-JSON שמוחזר. - 4
נקו את תהליכי הדפדפן
קראו ל-
await browser.close();בסיום המשימה.
שאלות נפוצות
מדוע Puppeteer מחזיר את השגיאה `ERR_NO_SUPPORTED_PROXIES`?
שגיאה זו מתרחשת אם כוללים user:pass@ בתוך --proxy-server=http://user:pass@ip:port. השאירו את --proxy-server=http://ip:port נקי והעבירו פרטי התחברות דרך await page.authenticate({ username, password }).
מדוע כרטיסייה שנייה שנפתחה עם `browser.newPage()` נכשלה עם שגיאת HTTP 407?
הפונקציה page.authenticate() חלה פר כרטיסייה. קראו ל-await secondPage.authenticate({ username, password }) לפני הניווט בכל כרטיסייה חדשה שנפתחת.
האם שרתי הפרוקסי של VinaProxy הם ללא הגבלת תעבורה עבור סריקה ב-headless Chrome?
כן. כל חבילות ה-Dedicated IPv4 וה-Static ISP כוללות רוחב פס חודשי ללא הגבלה.
שדרגו את צי ה-Puppeteer שלכם ב-Node.js עם כתובות IP סטטיות
שרתי פרוקסי מסוג Dedicated IPv4 ו-Static ISP מיידיים ללא הגבלת תעבורה ב-7 מדינות.
קנו פרוקסי ל-Puppeteer