Как вращать различные пользовательские агенты, используя селен Python на каждый запрос
Я хочу сделать 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 ответа
Нет При настройке экземпляра ChromeDriver с ChromeOptions для запуска нового сеанса браузера Chrome конфигурация ChromeDriver остается неизменной в течение всего срока службы ChromeDriver и остается недоступной для редактирования. Таким образом, вы не можете изменить пользовательский агент, когда экземпляр WebDriver выполняет цикл, выполняющий 10 запросов.
Даже если вы сможете извлечь атрибуты ChromeDriver и ChromeSession, например UserAgent, ID сеанса, файлы cookie и другие атрибуты сеанса, из уже инициированного сеанса просмотра, вы все равно не сможете изменить эти атрибуты ChromeDriver.
Более чистым способом было бы позвонить driver.quit()
в tearDown(){}
способ корректно закрыть и уничтожить экземпляры ChromeDriver и Chrome Browser, а затем дополнить новый набор экземпляров ChromeDriver и Chrome Browser новым набором конфигураций.
Здесь вы можете найти соответствующую дискуссию о том, как я могу повторно подключиться к браузеру, открытому веб-драйвером с селеном?
Да. Теперь это возможно с cdp:
driver.execute_cdp_cmd("Network.enable", {})
driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {"headers": {"User-Agent": "browser1"}})
driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {"headers": {"User-Agent": "browser2"}})
driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {"headers": {"User-Agent": "browser3"}})
driver.get('https://www.httpbin.org/headers')
Это открыть 10 Chrome экземпляр, потому что вы не сделалиclose()
это, попробуй
...
...
driver1.get('https://www.whatsmyua.info/')
time.sleep(5)
driver1.close()