首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在无头Chrome中进行代理认证

如何在无头Chrome中进行代理认证
EN

Stack Overflow用户
提问于 2020-02-25 23:06:48
回答 1查看 4.6K关注 0票数 6

我正在尝试通过需要身份验证的代理使用无头Chrome浏览器:

代码语言:javascript
复制
require "selenium-webdriver"

options = Selenium::WebDriver::Chrome::Options.new(
      args: ["headless", "proxy-server=http://#{host}:#{port}"]
    )
driver = Selenium::WebDriver.for(:chrome, options: options)

这在不需要身份验证的情况下有效,但现在我需要使用身份验证。

在"List of Chromium Command Line Switches“中,我没有找到正确传递usernamepassword的方法。在Google中我找到了这个选项,但它不起作用:

代码语言:javascript
复制
options = Selenium::WebDriver::Chrome::Options.new(
      args: ["headless", "proxy-server=http://#{username}:#{password}@#{host}:#{port}"]
    )

如何将headless-chrome与代理身份验证一起使用?

EN

回答 1

Stack Overflow用户

发布于 2020-02-25 23:26:09

我已经寻找了将近两个星期的解决方案。那是在2019年,我甚至还没有弄清楚。据我所知,你不能用用户名/密码来设置代理。以前可以使用扩展,但现在不能使用这种方式。有一种方法可以用webdrivers gem来实现:

如果你和互联网之间有一个代理,那么你需要配置gem来使用这个代理。您可以通过调用configure方法来完成此操作。

代码语言:javascript
复制
Webdrivers.configure do |config|
  config.proxy_addr = 'myproxy_address.com'
  config.proxy_port = '8080'
  config.proxy_user = 'username'
  config.proxy_pass = 'password'
end

然而,我不能让它在我的项目中工作。唯一起作用的是在代理服务器上用我的IP设置白名单,这样我就不需要设置用户名/密码了。所以它在没有凭证的情况下工作,只是这样:

代码语言:javascript
复制
    Capybara.register_driver :headless_chrome do |app|
      client = Selenium::WebDriver::Remote::Http::Default.new
      client.read_timeout = 60
      capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
        'goog:chromeOptions' => { args: %w[no-sandbox headless disable-gpu disable-dev-shm-usage
                                           window-size=1280,1024 enable-features=NetworkService,NetworkServiceInProcess] },
        'loggingPrefs' => { browser: 'ALL', client: 'ALL', driver: 'ALL', server: 'ALL' }
      )
      capabilities['goog:chromeOptions'][:args] << "user-agent=#{user_agent}" if user_agent
      capabilities['goog:chromeOptions'][:args] << "proxy-server=http://#{proxy[:ip]}:#{proxy[:port]}" if proxy

      Capybara::Selenium::Driver.new(app, browser: :chrome, desired_capabilities: capabilities, http_client: client)
    end

我知道我的答案不是你一直在寻找的,但也许它会在某种程度上帮助你,或者推动你找到正确的答案。祝好运

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60397637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档