@MoHaLLlKa

Как поменять proxy во время работы с selenium webdriver chrome?

При работе с selenium хочу менять прокси на "лету" для одного webdriver'a не пересоздавая его.

Как возможно это реализовать? Устанавливать прокси до создания webdriver'а я умею, а вот проблема с тем, что:
1) когда webdriver уже создан и мне приспичило сменить прокси, как это сделать?
2) как использовать в selenium прокси, аутентификация которых проходит через username:password?

(прим.: на скрине установка проксей до создания webdriver'a)
3f5b7e5929b4493aaf22f18ec3bc2f59.PNG
  • Вопрос задан
  • 2725 просмотров
Решения вопроса 1
@GeneD88
QA
На второй вопрос:

Создаете файл background.js, подставив свои значения:
var config = {
        mode: "fixed_servers",
        rules: {
          singleProxy: {
            scheme: "http",
            host: "%proxy_host",
            port: parseInt(%proxy_port)
          },
          bypassList: ["foobar.com"]
        }
      };

chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});

function callbackFn(details) {
    return {
        authCredentials: {
            username: "%username",
            password: "%password"
        }
    };
}

chrome.webRequest.onAuthRequired.addListener(
            callbackFn,
            {urls: ["<all_urls>"]},
            ['blocking']
);


Затем создаете manifest.json:
{
    "version": "1.0.0",
    "manifest_version": 2,
    "name": "Chrome Proxy",
    "permissions": [
        "proxy",
        "tabs",
        "unlimitedStorage",
        "storage",
        "<all_urls>",
        "webRequest",
        "webRequestBlocking"
    ],
    "background": {
        "scripts": ["background.js"]
    },
    "minimum_chrome_version":"22.0.0"
}


пакуете оба файла в zip, ie proxy_auth.zip

Затем подгружаете это все в драйвер:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_extension("proxy_auth.zip")

driver = webdriver.Chrome(executable_path='chromedriver.exe', chrome_options=chrome_options)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы