כיצד להגדיר פרוקסי עם אימות ב-Selenium WebDriver
Updated:
דגלי ברירת המחדל של ChromeDriver כדוגמת --proxy-server=http://ip:port מתעלמים מפרטי גישה משולבים של user:pass ומקפיצים חלונית התחברות חוסמת. כדי להשתמש בפרוקסי HTTP(S) עם אימות של VinaProxy בצורה חלקה ב-Selenium, העבירו את פרטי הגישה באמצעות selenium-wire או טענו תוסף רקע קטן ל-Chrome מסוג onAuthRequired.
http://user:pass@ip:port (selenium-wire / Chrome proxy extension)- 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 IP75,000 ₫
- 3+ כתובות IP70,000 ₫
- 5+ כתובות IP65,000 ₫
- 10+ כתובות IP60,000 ₫
- 50+ כתובות IP60,000 ₫
- 100+ כתובות IP60,000 ₫
- 200+ כתובות IP60,000 ₫
- 500+ כתובות IP55,000 ₫
שתי דרכים אמינות לאימות פרוקסי ב-Selenium
בחרו בגישה המתאימה לסביבת הריצה של השפה ולדרייבר הדפדפן שלכם:
| גישה | תחביר הגדרה | מתאים ביותר עבור |
|---|---|---|
selenium-wire (Python) | seleniumwire_options={'proxy': {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}} | ההגדרה המהירה ביותר ב-Python; תומכת בהחלפת פרוקסי חמה באמצע הפעלה |
| תוסף אימות ל-Chrome | טעינת תוסף מכווץ המטפל ב-chrome.webRequest.onAuthRequired | שימוש סטנדרטי ב-Selenium ב-Python, Java, C# ו-undetected-chromedriver |
| מעבר ל-Playwright | browser.newContext({ proxy: { server, username, password } }) | אימות פרוקסי מובנה ברמת הקונטקסט ללא צורך בתוספים כלל |
טיפים לביצועים עבור סקרייפינג ב-Selenium באמצעות פרוקסי
- הגדירו
options.page_load_strategy = 'eager'כדי ש-WebDriver יתחיל לפעול ברגע שה-DOM אינטראקטיבי, מבלי להמתין למעקבים חיצוניים איטיים - השתמשו ב-
--headless=new(Chrome 109+) בהרצה ללא ממשק גרפי, כדי שתוספי Chrome ואימות הפרוקסי יפעלו בדיוק כמו במצב עם ממשק - השביתו טעינת תמונות דרך הגדרות Chrome בעת איסוף נתוני מוצרים המכילים טקסט בלבד
- עטפו תמיד את הדרייבר בבלוק
try / finally: driver.quit()כדי למנוע תהליכי Chromium מיותרים שיישארו פתוחים ברקע
שלב אחר שלב
- 1
התקנת selenium-wire
הריצו
pip install selenium-wireבסביבה הווירטואלית שלכם ב-Python. - 2
הגדרת מילון הפרוקסי של VinaProxy
הגדירו את פרטי הגישה בתבנית
sw_options = {'proxy': {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}}. - 3
הפעלת webdriver.Chrome עם seleniumwire_options
אתחלו את
driver = webdriver.Chrome(seleniumwire_options=sw_options). - 4
אימות כתובת ה-IP היוצאת
גשו אל
driver.get('https://vinaproxy.com/api/my-ip')וודאו שתגובת ה-JSON מציגה את כתובת ה-IP של הפרוקסי שלכם.
שאלות נפוצות
מדוע `--proxy-server=http://user:pass@ip:port` לא עובד ב-ChromeOptions?
Chromium מסיר בכוונה את user:pass@ מדגל שורת הפקודה --proxy-server. שימוש ב-selenium-wire, בתוסף onAuthRequired או ב-Playwright פותר זאת בצורה נקייה.
האם אפשר להחליף פרוקסי מבלי להפעיל מחדש את Chrome ב-selenium-wire?
כן. הקצו מילון חדש ל-driver.proxy = {'http': 'http://...', 'https': 'http://...'} בכל שלב כדי להחליף את פרוקסי היעד הפעיל תוך כדי תנועה.
האם תוספי פרוקסי ל-Chrome עובדים במצב ללא ממשק גרפי (headless)?
כן, כל עוד תעבירו את --headless=new במקום הדגל הישן --headless.
הריצו את Selenium WebDriver בקנה מידה רחב עם כתובות IP סטטיות ללא הגבלת תעבורה
פרוקסי ייעודי של IPv4 ופרוקסי ISP סטטי בזמינות מיידית ב-7 מדינות.
רכישת פרוקסי ל-Selenium