【问题标题】:Set proxy for selenium chrome driver in ruby在 ruby​​ 中设置 selenium chrome 驱动程序的代理
【发布时间】:2015-05-23 16:36:12
【问题描述】:

Browsermob 代理:-

https://github.com/jarib/browsermob-proxy-rb

我可以为 Firefox 配置文件创建和设置代理,但不能在 chrome 上。

我不知道我必须为 chrome 使用哪些选项来设置代理。

我正在使用以下代码:-

对于火狐:-

require 'selenium/webdriver'
require 'browsermob/proxy'

server = BrowserMob::Proxy::Server.new("/path/to/downloads/browsermob-proxy/bin/browsermob-proxy") #=> #<BrowserMob::Proxy::Server:0x000001022c6ea8 ...>
server.start

proxy = server.create_proxy #=> #<BrowserMob::Proxy::Client:0x0000010224bdc0 ...>

profile = Selenium::WebDriver::Firefox::Profile.new #=> #<Selenium::WebDriver::Firefox::Profile:0x000001022bf748 ...>
profile.proxy = proxy.selenium_proxy

driver = Selenium::WebDriver.for :firefox, :profile => profile

proxy.new_har "google"
driver.get "http://google.com"

har = proxy.har #=> #<HAR::Archive:0x-27066c42d7e75fa6>
har.entries.first.request.url #=> "http://google.com"
har.save_to "/tmp/google.har"

proxy.close
driver.quit

对于铬:-

require 'selenium/webdriver'
require 'browsermob/proxy'

server = BrowserMob::Proxy::Server.new("/path/to/downloads/browsermob-proxy/bin/browsermob-proxy") #=> #<BrowserMob::Proxy::Server:0x000001022c6ea8 ...>
server.start

proxy = server.create_proxy #=> #<BrowserMob::Proxy::Client:0x0000010224bdc0 ...>

profile = Selenium::WebDriver::Chrome::Profile.new #=>
profile.proxy = proxy.selenium_proxy

driver = Selenium::WebDriver.for :chrome, :prefs => profile

proxy.new_har "google"
driver.get "http://google.com"

har = proxy.har #=> #<HAR::Archive:0x-27066c42d7e75fa6>
har.entries.first.request.url #=> "http://google.com"
har.save_to "/tmp/google.har"

proxy.close
driver.quit

在 chrome 中,以下行会引发错误

profile.proxy = proxy.selenium_proxy

错误:- NoMethodError: undefined method `proxy=' for #

如何在 chrome 驱动配置文件上设置代理?

【问题讨论】:

    标签: ruby selenium-webdriver proxy selenium-chromedriver browsermob


    【解决方案1】:

    嘿,不确定是否已经解决了这个问题,我遇到了同样的问题,但最终通过使用以下代码完成了这项工作:

    require 'selenium/webdriver'
    require 'browsermob/proxy'
    
    server = BrowserMob::Proxy::Server.new("/path/to/downloads/browsermob-proxy/bin/browsermob-proxy") #=> #<BrowserMob::Proxy::Server:0x000001022c6ea8 ...>
    server.start
    
    proxy = Selenium::WebDriver::Proxy.new(:http => @proxy.selenium_proxy.http)
    caps = Selenium::WebDriver::Remote::Capabilities.chrome(:proxy => proxy)
    driver = Selenium::WebDriver.for(:chrome, :desired_capabilities => caps)
    

    然后你可以使用har= proxy.har保存har文件

    通过使用它基本上可以避免 chromedriver 指向错误的端口和 localhost。这种方法也适用于 IEdriver 只需将大写更改为

    Selenium::WebDriver::Remote::Capabilities.internetexplorer(:proxy => proxy)
    

    希望这种方法有所帮助:)

    【讨论】:

    • 这很令人困惑。你的@proxy 来自哪里。它包含什么。我该如何构建它。
    猜你喜欢
    • 2019-09-22
    • 2020-07-09
    • 2023-01-30
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 2018-10-20
    • 2020-07-11
    相关资源
    最近更新 更多