نحوه تنظیم پروکسی با احراز هویت در Selenium WebDriver
Updated:
فلگهای استاندارد ChromeDriver مانند --proxy-server=http://ip:port اطلاعات ورود درونخطی user:pass را نادیده میگیرند و یک دیالوگ مسدودکننده لاگین باز میکنند. برای استفاده بینقص از پروکسیهای دارای احراز هویت HTTP(S) برند VinaProxy در Selenium، اعتبار خود را از طریق selenium-wire ارسال کنید یا یک افزونه سبک پسزمینه onAuthRequired در Chrome بارگذاری نمایید.
http://user:pass@ip:port (selenium-wire / Chrome proxy extension)- 1 آیپی₫۴۰٬۰۰۰
- +5 آیپی₫۳۵٬۰۰۰
- +10 آیپی₫۲۵٬۰۰۰
- +20 آیپی₫۲۵٬۰۰۰
- +50 آیپی₫۲۵٬۰۰۰
- +100 آیپی₫۲۵٬۰۰۰
- +200 آیپی₫۲۵٬۰۰۰
- +500 آیپی₫۲۵٬۰۰۰
- +1000 آیپی₫۲۲٬۰۰۰
- +2000 آیپی₫۲۰٬۰۰۰
- 1 آیپی₫۷۵٬۰۰۰
- +3 آیپی₫۷۰٬۰۰۰
- +5 آیپی₫۶۵٬۰۰۰
- +10 آیپی₫۶۰٬۰۰۰
- +50 آیپی₫۶۰٬۰۰۰
- +100 آیپی₫۶۰٬۰۰۰
- +200 آیپی₫۶۰٬۰۰۰
- +500 آیپی₫۵۵٬۰۰۰
دو روش مطمئن برای احراز هویت پروکسی در Selenium
رویکرد متناسب با زبان برنامهنویسی و درایور مرورگر خود را انتخاب کنید:
| روش | سینتکس پیکربندی | مناسبترین برای |
|---|---|---|
selenium-wire (Python) | seleniumwire_options={'proxy': {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}} | سریعترین راهاندازی در Python؛ با پشتیبانی از تعویض لحظهای پروکسی در طول سشن |
| افزونه احراز هویت Chrome | بارگذاری یک افزونه فشرده (zip) که chrome.webRequest.onAuthRequired را مدیریت میکند | کار با Selenium استاندارد در Python، Java، C# و undetected-chromedriver |
| مهاجرت به Playwright | browser.newContext({ proxy: { server, username, password } }) | احراز هویت بومی پروکسی به ازای هر context بدون نیاز به هیچ افزونهای |
نکات بهینهسازی عملکرد در اسکرپینگ با 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 استفاده کنید.
اجرای Selenium WebDriver در مقیاس بالا با IPهای ثابت نامحدود
پروکسیهای فوری Dedicated IPv4 و Static ISP در 7 کشور مختلف.
خرید پروکسی Selenium