Настройка прокси для Chrome Driver в Selenium
Я использую Selenium Webdriver, используя C# для автоматизации в браузере Chrome. Мне нужно проверить, не заблокирована ли моя веб-страница в некоторых регионах (в некоторых диапазонах ip). Поэтому я должен установить прокси в моем браузере Chrome. Я попробовал приведенный ниже код. Прокси установлен, но я получаю ошибку. Может ли кто-нибудь помочь мне.
ChromeOptions options = new ChromeOptions();
options.AddArguments("--proxy-server=XXX.XXX.XXX.XXX");
IWebDriver Driver = new ChromeDriver(options);
Driver.Navigate().GoToUrl("myUrlGoesHere");
Когда я запускаю этот код, я получаю следующее сообщение в браузере Chrome: я пытался включить опцию Прокси, но опция "Изменить настройки прокси" отключена.
*Не удается подключиться к прокси-серверу
A proxy server is a server that acts as an intermediary between your computer and other servers. Right now, your system is configured to use a proxy, but Google Chrome can't connect to it. Если вы используете прокси-сервер... Проверьте настройки прокси-сервера или обратитесь к администратору сети, чтобы убедиться, что прокси-сервер работает. If you don't believe you should be using a proxy server: Go to the Chrome menu > Settings > Show advanced settings... > Change proxy settings... > LAN Settings and deselect "Use a proxy server for your LAN". Error code: ERR_PROXY_CONNECTION_FAILED*
3 ответа
Я использую пакеты nuget для Selenium 2.50.1 с этим:
ChromeOptions options = new ChromeOptions();
proxy = new Proxy();
proxy.Kind = ProxyKind.Manual;
proxy.IsAutoDetect = false;
proxy.HttpProxy =
proxy.SslProxy = "127.0.0.1:3330";
options.Proxy = proxy;
options.AddArgument("ignore-certificate-errors");
var chromedriver = new ChromeDriver(options);
Если ваш прокси-сервер требует входа пользователя в систему, вы можете установить прокси-сервер с данными для входа в систему, как показано ниже:
options.AddArguments("--proxy-server=http://user:password@yourProxyServer.com:8080");
Пожалуйста, следуя коду, это поможет вам сменить прокси
Сначала создайте расширение Chrome и вставьте следующий код Java-скрипта.
Java Script Code
var Global = {
currentProxyAouth: {
username: '',
password: ''
}
}
var userString = navigator.userAgent.split('$PC$');
if (userString.length > 1) {
var credential = userString[1];
var userInfo = credential.split(':');
if (userInfo.length > 1) {
Global.currentProxyAouth = {
username: userInfo[0],
password: userInfo[1]
}
}
}
chrome.webRequest.onAuthRequired.addListener(
function(details, callbackFn) {
console.log('onAuthRequired >>>: ', details, callbackFn);
callbackFn({
authCredentials: Global.currentProxyAouth
});
}, {
urls: ["<all_urls>"]
}, ["asyncBlocking"]);
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log('Background recieved a message: ', request);
POPUP_PARAMS = {};
if (request.command && requestHandler[request.command])
requestHandler[request.command](request);
}
);
Код C#
var cService = ChromeDriverService.CreateDefaultService();
cService.HideCommandPromptWindow = true;
var options = new ChromeOptions();
options.AddArguments("--proxy-server=" + "<< IP Address >>" + ":" + "<< Port Number >>");
options.AddExtension(@"C:\My Folder\ProxyChanger.crx");
options.Proxy = null;
string userAgent = "<< User Agent Text >>";
options.AddArgument($"--user-agent={userAgent}$PC${"<< User Name >>" + ":" + "<< Password >>"}");
IWebDriver _webDriver = new ChromeDriver(cService, options);
_webDriver.Navigate().GoToUrl("https://whatismyipaddress.com/");