首页 > 解决方案 > 如何在 Heroku 上使用 Capybara/Firefox 和代理?我得到“代理服务器拒绝连接”

问题描述

我有以下代码:

Capybara.register_driver :selenium_headless do |app|

  ...

  proxy = Selenium::WebDriver::Proxy.new(
    http: proxy_address,
    ssl: proxy_address
  )
  desired_caps = Selenium::WebDriver::Remote::Capabilities.firefox(
    proxy: proxy
  )

  Capybara::Selenium::Driver.new(app, {
    browser: :firefox,
    desired_capabilities: desired_caps,
    ...
  })
end

driver = Capybara::Session.new(:selenium_headless)
driver.visit('https://api.ipify.org')

browser_options如果您删除所有代理业务(并放弃),该代码在本地以及在 Heroku 上都可以正常工作。

Heroku 上的此代码错误:

Selenium::WebDriver::Error::UnknownError (Reached error page: about:neterror?e=proxyConnectFailure&u=https%3A//api.ipify.org/&c=UTF-8&f=regular&d=Firefox%20is%20configured%20to%20use%20a%20proxy%20server%20that%20is%20refusing%20connections.)

该 URL 在本地如下所示:

代理服务器拒绝连接

当我打开 Selenium 调试日志Selenium::WebDriver.logger.level = :debug时,我得到:

>>> http://127.0.0.1:4444/session/84439a4e-a26d-41f3-ae30-f61f508ca569/url | {"url":"https://api.ipify.org"}

{"value":{"error":"unknown error","message":"Reached error page: about:neterror?e=proxyConnectFailure&u=https%3A//api.ipify.org/&c=UTF-8&f=regular&d=Firefox%20is%20configured%20to%20use%20a%20proxy%20server%20that%20is%20refusing%20connections.","stacktrace":"WebDriverError@chrome://marionette/content/error.js:179:5\nUnknownError@chrome://marionette/content/error.js:484:5\nhandleReadyState@chrome://marionette/content/listener.js:273:21\nhandleEvent@chrome://marionette/content/listener.js:242:14\n"}

我的代理选项的记录大致如下"proxy":{"httpProxy":"207.000.00.00:0000","proxyType":"manual","sslProxy":"207.000.00.00:0000"}

在此先感谢您的帮助!

更新:我正在使用的代理服务与 Capybara 一起在外面工作。我用OpenURI.

标签: seleniumherokucapybarahttp-proxygeckodriver

解决方案


推荐阅读