本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

以下文章来源于Python实用宝典 ,作者Python实用宝典

是否担心别人将你的博客文章全部爬下来?

是否担心高频率爬虫导致网站瘫痪?

别担心,现在有一个Python写的神器——crawlerdetect,帮助你检测爬虫,保障网站的正常运转。

1.准备

Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),准备开始输入命令安装依赖。

在终端输入以下命令安装我们所需要的依赖模块:

pip install crawlerdetect

看到 Successfully installed xxx 则说明安装成功。

2.使用方法

它可以通过user-agent、headers等请求头识别爬虫或机器人。

因此,你可以传递两种参数。第一种,使用user-agent检测机器人:

from crawlerdetect import CrawlerDetect
crawler_detect = CrawlerDetect(user_agent='Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit (KHTML, like Gecko) Mobile (compatible; Yahoo Ad monitoring; https://help.yahoo.com/kb/yahoo-ad-monitoring-SLN24857.html)')
crawler_detect.isCrawler()
# 如果是机器人,这条语句返回True

第二种识别方式会用上全部headers参数,这种方式比单纯用user-agent精准,因为它判断的依据更加全面。

from crawlerdetect import CrawlerDetect
crawler_detect = CrawlerDetect(headers={'DOCUMENT_ROOT': '/home/test/public_html', 'GATEWAY_INTERFACE': 'CGI/1.1', 'HTTP_ACCEPT': '*/*', 'HTTP_ACCEPT_ENCODING': 'gzip, deflate', 'HTTP_CACHE_CONTROL': 'no-cache', 'HTTP_CONNECTION': 'Keep-Alive', 'HTTP_FROM': 'googlebot(at)googlebot.com', 'HTTP_HOST': 'www.test.com', 'HTTP_PRAGMA': 'no-cache', 'HTTP_USER_AGENT': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36', 'PATH': '/bin:/usr/bin', 'QUERY_STRING': 'order=closingDate', 'REDIRECT_STATUS': '200', 'REMOTE_ADDR': '127.0.0.1', 'REMOTE_PORT': '3360', 'REQUEST_METHOD': 'GET', 'REQUEST_URI': '/?test=testing', 'SCRIPT_FILENAME': '/home/test/public_html/index.php', 'SCRIPT_NAME': '/index.php', 'SERVER_ADDR': '127.0.0.1', 'SERVER_ADMIN': 'webmaster@test.com', 'SERVER_NAME': 'www.test.com', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.1', 'SERVER_SIGNATURE': '', 'SERVER_SOFTWARE': 'Apache', 'UNIQUE_ID': 'Vx6MENRxerBUSDEQgFLAAAAAS', 'PHP_SELF': '/index.php', 'REQUEST_TIME_FLOAT': 1461619728.0705, 'REQUEST_TIME': 1461619728})
crawler_detect.isCrawler()
# 如果是机器人,这条语句返回True

你还可以识别相应爬虫的名字(如果有的话),通过这种方式,你能给一些著名的爬虫(如baiduspider、googlebot)添加白名单,不进行拦截。

from crawlerdetect import CrawlerDetect
crawler_detect = CrawlerDetect()
crawler_detect.isCrawler('Mozilla/5.0 (compatible; Sosospider/2.0; +http://help.soso.com/webspider.htm)')
# 如果是机器人,这条语句返回True
crawler_detect.getMatches()
# Sosospider

有了这个工具,我们就可以实现实时的爬虫封禁:

首先,你要实时监控网站上的http请求,检测其对应的headers.

其次,如果识别到该请求是机器人(爬虫)发出的,就可将其IP记录下来。

最后,将IP加入到Nginx或Apache的动态黑名单中,实现实时的爬虫封禁。

这一套流程我还没有试验过,大家有兴趣可以试试,理论上可行。

本文首发于python黑洞网,csdn同步更新

