2014-09-07 4 views
11

tumblr.comRuby : Phantom.js가 특정 사이트에서 차단 되었습니까? 나는에 작은 스크립트를 자동화하는 카피 바라의 심령을 사용하고

내 스크립트 내 크롬 드라이버 .. 그리고 내 심령 드라이버가로드 다른 모든 웹 사이트 잘으로 잘 작동하지만 몇 가지 이유로 Capybara::Poltergeist::StatusFailError을 던졌습니다 때 tumblr을로드하십시오. 재생을위한

단계 :

$ brew install phantomjs 
$ gem install capybara 
$ gem install poltergeist 
$ gem install selenium-webdriver 
$ irb 


require 'capybara/poltergeist' 

module Drivers 
    class Poltergeist < Capybara::Poltergeist::Driver 
    def needs_server? 
     false 
    end 
    end 
end 

Capybara.register_driver :poltergeist_errorless do |app| 
    Drivers::Poltergeist.new(app, js_errors: false, timeout: 10000, phantomjs_options: ['--load-images=no', '--ignore-ssl-errors=yes']) 
end 

session = Capybara::Session.new(:poltergeist_errorless) 
session.visit('https://google.com') # This works fine 
session.visit('https://tumblr.com') # This does not work? 

나는 내 구글 크롬의 요청을 찾기 위해 내 모든 헤더를 설정하려고했으나 그 또한 문제를 해결하지 않는 것 같습니다. 누구든지 어떤 제안이 있습니까?

+0

난처한. 폴터 지스트를 디버깅하는 것은 꽤 어렵지만 tumblr을 방문하는 이유가'{ 'status'=> 'fail'}'이되는 이유를 알아낼 수 없습니다. 셀레늄에서 잘 작동합니다 ... – Anthony

+0

그것을 들여다 주셔서 감사합니다, 정말 고마워요. 나는 이것이 왜 그렇게 어려운 문제인지 이해할 수 없다. – BananaNeil

답변

15

문제는 phantomjs SSL 핸드 셰이크 실패와 관련이 있습니다. 당신은 당신이 볼, 내 gist을 가지고 phantomjs으로 실행할 수 있습니다

[cut] 
= onResourceError() 
    - unable to load url: "https://www.tumblr.com/" 
    - error code: 6, description: SSL handshake failed 
= onResourceReceived() 
    id: 3, stage: "end", response: {"contentType":null,"headers":[],"id":3,"redirectURL":null,"stage":"end","status":null,"statusText":null,"time":"2014-09-16T12:06:05.547Z","url":"https://www.tumblr.com/"} 
= onLoadFinished() 
    status: fail 
DONE WITH fail WebPage(name = "WebPage") 

대안으로 가상으로 --ssl-protocol=any을 사용하는 것입니다 조금을 확인, 코드가 될 수 있도록 :

Capybara.register_driver :poltergeist_errorless do |app| 
    Drivers::Poltergeist.new(app, js_errors: false, timeout: 10000, phantomjs_options: ['--load-images=no', '--ignore-ssl-errors=yes', '--ssl-protocol=any']) 
end 

를 해결하려면.

참고 :

+0

이 엔리코에게 감사드립니다! – etusm

+0

저는 여전히 랩탑에서이 문제에 직면 해 있습니다. 그것은 임의의 실패입니다. – Chamnap

+0

@Chamnap "프로덕션"이란 무엇을 의미합니까? Politergeist를 '--ignore-ssl-errors = yes'및 '--ssl-protocol = any'로 초기화 했습니까? –