Изменение агента пользователя для драйвера селена

У меня есть следующий код в Python :

 from selenium.webdriver import Firefox from contextlib import closing with closing(Firefox()) as browser: browser.get(url) 

Я хотел бы напечатать HTTP-заголовок user-agent и, возможно, изменить его. Является ли это возможным?

  • Могу ли я найти элемент с использованием регулярного выражения с Python и Selenium?
  • Как установить настройки для FireFox в Robot Framework
  • Исключение случайных периодов ожидания Selenium без какого-либо сообщения
  • Установите chrome.prefs с привязкой python для селена в chromedriver
  • Fake Flash с PhantomJS & Selenium (Python)
  • Селен и iframe в html
  • селен с scrapy для динамической страницы
  • тест веб-страницы с селеном python: очень медленное выполнение
  • 4 Solutions collect form web for “Изменение агента пользователя для драйвера селена”

    В Selenium нет способа прочитать заголовки запроса или ответа. Вы можете сделать это, поручив вашему браузеру подключиться через прокси-сервер, который записывает такую ​​информацию.

    Установка User Agent в Firefox

    Обычным способом изменения пользовательского агента для Firefox является установка переменной "general.useragent.override" в вашем профиле Firefox. Обратите внимание, что это не зависит от Селена.

    Вы можете направить Selenium на использование профиля, отличного от стандартного, например:

     from selenium import webdriver profile = webdriver.FirefoxProfile() profile.set_preference("general.useragent.override", "whatever you want") driver = webdriver.Firefox(profile) 

    Установка агента пользователя в Chrome

    В Chrome, что вы хотите сделать, используйте параметр командной строки user-agent . Опять же, это не вещь Селена. Вы можете вызвать Chrome в командной строке с помощью chrome --user-agent=foo чтобы установить агент в значение foo .

    С Selenium вы устанавливаете его так:

     from selenium import webdriver from selenium.webdriver.chrome.options import Options opts = Options() opts.add_argument("user-agent=whatever you want") driver = webdriver.Chrome(chrome_options=opts) 

    Оба метода, описанные выше, были протестированы и найдены в работе. Я не знаю о других браузерах.

    Получение агента пользователя

    В Selenium нет методов запроса пользовательского агента из экземпляра WebDriver . Даже в случае Firefox вы не можете обнаружить пользовательский агент по умолчанию, проверив, что такое general.useragent.override , если оно не настроено на пользовательское значение. (Этот параметр не существует, пока не будет установлено какое-либо значение.)

    Однако, как только браузер запущен, вы можете получить агент пользователя, выполнив:

     agent = driver.execute_script("return navigator.userAgent") 

    Переменная agent будет содержать агент пользователя.

    Чтобы основываться на полезном ответе Луи …

    Установка агента пользователя в PhantomJS

     from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities ... caps = DesiredCapabilities.PHANTOMJS caps["phantomjs.page.settings.userAgent"] = "whatever you want" driver = webdriver.PhantomJS(desired_capabilities=caps) 

    Единственная незначительная проблема заключается в том, что, в отличие от Firefox и Chrome, это не возвращает вашу настраиваемую настройку:

     driver.execute_script("return navigator.userAgent") 

    Итак, если кто-нибудь выяснит, как это сделать в PhantomJS, пожалуйста, отредактируйте мой ответ или добавьте комментарий ниже! Приветствия.

    WebDriver не хватает HTTP-заголовков ответов и методов кода состояния. Для получения дополнительной информации проверьте эту ссылку

    Попробуйте следующий код:

     import urllib # spoofing user-agent class AppURLopeneer(urllib.FancyURLopener): version = "Mozilla/5.0" urllib._urlopener = AppURLopeneer() 

    Это позволяет обмануть пользовательский агент.

    С наилучшими пожеланиями.

    Interesting Posts

    tkinter python: исключения для catching

    Как вывести легенду из сюжета

    Почему pandas '==' отличается от '.eq ()'

    В wxPython как вы привязываете событие EVT_KEY_DOWN ко всему окну?

    Работает ли свойство текста шрифта Mayavi «Размер шрифта»?

    Почему создание набора из конкатенированного списка происходит быстрее, чем использование `.update`?

    Как создать декоратор Python, который можно использовать как с параметрами, так и без них?

    Извлечение данных с помощью регулярных выражений Python

    добавьте два списка, затем sort = None (?)

    Нужен простой пример «Hello World» с использованием библиотеки Webkit в Python

    Загрузка нескольких вложений с помощью imaplib

    Как перенаправить регистратор на wxPython textCtrl с помощью специального обработчика ведения журнала?

    Увеличение глубины cProfiler в Python, чтобы сообщить больше функций?

    SSL3_GET_SERVER_CERTIFICATE проверка сертификата завершена на Python при запросе (только) * .google.com

    Что делает «\ r» в следующем скрипте?

    Python - лучший язык программирования в мире.