Using poltergeist with a proxy?

后端 未结 2 814
臣服心动
臣服心动 2021-01-14 09:10

I\'m using PhantomJS and poltergeist to emulate a browser, however I\'m not sure how to specify a proxy to use in the code:

require \'capybara\'
require \'ca         


        
相关标签:
2条回答
  • 2021-01-14 09:54

    Try to run it in controller action, so when it will control through controller level it will update the new proxy ip. Like this way

    def index
        options = {
           :js_errors => false,
           :debug => true,
           :phantomjs => "/Users/Umer/Desktop/phantomjs-2.0.0-macosx/bin/phantomjs",
           #:phantomjs_options => ["--proxy=#{proxy.ip}:#{proxy.port}", "--proxy-auth=#{proxy.username}:#{proxy.password}"]
           :phantomjs_options => ["--proxy=88.150.136.178:3128"]
        }
        Capybara.register_driver :poltergeist do |app|
          Capybara::Poltergeist::Driver.new(app, options)
        end
        Capybara.default_driver = :poltergeist
        Capybara.javascript_driver = :poltergeist
        Capybara.default_wait_time = 20
        Capybara.ignore_hidden_elements = true
        Capybara.run_server = false
        Capybara.app_host = 'http://mxtoolbox.com'
    
    
        session = Capybara::Session.new(:poltergeist)
    
        session.visit('/WhatIsMyIP/')
    
        file = File.new("test3.html", "w+")
        file.write(session.body)
        file.close
    
        session.driver.quit
    end
    
    0 讨论(0)
  • 2021-01-14 10:08

    You need to pass the --proxy option to PhantomJS, see the API docs

    With Poltergeist, you can use the :phantomjs_options configuration option to specify command line options for PhantomJS.

    Putting it together:

    Capybara.register_driver :poltergeist do |app|
      Capybara::Poltergeist::Driver.new(app, phantomjs_options: ["--proxy=12.13.14.15:4521"])
    end
    
    0 讨论(0)
提交回复
热议问题