当前位置: 首页 > 知识库问答 >
问题:

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

奚翰海
2023-03-14

我正在使用Selenium WebDrive,在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菜单

共有3个答案

洪浩波
2023-03-14

请输入以下代码,这将帮助您更改代理

首先创建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/");
端木存
2023-03-14

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

options.AddArguments("--proxy-server=http://user:password@yourProxyServer.com:8080");
贡可人
2023-03-14

我使用的nuget包硒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);
 类似资料:
  • 问题内容: 我正在尝试运行一个ruby文件,该文件将使用seleniumwebdriver启动chrome驱动程序。我有selenium独立服务器2.35.0。和chromedriver可执行文件已安装。我正在通过运行服务器来启动 两个会话正在启动,chrome驱动程序无法启动。 这是在我使用以下文件运行文件之后 我对此并不陌生,无法找出问题所在。而且,我也试图让它无头运行,所以我正在运行Xvfb

  • 我试图运行一个ruby文件,这将启动chrome驱动程序使用selenium WebDriver。我有selenium独立服务器2.35.0。和chromedriver可执行文件安装。我通过运行来启动服务器, 这是在我使用 我对此很陌生,不知道哪里出了问题。我也试图无头运行它,所以我有Xvfb运行。有人能帮我指出我犯的错误并启动chromedriver吗? 更新: 谁能帮我弄清楚出了什么问题吗?

  • 问题内容: 我可以如下设置Firefox的代理设置。 但是我也需要设置Chrome。.有人可以帮助我怎么做吗? 谢谢拉吉 问题答案: 您可以尝试使用该类,如下所示:

  • 我正在尝试使用Selenium web驱动程序。我正在使用asp。net mvc。我已经设置了一个非常基本的测试。我基本上只是想打开浏览器。 但当我运行测试我得到这个错误消息 结果消息: 文件c:\chromedriver.exe\chromedriver.exe不存在。驱动程序可以在http://chromedriver.storage.googleapis.com/index.html下载 我

  • 我正在使用SeleniumWebDriver进行网站测试。现在我想在SeleniumWebDriver中设置TestNG。怎么可能呢?testng有JAR文件吗?