是否担心别人将你的博客文章全部爬下来?3行代码教你检测爬虫
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。
以下文章来源于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行代码教你检测爬虫相关推荐
- Python爬虫入门实战1:获取CSDN个人博客文章目录及阅读量数据
☞ ░ 老猿Python博文目录:https://blog.csdn.net/LaoYuanPython/article/details/98245036 ░ 一.引言 有阵子博客的访问量出现了比较大 ...
- 如何快速转载别人的CSDN博客文章并附带格式与图片
1.问题背景 最近在学习Git过程中想了解git reflog命令的高级用法与命令详解,于是找到了这几篇特别优秀的文章: [1]使用git reflog 命令来查看历史提交记录并使用提交记录恢复已经被 ...
- 【工具】复制别人的CSDN博客文章到本地
复制别人的CSDN博客文章到本地 操作流程 1.打开自己喜欢的博客的文章,然后同时按shift+ctrl+I三个键,打开开发者工具. 2.选择elements选项,按下面图片选择(chorme浏览器) ...
- 将博客文章转变为电子书
中国站长站(mb5u.com)11月24日消息:自己的博客如何保存,如何更好地展示出来?近期,javaeye网站推出了一项新的功能,把博客制作成电子书籍. 以下,是javaeye负责人对该功能的介绍: ...
- 技术文档的撰写_如何撰写出色的技术博客文章
技术文档的撰写 从创意到完美结果的五个步骤 (Five steps to get from idea to polished result) I've been working in the open ...
- 忍不住跟着吐槽 —“当你辛辛苦苦写的博客文章被无情复制,成为了他的原创,你作何感想?”...
刚无意打开博客园乱扫一眼便看到48小时排行里面一篇文章 "当你辛辛苦苦写的博客文章被无情复制,成为了他的"原创",你作何感想?",看到这样的标题就一下子触碰到了 ...
- Python爬虫自学与实战,爬一下自己的博客文章
文章目录 1. 什么是爬虫 2. 学习爬虫的必备知识 3. 环境准备 4. 爬虫的第一步,获取网页的HTML内容 4.1 GET 4.2 POST 5. 使用BeautifulSoup模块来从HTML ...
- php参考文献博客,科学网—博客文章可否作为参考文献引用? - 王德华的博文
博客文章可否作为参考文献引用? 个人博客的发展(尤其是科学博客),估计会对科技传播等产生一定的影响.不知道是否有专家对此进行相关研究和预测. 前几天在喝咖啡的时候,随意翻阅散放在休息区域的杂志的时候, ...
- html5博客在线写文章,HTML5响应式清新博客文章类织梦模板(移动端自适应)
模板介绍 ★模板介绍★ HTML5响应式清新博客文章类织梦模板(移动端自适应),测试完整无错,兼容主流浏览器.模板包含安装说明,并包含测试数据.本模板基于DEDECms 5.7 UTF-8设计,需要G ...
最新文章
- 使用 acme.sh 获取网站证书并配置https访问
- Winform开发几个常用的开发经验及知识积累(一)
- 金融领域下的数据挖掘算法应用:逻辑回归模型
- 使用uploadify上传图片时返回“Cannot read property 'queueData' of undefined”
- Linux 命令之 ps -- 显示进程状态/查看进程信息
- git回退历史版本无法上传_Git系列教程(二):版本库中添加文件、版本回退
- ERROR: Minions returned with non-zero exit code
- 女孩子怎样能赚到月薪一万
- 简说设计模式——组合模式
- 【web前端】table的border属性解析(内联样式表和内部样式表中的区别)
- java opts配置_JAVA_OPTS设置
- Aras innovator: 粗绘innovator框架
- 飞思卡尔k66,k60无限重启
- 电脑android模拟器哪个好用,安卓模拟器哪个好用
- 蓝牙耳机什么样式最舒服?推荐一款好用的蓝牙耳机
- 【ECSHOP】在任意页面调用商品属性的方法
- Boss直聘招聘信息爬取
- 广州蓝景分享—前端开发JavaScript中的Array对象与其他数组
- CSDN博客中Markdown代码转为pdf
- 和99.9%的人的认知完全相反的富人思维