Як наладзіць проксі з аўтэнтыфікацыяй у 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 | Загрузка zip-пашырэння, якое апрацоўвае 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+) пры працы ў headless-рэжыме, каб пашырэнні 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
Імгненныя Dedicated IPv4 і Static ISP проксі ў 7 краінах.
Купіць проксі для Selenium