gpt4 book ai didi

Ruby:Phantom.js 在特定站点上被阻止?

转载 作者:数据小太阳 更新时间:2023-10-29 06:43:49 27 4
gpt4 key购买 nike

我正在使用 capybara poltergeist 来自动化 tumblr.com 上的一个小脚本

我的脚本在我的 chrome 驱动程序上运行良好。我的 poltergeist 驱动程序加载所有其他网站都很好,但由于某种原因,当我尝试加载 tumblr 时抛出 Capybara::Poltergeist::StatusFailError .

复制步骤:

$ 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?

我试图设置我所有的标题来查看我的谷歌浏览器的请求,但这似乎也没有解决它。有人有什么建议吗?

最佳答案

问题与 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")

稍微检查一下解决方法是在 phantom 中使用 --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

上类。

引用资料:

关于Ruby:Phantom.js 在特定站点上被阻止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25706563/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com