在 Selenium 中为 Chrome 驱动程序设置代理

问题描述 投票:0回答:4

我正在使用 Selenium Webdriver,在 Chrome 浏览器中使用 C# 实现自动化。 我需要检查我的网页是否在某些地区(某些 IP 范围)被阻止。所以我必须在 Chrome 浏览器中设置代理。我尝试了下面的代码。正在设置代理,但出现错误。有人可以帮助我吗?

ChromeOptions options = new ChromeOptions();
options.AddArguments("--proxy-server=XXX.XXX.XXX.XXX");

IWebDriver Driver = new ChromeDriver(options);
           
Driver.Navigate().GoToUrl("myUrlGoesHere");

当我运行此代码时,我在 Chrome 浏览器中收到以下消息:我尝试启用代理选项,但“更改代理设置”选项被禁用。

无法连接到代理服务器

代理服务器是充当您的计算机和其他服务器之间中介的服务器。您的系统当前配置为使用代理,但 Google Chrome 无法连接到它。 如果您使用代理服务器... 检查您的代理设置或联系您的网络管理员以确保代理服务器正常工作。如果您认为不应该使用代理服务器:转到 Chrome 菜单 > 设置 > 显示高级设置... > 更改代理设置... > LAN 设置并取消选择

“为您的 LAN 使用代理服务器”。 错误代码:ERR_PROXY_CONNECTION_FAILED*

c# google-chrome selenium proxy selenium-webdriver
4个回答
23
投票

我正在使用 Selenium 2.50.1 的 nuget 包:

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);

9
投票

如果您的代理需要用户登录,您可以使用登录用户/密码详细信息设置代理,如下所示:

options.AddArguments("--proxy-server=http://user:[email protected]:8080");

7
投票

请跟随代码,这将帮助您更改代理

首先创建 chrome 扩展并粘贴以下 java 脚本 代码。

Java 脚本代码

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/");

0
投票

无法访问此网站https://google.com/ 的网页可能暂时无法访问,或者可能已永久移至新网址。 ERR_NO_SUPPORTED_PROXIES

我收到此错误。

© www.soinside.com 2019 - 2024. All rights reserved.