【问题标题】:Blacklist URLs with headless Chrome使用无头 Chrome 将 URL 列入黑名单
【发布时间】:2018-07-26 10:47:02
【问题描述】:

我正在尝试在我的规范中阻止 URL,以实现我在使用 capybara_webkit 时所做的事情:

Capybara::Webkit.configure do |config|
  config.block_url("*google*")
  config.allow_url('*my_website.com')
end

阅读this article后,我尝试做类似的事情:

require 'webmock/rspec'

module WebmockConfig
  def self.default_disabled_urls
    [
      '*google*'
    ]
  end
end

WebMock.disable_net_connect!(allow_localhost: true)
WebMock.disable_net_connect!(allow: WebmockConfig.default_disabled_urls)

但我得到了

真正的 HTTP 连接被禁用。未注册请求:POST http://127.0.0.1/session

即使这应该由WebMock.disable_net_connect!(allow_localhost: true) 解决。

在没有WebMock.disable_net_connect!(allow: WebmockConfig.default_disabled_urls) 的情况下运行规范时,一切正常。

【问题讨论】:

    标签: ruby testing rspec capybara webmock


    【解决方案1】:

    capybara-webkit 白/黑名单会影响浏览器发出的请求,而 WebMock 只能影响您的应用发出的请求。这意味着WebMock 对你想要的东西没有用,因为它实际上不会阻止你的浏览器从谷歌等加载任何东西。要在使用 selenium 驱动程序时做到这一点,你需要使用像puffing-billy 这样的可编程代理,这将允许您可以自定义浏览器发出的任何匹配请求的响应。

    要使用 headless chrome 和 puffing_billy 配置驱动程序,您可以执行类似的操作

    Capybara.register_driver :headless_chrome do |app|
     browser_options = ::Selenium::WebDriver::Chrome::Options.new
     browser_options.headless!
     browser_options.add_argument("--proxy-server=#{Billy.proxy.host}:#{Billy.proxy.port}")
     Capybara::Selenium::Driver.new(app, browser: :chrome, options: browser_options)
    end
    

    您是否需要任何其他选项取决于您的系统配置等,但您应该能够通过查看当前的驱动程序注册来判断。

    【讨论】:

    【解决方案2】:

    allow_localhost: true 设置被allow: WebmockConfig.default_disabled_urls 覆盖,您必须使用这两种设置调用WebMock.disable_net_connect! 一次,或者将'localhost', '127.0.0.1' 条目添加到self.default_disabled_urls

    【讨论】:

    • 嘿 @narze 我知道如何通过添加 URL 数组在 WebMock.disable_net_connect!(allow: 中添加多个 url,但是如何组合 allow_localhostallow
    • @fabersky 你可以试试WebMock.disable_net_connect!(allow: [...], allow_localhost: true) 看看它是否有效。如果没有,手动将 localhost ips 添加到 allow 数组中
    • 无论如何,即使我以这种方式实现了这一目标,我认为这不会是预期的结果。我想要实现的只是阻止来自列入黑名单的 URL 的请求。这样,一旦我的规范从其中一个 URL 获得请求,它们可能会失败。
    猜你喜欢
    • 2019-03-12
    • 2020-01-22
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    相关资源
    最近更新 更多