PhantomJS、Capybara、Poltergeist 无法访问服务器
PhantomJS, Capybara, Poltergeist failed to reach server
我是第一次使用 poltergeist,所以我真的不知道我在做什么,但我在网上找不到任何解决方案。请告诉我是否缺少任何信息。
错误信息:
Capybara::Poltergeist::StatusFailError: Request failed to reach
server, check DNS and/or server status
此问题不会发生在生产环境中,只会发生在开发和暂存环境中。
这行代码造成了麻烦
phantomjs_options: ['--ignore-ssl-errors=yes', '--ssl-protocol=any', '--load-images=no', '--proxy=localhost:9050', '--proxy-type=socks5']
在没有“--proxy=localhost:9050”的情况下,一切在每个环境中都能完美运行,但我不想删除它,以防它对生产至关重要。
我还注意到 staging/development 上没有 9050 端口侦听,但在生产环境中有一个
完整配置代码部分 (capybara_drivers.rb):
Capybara.register_driver :polt do |app|
Capybara::Poltergeist::Driver.new(
app,
js_errors: false, # break on js error
timeout: 180, # maximum time in second for the server to produce a response
debug: false, # more verbose log
window_size: [1280, 800], # not responsive, used to simulate scroll when needed
inspector: false, # use debug breakpoint and chrome inspector,
phantomjs_options: ['--ignore-ssl-errors=yes', '--ssl-protocol=any', '--load-images=no', '--proxy=localhost:9050', '--proxy-type=socks5']
)
end
听起来您的生产环境需要通过 socks5 代理建立出站连接,而您的其他环境则不需要。您需要根据环境进行配置
Capybara.register_driver :polt do |app|
phantomjs_options = ['--ignore-ssl-errors=yes', '--ssl-protocol=any', '--load-images=no']
phantomjs_options.push('--proxy=localhost:9050', '--proxy-type=socks5') if Rails.env.production?
Capybara::Poltergeist::Driver.new(
app,
js_errors: false, # break on js error
timeout: 180, # maximum time in second for the server to produce a response
debug: false, # more verbose log
window_size: [1280, 800], # not responsive, used to simulate scroll when needed
inspector: false, # use debug breakpoint and chrome inspector,
phantomjs_options: phantomjs_options
)
end
我是第一次使用 poltergeist,所以我真的不知道我在做什么,但我在网上找不到任何解决方案。请告诉我是否缺少任何信息。
错误信息:
Capybara::Poltergeist::StatusFailError: Request failed to reach server, check DNS and/or server status
此问题不会发生在生产环境中,只会发生在开发和暂存环境中。
这行代码造成了麻烦
phantomjs_options: ['--ignore-ssl-errors=yes', '--ssl-protocol=any', '--load-images=no', '--proxy=localhost:9050', '--proxy-type=socks5']
在没有“--proxy=localhost:9050”的情况下,一切在每个环境中都能完美运行,但我不想删除它,以防它对生产至关重要。
我还注意到 staging/development 上没有 9050 端口侦听,但在生产环境中有一个
完整配置代码部分 (capybara_drivers.rb):
Capybara.register_driver :polt do |app|
Capybara::Poltergeist::Driver.new(
app,
js_errors: false, # break on js error
timeout: 180, # maximum time in second for the server to produce a response
debug: false, # more verbose log
window_size: [1280, 800], # not responsive, used to simulate scroll when needed
inspector: false, # use debug breakpoint and chrome inspector,
phantomjs_options: ['--ignore-ssl-errors=yes', '--ssl-protocol=any', '--load-images=no', '--proxy=localhost:9050', '--proxy-type=socks5']
)
end
听起来您的生产环境需要通过 socks5 代理建立出站连接,而您的其他环境则不需要。您需要根据环境进行配置
Capybara.register_driver :polt do |app|
phantomjs_options = ['--ignore-ssl-errors=yes', '--ssl-protocol=any', '--load-images=no']
phantomjs_options.push('--proxy=localhost:9050', '--proxy-type=socks5') if Rails.env.production?
Capybara::Poltergeist::Driver.new(
app,
js_errors: false, # break on js error
timeout: 180, # maximum time in second for the server to produce a response
debug: false, # more verbose log
window_size: [1280, 800], # not responsive, used to simulate scroll when needed
inspector: false, # use debug breakpoint and chrome inspector,
phantomjs_options: phantomjs_options
)
end