出于道德原因,我想说的是,这里提到的网站内容是完全免费提供的,不需要注册,我也没有违反任何法律规则。
我通常会为私人使用开发网络抓取工具(我的意思是没有经济预期),原因之一是:它每天为我节省了大量时间。
在当前网站上我抓不过,当我连续请求30个网址时,服务器将我的连接识别为"异常流量"并且出现了谷歌的回收:
我想知道我应该采用什么方法来避免重新捕获并仍然没有问题重定向网址。
唯一的条件是:没有代理/ VPN使用。
这是我从http标题中捕获的内容:
请求:
GET /rd/TdcfliKN0j9dT-bIMpo-GynUNR63kfnDsJn_YOP8uurTmlvy7C3oKnJtb1Mi-CI_fGsHJ72O49dM1IzXDCPNuPf3OfEb21w5hkGdV8ny__2u2pKo6yBgMbPCdAF-ti1uomfp3mWcB_K9M8PitpDMkg../x-Mad-VYWQz_lpphY5LN_fnkid__zqmI-i5AYJgziAl93kYhdvtlwVijRDmSGIifl-ouZki2eTWit7zi38raKiYkKtPqKSWftIfwFqIHD0bXua4z_LcrHQOnKwCWSNp0kJKcowVQSza8XJ88-TWJfA.. HTTP/1.1
Host r.plixid.com
User-Agent Mozilla/5.0 (Windows NT 6.3; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding gzip, deflate
Referer http://plixid.com/2015/12/29/vinter-sleep-die-cold-winter-2015-mp3/
Cookie __cfduid=...; PHPSESSID=...; _ga=...; _gat=1
DNT 1
Connection keep-alive
响应:
HTTP/1.1 301 Moved Permanently
Date Tue, 29 Dec 2015 11:42:47 GMT
Content-Type text/html; charset=UTF-8
Transfer-Encoding chunked
Connection keep-alive
X-Powered-By PHP/5.5.9-1ubuntu4.11
Cache-Control private, must-revalidate
Location http://novafile.com/0ubisyq06l8s
Pragma no-cache
Expires -1
Server cloudflare-nginx
CF-RAY 25c53e59f4d70db7-MAD
我尝试了什么?
使用随机 user-agents 。
随机ipv4和代理使用 x-forwared-for 标头。
发送 DNT 标头已停用(0)。
随机等待间隔,可以在3到10秒之间完成下一次请求。
我发现了什么?
从请求到请求,大约10分钟的非活动等待时间非常长,解决了问题。
连续29次请求然后等待10分钟才能完成第30次请求并不能解决问题。
答案 0 :(得分:6)
我仍然找不到规范的“如何编写网络刮刀” Q& A,这里是:让您的代码像人类一样。你必须记住构建网站的人不希望他们的内容被刮掉,所以任何使你看起来像机器人的东西都可以被确定并用来对付你。
这首先意味着您的用户代理必须像浏览器一样运作。这样可以像浏览器一样正确填充请求标题,读取整个响应并对其进行操作(如果它包含HTML)。
如果响应设置了cookie,请存储这些cookie并在连续请求中使用它们。
如果主文档链接到收到的文档中的更多资源(同样,如果是HTML),那么也会获取这些资源。
如果其中一个资源(嵌入在HTML中或从其他文件链接)是脚本,则可能需要执行该脚本。有些站点使用pingback脚本,有些站点使用输入检测。没有pingback,没有鼠标事件:你是一个机器人。
智能地阻止您的请求。一秒钟内有五个请求是可疑的,但每五秒钟就有一个请求。
所有这些都是微不足道的。如果你能想到它,那么网站(或图书馆)的开发者也会想到它。这通常是一个反复试验的问题。没有灵丹妙药,因为每个站点都可以在他们使用的库中拥有自定义代码或不同的检测设置。
话虽如此,并且为了解决这个故事的道德:如果一个网站确实显示出最轻微的不情愿被刮,不要刮它。
答案 1 :(得分:5)
您正在尝试执行该网站不想要的操作。你想要符合道德规范。我建议您写下您的案例并将其直接呈现给网站所有者。我看到plixid.com有一个"联系我们"按钮(页面右上角)。
人们通常是合理的。如果您有充分的理由要求您,并且他们可以轻松地进行更改,那么他们很可能会帮助您。