使用poltergeist与代理?

Rya*_*yan 3 ruby capybara phantomjs poltergeist

我正在使用PhantomJS和poltergeist来模拟浏览器,但是我不确定如何在代码中指定要使用的代理:

require 'capybara'
require 'capybara/dsl'
require 'capybara/poltergeist'

task :experiment => :environment do
  Capybara.run_server = false
  Capybara.current_driver = :poltergeist
  Capybara.app_host = "http://something.com"
  include Capybara::DSL

  # set_proxy('12.13.14.15', '4521')

  visit('posts')
  page.include?('foo')
end
Run Code Online (Sandbox Code Playgroud)

另外,由于某些原因,我page在使用poltergeist时会得到未定义的方法,有人可以提供建议吗?

jon*_*ton 8

您需要将--proxy选项传递给PhantomJS,请参阅API文档

有了鬼驱人,你可以使用:phantomjs_options配置选项来指定PhantomJS命令行选项.

把它放在一起:

Capybara.register_driver :poltergeist do |app|
  Capybara::Poltergeist::Driver.new(app, phantomjs_options: ["--proxy=12.13.14.15:4521"])
end
Run Code Online (Sandbox Code Playgroud)