【问题标题】:anti crawler - Python反爬虫——Python
【发布时间】:2016-09-06 03:48:58
【问题描述】:

我知道用漂亮的汤模块编写 Python 爬虫。现在我想检测是否有人抓取了我的网站。怎么做。有人可以指出我的伪代码或源代码。基本上我想在 python 中编写反爬虫。

【问题讨论】:

  • 这根本做不到。您可以尝试阻止最简单的方法(阻止用户代理、监视快速请求、使用 javascript 注入等),但您无法阻止它。

标签: python python-2.7 python-3.x web-crawler google-crawlers


【解决方案1】:

这很难,但可以做一些事情来过滤爬虫。

授权

仅向授权用户显示页面。

强验证码

如果你的验证码系统足够强大,可以抗一部分爬虫。

用户代理

来自爬虫的请求可能没有设置用户代理,因此您可以阻止那些没有用户代理(或没有正确的用户代理)的请求。

请求频率

一些爬虫请求您的网站比人类更快,阻止他们的 IP。

JS 加载

使用javascript加载你的html,正常抓取只会在javascript加载完成之前获取基础html。

临时网址

您可以使用时间戳(或其他方式)对您的网址进行编码,并将网址公开给用户进行访问,从而使某些爬虫无法找到入口。

或任何其他

....

【讨论】:

    【解决方案2】:

    假设不是所有的爬虫都是讨厌的呢?大多数人都尊重robots directives。当然,您可以实施各种启发式方法来阻止机器人,但您要做的第一件事就是拥有

    User-agent: *
    Disallow: /
    

    在您网站根目录的 robots.txt 中。

    那么,如果你真的想让那些不关注 robots.txt 的人变得困难,那么所有链接都使用 Javascript:不能 100% 保证阻止机器人,但这会让他们的生活变得更加困难。

    【讨论】: