如何绕过网站上的 "unusual traffic" 检测?
How to bypass this "unusual traffic" detection on website?
出于道德原因,我想指出,此处提到的网站内容完全免费提供,无需注册,我没有违反任何规则,也没有违反任何法律。
我通常为 私人 用途开发 web-scrapers(我的意思是没有经济预期),原因之一是:它每天为我节省很多时间。
虽然我正在抓取当前站点,但当我连续请求他们的 30 个 URL 时,服务器将我的连接标识为 "unusual traffic" 并且出现 Google 的重新验证:
我想知道我应该实施什么方法来避免重新验证并且仍然可以毫无问题地重定向网址。
唯一的条件是:没有proxy/VPN使用。
这是我从 http headers:
中捕获的内容
要求:
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.
使用 x-forwared-for header 随机 ipv4 和代理。
发送DNTheader禁用(0).
执行下一个请求的随机等待间隔,在 3 到 10 秒之间。
我发现了什么?
非常长non-viable 等待间隔大约 10 分钟,从请求到请求,解决了问题。
连续执行 29 个请求,然后等待 10 分钟执行第 30 个请求并不能解决问题。
您正试图做网站不想做的事情。你想在道德上这样做。我建议您写下您的案例并直接提交给网站所有者。我看到 plixid.com 有一个 "contact us" 按钮(页面右上角)。
人一般都是讲道理的。如果您的请求有充分的理由,并且他们可以毫不费力地进行更改,那么他们很可能会帮助您。
我仍然找不到规范的 "How to write a web scraper" 问答,这里是:让你的代码像人一样行事 .您必须记住,构建网站的人不希望他们的内容被抓取,因此任何让您看起来像机器人的东西都可以被确定并用来对付您。
这意味着首先,您的用户代理必须像浏览器一样运行。这就像浏览器一样正确填充请求 headers,读取整个响应并对其执行操作(如果它包含 HTML)。
如果响应设置了 cookie,请存储它们并在后续请求中使用它们。
如果主文档链接到接收文档中的更多资源(同样,如果 HTML),则也获取这些资源。
如果其中一个资源(嵌入在 HTML 中或从另一个文件链接)是脚本,您可能需要执行该脚本。有些站点使用 pingback 脚本,有些站点使用输入检测。没有 pingback,没有鼠标事件:你是一个机器人。
智能地限制您的请求。一秒钟五个请求是可疑的,但恰好每五秒一个请求也是可疑的。
所有这些都是微不足道的。如果你能想到,站点(或库)的开发者也已经想到了。这通常是反复试验的问题。没有灵丹妙药,因为每个网站都可以在他们使用的库中拥有自定义代码或不同的检测设置。
话虽这么说,但为了说明这个故事的寓意:如果一个网站确实表现出哪怕是最轻微的不情愿被抓取,不要抓取它。
出于道德原因,我想指出,此处提到的网站内容完全免费提供,无需注册,我没有违反任何规则,也没有违反任何法律。
我通常为 私人 用途开发 web-scrapers(我的意思是没有经济预期),原因之一是:它每天为我节省很多时间。
虽然我正在抓取当前站点,但当我连续请求他们的 30 个 URL 时,服务器将我的连接标识为 "unusual traffic" 并且出现 Google 的重新验证:
我想知道我应该实施什么方法来避免重新验证并且仍然可以毫无问题地重定向网址。
唯一的条件是:没有proxy/VPN使用。
这是我从 http headers:
中捕获的内容要求:
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.
使用 x-forwared-for header 随机 ipv4 和代理。
发送DNTheader禁用(0).
执行下一个请求的随机等待间隔,在 3 到 10 秒之间。
我发现了什么?
非常长non-viable 等待间隔大约 10 分钟,从请求到请求,解决了问题。
连续执行 29 个请求,然后等待 10 分钟执行第 30 个请求并不能解决问题。
您正试图做网站不想做的事情。你想在道德上这样做。我建议您写下您的案例并直接提交给网站所有者。我看到 plixid.com 有一个 "contact us" 按钮(页面右上角)。
人一般都是讲道理的。如果您的请求有充分的理由,并且他们可以毫不费力地进行更改,那么他们很可能会帮助您。
我仍然找不到规范的 "How to write a web scraper" 问答,这里是:让你的代码像人一样行事 .您必须记住,构建网站的人不希望他们的内容被抓取,因此任何让您看起来像机器人的东西都可以被确定并用来对付您。
这意味着首先,您的用户代理必须像浏览器一样运行。这就像浏览器一样正确填充请求 headers,读取整个响应并对其执行操作(如果它包含 HTML)。
如果响应设置了 cookie,请存储它们并在后续请求中使用它们。
如果主文档链接到接收文档中的更多资源(同样,如果 HTML),则也获取这些资源。
如果其中一个资源(嵌入在 HTML 中或从另一个文件链接)是脚本,您可能需要执行该脚本。有些站点使用 pingback 脚本,有些站点使用输入检测。没有 pingback,没有鼠标事件:你是一个机器人。
智能地限制您的请求。一秒钟五个请求是可疑的,但恰好每五秒一个请求也是可疑的。
所有这些都是微不足道的。如果你能想到,站点(或库)的开发者也已经想到了。这通常是反复试验的问题。没有灵丹妙药,因为每个网站都可以在他们使用的库中拥有自定义代码或不同的检测设置。
话虽这么说,但为了说明这个故事的寓意:如果一个网站确实表现出哪怕是最轻微的不情愿被抓取,不要抓取它。