2013-04-29 6 views
3

나는 그러나 내가 코드에서 사용하는 프록시를 지정하는 방법을 잘 모르겠어요, 브라우저를 에뮬레이트하는 PhantomJS과 심령을 사용하고 있습니다 :프록시가있는 폴터 가이스트를 사용하고 있습니까?

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 

또한, 어떤 이유로, 내가 정의되지 않은 방법을 얻을 page 때 고위 간부를 사용하여, 아무도 조언 할 수 있습니까?

답변

8

당신은 심령으로 the API docs

를 참조 PhantomJS에 --proxy 옵션을 통과해야, 당신은 PhantomJS의 명령 줄 옵션을 지정 the :phantomjs_options configuration option를 사용할 수 있습니다. 컨트롤러 액션에서 실행하는

Capybara.register_driver :poltergeist do |app| 
    Capybara::Poltergeist::Driver.new(app, phantomjs_options: ["--proxy=12.13.14.15:4521"]) 
end 
+0

요청에 따라 어떻게 할 수 있습니까? – Hendrik

1

시도를, 그래서 컨트롤러의 수준을 제어 할 때 새로운 프록시 IP를 업데이트합니다 :

함께 퍼팅. 이런 식으로

 
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 
관련 문제