Как вращать различные пользовательские агенты, используя селен Python на каждый запрос - PullRequest
0 голосов
/ 05 ноября 2018

Я хочу сделать 10 запросов к https://www.google.com/, но со случайными пользовательскими агентами, использующими селен и питон. У меня есть цикл, и внутри этого цикла я делаю 10 запросов со случайными пользовательскими агентами (используя поддельный пользовательский агент). Основная проблема заключается в том, что для каждого запроса веб-драйвер открывает новый экземпляр Google Chrome, и я хочу сделать это в одном экземпляре, но с разными пользовательскими агентами. Как я могу сделать это возможным? 1 экземпляр Google Chrome и 10 запросов с 10 случайными пользовательскими агентами. Вот мой код:

chrome_options = Options()
chrome_options.add_argument('no-sandbox')
chrome_options.add_argument("--start-maximized")
ua = UserAgent()
for i in range(0, 10):
    userAgent = ua.random
    chrome_options.add_argument('--user-agent="' + str(userAgent) + '"')
    driver1 = webdriver.Chrome(chrome_options=chrome_options, 
    executable_path="C:/Python34/chromedriver")
    driver1.get('https://www.google.com/')
    time.sleep(5)

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Нет . При настройке экземпляра ChromeDriver с ChromeOptions для запуска нового сеанса браузера Chrome конфигурация ChromeDriver остается неизменной на протяжении всего срок действия ChromeDriver и остается недоступным для редактирования . Таким образом, вы не можете изменить пользовательский агент , когда экземпляр WebDriver выполняет цикл, выполняющий 10 запросов.

Даже если вы можете извлечь атрибуты ChromeDriver и ChromeSession , например. UserAgent , ID сеанса , Cookies и другие атрибуты сеанса из уже инициированного сеанса просмотра тем не менее вы не сможете их изменить атрибуты ChromeDriver .

Более понятным способом было бы вызвать driver.quit() в tearDown(){} методе закрыть и уничтожить ChromeDriver и Экземпляры Chrome Browser изящно, а затем охватывают новый набор экземпляров ChromeDriver и Chrome Browser с новым набором конфигураций.

Здесь вы можете найти соответствующее обсуждение на Как я могу повторно подключиться к браузеру, открытому веб-драйвером с селеном?

0 голосов
/ 06 ноября 2018

он открывает 10 экземпляров Chrome, потому что вы не close() это, попробуйте

...
...
driver1.get('https://www.whatsmyua.info/')
time.sleep(5)
driver1.close()
...