Настройка прокси на Python + Selenium + Firefox WebDriver - PullRequest
6 голосов
/ 16 марта 2019

Я не могу подключиться через прокси-сервер Selenium Firefox.

При такой конфигурации соединение создается, но НЕ через прокси, а через локальный сервер.

Есть два вопроса по этому вопросу и эта документация , но, похоже, ни один из них не решил эту проблему для python3:

def selenium_connect():

    proxy = "178.20.231.218"
    proxy_port = 80
    url = "https://www.whatsmyip.org/"

    fp = webdriver.FirefoxProfile()
    # Direct = 0, Manual = 1, PAC = 2, AUTODETECT = 4, SYSTEM = 5
    fp.set_preference("network.proxy.type", 1)
    fp.set_preference("network.proxy.http",proxy)
    fp.set_preference("network.proxy.http_port",proxy_port)
    fp.update_preferences()
    driver = webdriver.Firefox(firefox_profile=fp)
    driver.get(url)

Я использую Firefox webdriver версии 52.0.2 и Python 3.7 и стандартную среду Ubuntu 16.04 Docker.

Ответы [ 2 ]

0 голосов
/ 21 апреля 2019

Я обхожу эту проблему, перебирая прокси на уровне Windows, а не с помощью Selenium.

Программно реконфигурируя соединения SSH через PUTTY, это создает туннель для всего вашего сеанса. Чуть более предварительная настройка, но гораздо более надежная.

Я использую такой инструмент, как AppRobotic, который тесно интегрирован с Windows, но подойдет любой хороший продукт для макросов или RPA. Я использую привязки Python с Selenium, но VBScript для обновления конфигурации Windows.

Основной сценарий AppRobotic, написанный на Python, может запускать сценарий обновления конфигурации прокси-сервера на каждой итерации при одновременной автоматизации других приложений, таких как перебор строк в Excel или Notepad и выполнение каких-либо действий в браузере, поскольку можно рассмотреть сценарии VBScript отдельные "макросы".

0 голосов
/ 16 марта 2019

Вам не нужно устанавливать прокси с DesiredCapabilities, а не в FirefoxProfile?Как следующее.

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.proxy import Proxy

proxy_to_use= "xxx.xxx.xxx.xxx"
desired_capability = webdriver.DesiredCapabilities.FIREFOX
desired_capability['proxy'] = {
    'proxyType': "manual",
    'httpProxy': proxy_to_use,
    'ftpProxy': proxy_to_use,
    'sslProxy': proxy_to_use
        }
 browser = webdriver.Firefox(capabilities=desired_capability)
 browser.get(“http://www.whatsmyip.org”)
...