2015-04-21 2 views
3

В настоящее время я успешно использую приведенный ниже код, чтобы использовать прокси-сервер с веб-сервером Selenium. К сожалению, я не могу заставить изменить параметры прокси, не перезагружая весь браузер. Я надеялся, что просто обновление настроек прокси-сервера, как и я, чтобы установить прокси-сервер, сменит прокси-сервер, но он, похоже, не работает. Любая помощь по этому вопросу была бы весьма признательна.Python Selenium Webdriver - Изменение настроек прокси-сервера «на лету»

profile = webdriver.FirefoxProfile() 
profile.set_preference("network.proxy.type", 1) 
profile.set_preference("network.proxy.http", proxyAddress) 
profile.set_preference("network.proxy.http_port", proxyPort) 
profile.update_preferences() 
driver = webdriver.Firefox(firefox_profile=profile) 
+0

создать локальный прокси-сервер, который соединяется с вашими прокси. При необходимости попросите своего местного прокси изменить «выход». – user37203

+0

Это кажется слишком сложным. Надеюсь, есть более простой способ сделать это. – tobloef

+0

это действительно звучит как 10 строк кода, там есть библиотека python для чего-то там. – user37203

ответ

1

Это немного старый вопрос. Но это на самом деле можно изменить прокси динамически через в «Hacky способом» я собираюсь использовать Selenium JS с Firefox но вы можете следовать через на языке, который вы хотите.

Шаг 1: Посещение "о: конфигурации"

driver.get("about:config"); 

Шаг 2: Run скрипт, который меняет прокси

var setupScript=`var prefs = Components.classes["@mozilla.org/preferences-service;1"] 
.getService(Components.interfaces.nsIPrefBranch); 

prefs.setIntPref("network.proxy.type", 1); 
prefs.setCharPref("network.proxy.http", "${proxyUsed.host}"); 
prefs.setIntPref("network.proxy.http_port", "${proxyUsed.port}"); 
prefs.setCharPref("network.proxy.ssl", "${proxyUsed.host}"); 
prefs.setIntPref("network.proxy.ssl_port", "${proxyUsed.port}"); 
prefs.setCharPref("network.proxy.ftp", "${proxyUsed.host}"); 
prefs.setIntPref("network.proxy.ftp_port", "${proxyUsed.port}"); 
        `;  

//running script below 
driver.executeScript(setupScript); 

//sleep for 1 sec 
driver.sleep(1000); 

Где использовать $ {ABCD} где ты поместите свои переменные, в приведенном выше примере я использую ES6, который обрабатывает конкатенацию, как показано, вы можете использовать другие методы конкатенации по вашему выбору, в зависимости от вас . Т язык (The SetupScript является строка, содержащий сценарий, который будет запущено обнесен ``)

Шаг 3:: Посетите ваш сайт

driver.get("https://whatismyip.com"); 

Объяснение: приведенный выше код использует API Firefox для изменения предпочтений с использованием кода JavaScript.

+1

Я, по общему признанию, не протестировал решение, и проект был давно заброшен, но я согласен с тем, ответ в любом случае. Благодаря! – tobloef

Смежные вопросы