Ruby 打开速度比web导航器慢

Ruby 打开速度比web导航器慢,ruby,open-uri,Ruby,Open Uri,我目前正在努力废弃以下网站:并且我的open存在问题: 以下代码适用于大多数站点,但我对mangafox有问题: require 'open-uri' html = open('http://mangafow.me', 'User-Agent' => "Ruby/#{RUBY_VERSION}") 我从和大多数测试站点得到了非常快速的响应,但是不断地出现OpenTimeout异常,有时只会得到html页面(经过多次尝试) 但是,导航器工作正常,并且没有问题(即使在清空缓存时)快速显示网站

我目前正在努力废弃以下网站:并且我的open存在问题:

以下代码适用于大多数站点,但我对mangafox有问题:

require 'open-uri'
html = open('http://mangafow.me', 'User-Agent' => "Ruby/#{RUBY_VERSION}")
我从和大多数测试站点得到了非常快速的响应,但是不断地出现OpenTimeout异常,有时只会得到html页面(经过多次尝试)

但是,导航器工作正常,并且没有问题(即使在清空缓存时)快速显示网站

我目前正在使用Ruby 2.4.0,并在两个不同位置的archlinux(manjaro)和debian(windows 10中的ubuntu)上尝试了该代码(以确保我的IP不是问题)。
我还将睡眠(0.5秒)设置在每次打开之间,以避免因执行太多请求而被阻止

我也有同样的问题,与
遏制
宝石

require 'curb'
html = Curl.get(link)

既然导航器(试用过的firefox和chromium)工作得很好,我应该试着模仿它们吗(比如通过模仿一个)?或者有更简单的解决方案(gem/使用open/…)吗?

首先,你没有弄清楚你是如何确定你的浏览器比ruby open uri更快的

无论如何,有许多可能性:

  • 您的浏览器正在本地缓存页面(您最近的评论暗示情况并非如此,尽管新安装的chromium可能正在使用OpenURI不知道的共享缓存
  • 可以想象,有一个上游缓存是基于用户代理的缓存,尽管我不知道这样的事情
  • 您正在访问的网站支持OpenURI不支持的协议,如HTTP/2或SPDY
  • 该网站基于用户代理提供不同的内容/协议
  • 您的流量受到限制(可能是因为您的用户代理或您的位置-您没有提到ruby和浏览器是否在同一台机器上运行)

  • 第一个测试之一(在您清楚如何确定“速度”与浏览器的对比后)将尝试使用与您的浏览器相同的用户代理,也可能让浏览器使用与您在ruby中使用的相同的用户代理。

    尝试使用已知的快速链接,如
    http://example.com
    。工作正常。我只针对mangafox出现问题。测试前是否尝试清空浏览器缓存?Beca使用此差异可能只是缓存的结果。对于所有用户代理来说,站点可能都很慢,而您只看到了缓存在浏览器中的差异。是的,使用新安装的chromium而不是Firefox,您可能会因为请求太多而受到速率限制。非常感谢anwser,这里有很多事情我确实没有检查。我将用我如何确定速度的新信息编辑问题。我如何获得网站使用的协议?我如何更改用户代理?用你给我的信息更新问题(谢谢)。其中一些是不同的问题,可能应该以这样的方式发布(在彻底的谷歌搜索之后)。您可以直接在源代码中更改用户代理,您可以在其中指定它。:)我已经这样做了,但没有用,可能是因为我不知道要放什么(尝试复制firefor发送的内容)这将是一个很好的测试。如果你将它设置为firefox用户代理,并且它没有改变任何东西,那么速度问题可能不是基于用户代理的。