Доступ, сделанный селеном, не появляется

Я пытаюсь выполнить автоматические тесты на локальном сайте, используя следующие настройки:

Python 3.8.10
selenium 3.141.0
Firefox 90.0
Burp Suite Community Edition v2021.6.2

Я использую прокси Burp с адресом 127.0.0.1:8080.

Я протестировал несколько примеров, доступных здесь. Приведенный ниже код работает лучше всего.

from selenium import webdriver

firefox_capabilities = webdriver.DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True

PROXY = "127.0.0.1:8080"

firefox_capabilities['proxy'] = {
    "proxyType": "MANUAL",
    "httpProxy": PROXY,
    "sslProxy": PROXY
}

driver = webdriver.Firefox(capabilities=firefox_capabilities)
driver.get("http://127.0.0.1")

Этот код отлично работает, когда URL-адрес в driver.get(URL-адрес здесь) не является локальным. Когда я ввожу URL-адрес http://127.0.0.1, доступ, сделанный селеном, не отображается в истории HTTP Burp Suite. . Вместо доступного URL-адреса отображается http://detectportal.firefox.com.

Это проблема в коде или какая-то конфигурация, которую мне нужно сделать?

История Burp HTTP


person Danilo Escudero    schedule 20.07.2021    source источник


Ответы (2)


Чтобы Burp отслеживал ссылки на локальном хосте, просто добавьте ("network.proxy.allow_hijacking_localhost", True) к FirefoxProfile().

from selenium import webdriver

fp = webdriver.FirefoxProfile()
fp.set_preference("network.proxy.type", 1)
fp.set_preference("network.proxy.http", "127.0.0.1")
fp.set_preference("network.proxy.http_port", 8080)
fp.set_preference("network.proxy.allow_hijacking_localhost", True)
fp.update_preferences()

driver = webdriver.Firefox(firefox_profile=fp)
driver.get('http://127.0.0.1')
person Danilo Escudero    schedule 23.07.2021

Загляните в настройки прокси-сервера Firefox, там вы можете найти утверждение, что локальные соединения никогда не направляются на прокси-сервер.

Но это можно изменить, открыв about:config и установив для параметра network.proxy.allow_hijacking_localhost значение true.

person Robert    schedule 23.07.2021
comment
Спасибо за ответ, Роберт. Я уже сделал эту настройку в браузере. Но я заметил, что когда я запускаю селен, firefox открывается с отключенной этой опцией. Вы знаете, как передать этот параметр в selenium webdriver? Я бы хотел, чтобы мне не приходилось вручную изменять это каждый раз, когда я запускаю код. - person Danilo Escudero; 23.07.2021
comment
@DaniloEscudero Вы должны иметь возможность указать используемый профиль Firefox в Selenium: stackoverflow.com/a/14458405/150978 - person Robert; 23.07.2021
comment
Спасибо, это сработало. Решение было намного проще, я опубликую его здесь. Примечание. Я не хочу загружать весь свой профиль браузера, я просто хочу установить для параметра network.proxy.allow_hijacking_localhost значение True. - person Danilo Escudero; 23.07.2021