Прокси аутентификации селен-хромедривер
Мне нужно подключиться к прокси-серверу с именем пользователя и паролем (например, ИМЯ ПОЛЬЗОВАТЕЛЯ: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