#python #selenium #web-scraping #selenium-chromedriver #user-agent
#python #селен #веб-очистка #selenium-chromedriver #user-agent
Вопрос:
Следующий код изменяет пользовательский агент:
headers = randint(0, 1)
with open('headers.csv', 'r') as fd:
reader = csv.reader(fd)
reader = list(reader)
driver.execute_cdp_cmd('Network.setUserAgentOverride', {
"userAgent": str(reader[headers])})
CSV-файл headers содержит только два заголовка для целей тестирования:
headers.csv:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36
При переходе к ‘https://amiunique.org/fp «в моем обычном браузере заголовок user agent является обычным.
обычный браузер
И при использовании драйвера selenium chrome, использующего приведенный выше код изменения пользовательского агента, это результат: selenium chromedriver
Я предполагаю []
, что заключение заголовка user-agent в круглые скобки является причиной моего обнаружения. как мне избавиться []
от вывода?
Ответ №1:
Ваш элемент (reader[заголовки]) сам по себе является списком. Используйте
"userAgent": ''.join(reader[headers])
вместо этого.
Комментарии:
1. спасибо, это сработало отлично. не могли бы вы немного подробнее остановиться на проблеме имен переменных?
2. Я отредактировал ответ. На самом деле это не проблема, но облегчит чтение кода. На самом деле вы выбираете один заголовок user agent из этого файла, а ‘headers’ на самом деле является целочисленным индексом, поэтому ‘headers’ не совсем описывает, что содержит переменная.
3. Я бы использовал что-то вроде ‘idx = randint(…)’, ‘headers = list(reader)’, ‘user_agent = headers [idx]’
4. ах, спасибо. как ни странно, его код я скопировал из stackoverflow lol. кроме того, даже если [] исчез, он по-прежнему говорит, что пользовательский агент уникален, даже если он скопирован и вставлен из моего обычного браузера в файл csv.