Я столкнулся с проблемой при попытке автоматизировать некоторые тесты с веб-драйвером selenium chrome на python. Моя цель - переключать user-agent и proxy-сервер после каждого моего запроса, чтобы избежать запрета. Вот мой код:
from selenium import webdriver
import time
import random
from fake_useragent import UserAgent
from datetime import datetime as dt
def add_random_ua():
# Generate a random user-agent useing fake_useragent library
fake_ua = UserAgent().random
# If there is already a "user-agent" argument in options delete it
for item in options.arguments:
if '--user-agent=' in item:
options.arguments.remove(item)
# Add generated user-agent to options
options.add_argument(f'--user-agent={fake_ua}')
print(f'User-agent: {fake_ua}')
def add_random_proxy():
# Same logic as with add_random_ua
# PROXY_LIST is just a list read from .txt file
random_proxy = PROXY_LIST[random.randint(0, len(PROXY_LIST) - 1)]
for item in options.arguments:
if '--proxy-server=' in item:
options.arguments.remove(item)
options.add_argument(f'--proxy-server={random_proxy}')
print(f'Proxy-server: {random_proxy}')
chromedriver = 'C:\\Users\\User\\Desktop\\chromedriver\\chromedriver.exe'
# Initial chromedriver options
options = webdriver.ChromeOptions()
options.add_argument("--window-size=1024,768")
options.add_argument("--disable-notifications")
options.add_argument("--disable-popup-blocking")
options.add_argument("--user-data-dir=C:\\Users\\User\\AppData\\Local\\Google\\Chrome\\User Data")
options.add_argument("--profile-directory=Default")
options.add_argument("--ignore-certificate-errors")
while True:
print(f'Timestamp: {dt.now().strftime("%Y-%m-%d %H:%M:%S")}')
add_random_ua()
add_random_proxy()
web = webdriver.Chrome(chromedriver, options=options)
web.implicitly_wait(30)
web.get(URL)
# Some testing code...
web.quit()
Итак, основа c logi c скрипта состоит в том, чтобы установить некоторые исходные параметры chromedriver, а затем добавить случайный прокси-сервер и пользовательский агент. L oop, создать экземпляр веб-драйвера с новыми параметрами, выполнить некоторый код, уничтожить веб-драйвер с помощью .quit (), а затем снова выполнить все эти вещи.
Основная проблема заключается в том, что он не работает с add_random_proxy () - каждый время, когда я не могу подключиться к inte rnet из-за сбоя прокси-соединения (сами прокси полностью в порядке). Когда я комментирую эту строку, все работает хорошо. Что я делаю не так?
Заранее спасибо!