是否担心别人将你的博客文章全部爬下来?3行代码教你检测爬虫相关推荐

  1. Python爬虫入门实战1:获取CSDN个人博客文章目录及阅读量数据

    ☞ ░ 老猿Python博文目录:https://blog.csdn.net/LaoYuanPython/article/details/98245036 ░ 一.引言 有阵子博客的访问量出现了比较大 ...

  2. 如何快速转载别人的CSDN博客文章并附带格式与图片

    1.问题背景 最近在学习Git过程中想了解git reflog命令的高级用法与命令详解,于是找到了这几篇特别优秀的文章: [1]使用git reflog 命令来查看历史提交记录并使用提交记录恢复已经被 ...

  3. 【工具】复制别人的CSDN博客文章到本地

    复制别人的CSDN博客文章到本地 操作流程 1.打开自己喜欢的博客的文章,然后同时按shift+ctrl+I三个键,打开开发者工具. 2.选择elements选项,按下面图片选择(chorme浏览器) ...

  4. 将博客文章转变为电子书

    中国站长站(mb5u.com)11月24日消息:自己的博客如何保存,如何更好地展示出来?近期,javaeye网站推出了一项新的功能,把博客制作成电子书籍. 以下,是javaeye负责人对该功能的介绍: ...

  5. 技术文档的撰写_如何撰写出色的技术博客文章

    技术文档的撰写 从创意到完美结果的五个步骤 (Five steps to get from idea to polished result) I've been working in the open ...

  6. 忍不住跟着吐槽 —“当你辛辛苦苦写的博客文章被无情复制,成为了他的原创,你作何感想?”...

    刚无意打开博客园乱扫一眼便看到48小时排行里面一篇文章 "当你辛辛苦苦写的博客文章被无情复制,成为了他的"原创",你作何感想?",看到这样的标题就一下子触碰到了 ...

  7. Python爬虫自学与实战,爬一下自己的博客文章

    文章目录 1. 什么是爬虫 2. 学习爬虫的必备知识 3. 环境准备 4. 爬虫的第一步,获取网页的HTML内容 4.1 GET 4.2 POST 5. 使用BeautifulSoup模块来从HTML ...

  8. php参考文献博客,科学网—博客文章可否作为参考文献引用? - 王德华的博文

    博客文章可否作为参考文献引用? 个人博客的发展(尤其是科学博客),估计会对科技传播等产生一定的影响.不知道是否有专家对此进行相关研究和预测. 前几天在喝咖啡的时候,随意翻阅散放在休息区域的杂志的时候, ...

  9. html5博客在线写文章,HTML5响应式清新博客文章类织梦模板(移动端自适应)

    模板介绍 ★模板介绍★ HTML5响应式清新博客文章类织梦模板(移动端自适应),测试完整无错,兼容主流浏览器.模板包含安装说明,并包含测试数据.本模板基于DEDECms 5.7 UTF-8设计,需要G ...

最新文章

  1. 使用 acme.sh 获取网站证书并配置https访问
  2. Winform开发几个常用的开发经验及知识积累(一)
  3. 金融领域下的数据挖掘算法应用:逻辑回归模型
  4. 使用uploadify上传图片时返回“Cannot read property 'queueData' of undefined”
  5. Linux 命令之 ps -- 显示进程状态/查看进程信息
  6. git回退历史版本无法上传_Git系列教程(二):版本库中添加文件、版本回退
  7. ERROR: Minions returned with non-zero exit code
  8. 女孩子怎样能赚到月薪一万
  9. 简说设计模式——组合模式
  10. 【web前端】table的border属性解析(内联样式表和内部样式表中的区别)
  11. java opts配置_JAVA_OPTS设置
  12. Aras innovator: 粗绘innovator框架
  13. 飞思卡尔k66,k60无限重启
  14. 电脑android模拟器哪个好用,安卓模拟器哪个好用
  15. 蓝牙耳机什么样式最舒服?推荐一款好用的蓝牙耳机
  16. 【ECSHOP】在任意页面调用商品属性的方法
  17. Boss直聘招聘信息爬取
  18. 广州蓝景分享—前端开发JavaScript中的Array对象与其他数组
  19. CSDN博客中Markdown代码转为pdf
  20. 和99.9%的人的认知完全相反的富人思维

热门文章

  1. 翻译:重载解决和Null
  2. 同一用户最新登录踢掉历史登录【原创】
  3. 申请加入了sharepoint团队
  4. HDFS节点内数据平衡
  5. (40)不确定性约束
  6. FPGA时钟激励编写(方法二)
  7. http 访问mysql数据库_04.Http协议之GET请求与访问MySQL数据库
  8. java sort类_java中sort()方法的用法
  9. Ubuntu环境搭建支持设备树,内核和根文件系统启动
  10. (10)魔兽文件打包器里的传奇哈希表