首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打开速度慢于web导航器

打开速度慢于web导航器
EN

Stack Overflow用户
提问于 2017-02-27 23:00:24
回答 1查看 75关注 0票数 1

我目前正在努力废除以下网站:http://mangafox.me,并且有开放的问题:

下面的代码对于大多数站点都很好,但是我对mangafox有问题:

代码语言:javascript
复制
require 'open-uri'
html = open('http://mangafow.me', 'User-Agent' => "Ruby/#{RUBY_VERSION}")

我从https://google.com和大多数被测试的站点得到了非常快速的响应,但是继续在http://mangafox.me上获得OpenTimeout异常,并且有时只获得html页面(经过多次尝试)。

然而,导航器工作正常,没有任何问题(即使在清空缓存时)快速显示网站。

我目前正在使用Ruby2.4.0,并且在两个不同的位置尝试过archlinux ( manjaro )和debian ( windows 10中的ubuntu )的代码(以确保我的IP不是问题)。

我还在每个打开之间放置了一个睡眠(0.5秒),以避免被过多的请求阻塞。

我对curb的创业板也有同样的问题。

代码语言:javascript
复制
require 'curb'
html = Curl.get(link)

既然导航器(试过firefox和for )工作得很好,我应该试着模仿它们(例如,通过模仿它们)吗?还是有更简单的解决方案( gem /其他方式使用open /.)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-28 20:41:08

首先,您并没有清楚地确定您的浏览器比ruby open-uri更快。

无论如何,有几种可能性:

  1. 您的浏览器正在本地缓存页面(您最近的评论意味着情况并非如此,尽管新安装的铬可能使用的是open不知道的共享缓存。)
  2. 可以想象,有一个上游缓存是基于用户代理的缓存,尽管我不知道这样的事情。
  3. 您访问的网站支持打开uri不支持的协议,例如HTTP/2或SPDY。
  4. 该网站基于用户代理为不同的内容/协议服务。
  5. 您正在受到流量限制(可能是因为您的用户代理或您的位置-您没有提到红宝石和浏览器是否运行在同一台机器上)。

第一批测试(在您了解了如何确定“速度”与浏览器之间的关系之后)将是尝试使用与浏览器相同的用户代理,并可能让浏览器使用您在ruby中使用的相同的用户代理。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42497356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档