Прокси аутентификации селен-хромедривер

Мне нужно подключиться к прокси-серверу с именем пользователя и паролем (например, ИМЯ ПОЛЬЗОВАТЕЛЯ:PASSWD@IP: ПОРТ) с веб-драйвером chromedriver в Селене 2 в Java. Я нашел, как это сделать без использования имени пользователя и пароля, но не нашел способа сделать это с помощью.

Благодарю.

1 ответ

Один из способов подключения к прокси-серверу с именем пользователя и паролем — использование инструментаsshuttleработает на вашей машине. Этот инструмент позволяет вам создать соединение с вашим прокси-сервером с помощью SSH, а затем направить весь ваш трафик.

      $ sshuttle -r username@remotehost 0.0.0.0/0

См. https://sshuttle.readthedocs.io/en/stable/usage.html для получения дополнительной информации.

Другой подход — добавить расширение Chrome. Этот подход немного сложнее, но он позволяет использовать Chrome WebDriver без каких-либо инструментов, работающих в фоновом режиме. Вам нужно будет создать расширение Chrome, включив два файла в архив с именемproxy.zip:Background.jsиmanifest.js.

Фон.js :

      var config = {
    mode: "fixed_servers",
    rules: {
        singleProxy: {
            scheme: "http",
            host: "YOUR_PROXY_ADDRESS",
            port: parseInt(PROXY_PORT)
        },
        bypassList: ["foobar.com"]
    }
};
chrome.proxy.settings.set({ value: config, scope: "regular" }, function () { });
function callbackFn(details) {
    return {
        authCredentials: {
            username: "PROXY_USERNAME",
            password: "PROXY_PASSWORD"
        }
    };
}

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

манифест.js :

      var config = {
    mode: "fixed_servers",
    rules: {
        singleProxy: {
            scheme: "http",
            host: "YOUR_PROXY_ADDRESS",
            port: parseInt(PROXY_PORT)
        },
        bypassList: ["foobar.com"]
    }
};
chrome.proxy.settings.set({ value: config, scope: "regular" }, function () { });
function callbackFn(details) {
    return {
        authCredentials: {
            username: "PROXY_USERNAME",
            password: "PROXY_PASSWORD"
        }{
            "version": "1.0.0",
            "manifest_version": 3,
            "name": "Chrome Proxy",
            "permissions": [
            "Proxy",
            "Tabs",
            "unlimitedStorage",
            "Storage",
            "<all_urls>",
            "webRequest",
            "webRequestBlocking"
            ],
            "background": {
            "scripts": ["background.js"]
            },
            "Minimum_chrome_version":"76.0.0"
            }
    };
}

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

Затем вам нужно будет добавить расширение Chrome в ChromeOptions, используяaddExtensionметод:

              ChromeOptions options = new ChromeOptions();
        options.addExtensions("proxy.zip");

Подробности описаны (для Python) на странице: https://www.browserstack.com/guide/set-proxy-in-selenium

Другие вопросы по тегам