0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

crawlerdetect:Python 三行代码检测爬虫

科技绿洲 来源:Python实用宝典 作者:Python实用宝典 2023-11-02 11:31 次阅读

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

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

1.准备

开始之前,你要确保Python和pip已经成功安装在电脑上噢,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda

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

当然,我更推荐大家用VSCode编辑器,把本文代码Copy下来,在编辑器下方的终端运行命令安装依赖模块,多舒服的一件事啊:Python 编程的最好搭档—VSCode 详细指南

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

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

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

**1. **实时监控网站上的http请求,检测其对应的headers.

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

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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66769
  • 编辑器
    +关注

    关注

    1

    文章

    788

    浏览量

    30187
  • python
    +关注

    关注

    51

    文章

    4675

    浏览量

    83466
  • 爬虫
    +关注

    关注

    0

    文章

    77

    浏览量

    6517
收藏 人收藏

    评论

    相关推荐

    急求教:能显示三行字符的液晶有哪些

    能显示三行字符(可以不是汉字)的液晶有哪些????
    发表于 05-31 10:02

    Python数据爬虫学习内容

    ,利用爬虫,我们可以解决部分数据问题,那么,如何学习Python数据爬虫能?1.学习Python基础知识并实现基本的爬虫过程一般获取数据的过
    发表于 05-09 17:25

    Python爬虫与Web开发库盘点

    Python爬虫和Web开发均是与网页相关的知识技能,无论是自己搭建的网站还是爬虫爬去别人的网站,都离不开相应的Python库,以下是常用的Pyth
    发表于 05-10 15:21

    Python爬虫初学者需要准备什么?

    ,想从事这方面的工作,需掌握以下知识:1. 学习Python基础知识并实现基本的爬虫过程一般获取数据的过程都是按照发送请求-获得页面反馈-解析并且存储数据 这个流程来实现的。这个过程其实就是模拟
    发表于 06-20 17:14

    请问前三行是什么意思?

    create_page_table @ 设置页表 bl mmu_init @ 启动MMU ldr sp, =0xB4000000 @ 重设栈指针,指向SDRAM顶端(使用虚拟地址) ldr pc, =0xB0004000 @ 跳到SDRAM中继续执行第二部分代码halt_loop: b halt_loop请问其中
    发表于 06-13 22:56

    请问这三行代码是固定这样写的吗?

    u8 IPRADDR=NVIC_Channel/4;//每组只能存4个,得到组地址 u8 IPROFFSET=NVIC_Channel%4;//在组内的偏移 IPROFFSET=IPROFFSET*8+4; //得到偏移的确切位置这三行代码是固定这样写的吗???????
    发表于 10-24 21:34

    0基础入门Python爬虫实战课

    学习资料良莠不齐爬虫是一门实践性的技能,没有实战的课程都是骗人的!所以这节Python爬虫实战课,将帮到你!课程从0基础入门开始,受众人群广泛:如毕业大学生、转行人群、对Python
    发表于 07-25 09:28

    三行搞定独立按键

    最近自己在做单片机的东西,准备参加比赛,偶然发现了独立按键的神助攻——三行搞定独立按键,看到网上很多描述的不清晰,自己又花时间整理了一下,话不多说先上代码:void Key_Read(void
    发表于 12-07 11:05

    Python爬虫简介与软件配置

    Python爬虫练习一、爬虫简介1. 介绍2. 软件配置二、爬取南阳理工OJ题目、爬取学校信息通知四、总结五、参考一、爬虫简介1. 介绍网
    发表于 01-11 06:32

    什么是三行按键?有什么用

    三行按键从出生到现在已经很多个年头了,经过几代优化,现在有两个版本,今天分析一下,也在本论坛扩充一下资源。我在本论坛搜索三行按键,并没有相关的帖子。首先说明一下什么是三行按键,有什么用,什么好处,以及...
    发表于 03-02 06:16

    python网络爬虫概述

    的数据,从而识别出某用户是否为水军学习爬虫前的技术准备(1). Python基础语言: 基础语法、运算符、数据类型、流程控制、函数、对象 模块、文件操作、多线程、网络编程 … 等(2). W3C标准
    发表于 03-21 16:51

    详细用Python写网络爬虫

    详细用Python写网络爬虫
    发表于 09-07 08:40 32次下载
    详细用<b class='flag-5'>Python</b>写网络<b class='flag-5'>爬虫</b>

    完全自学指南Python爬虫BeautifulSoup详解

    完全自学指南Python爬虫BeautifulSoup详解
    发表于 09-07 08:55 36次下载
    完全自学指南<b class='flag-5'>Python</b><b class='flag-5'>爬虫</b>BeautifulSoup详解

    python爬虫入门教程之python爬虫视频教程分布式爬虫打造搜索引擎

    本文档的主要内容详细介绍的是python爬虫入门教程之python爬虫视频教程分布式爬虫打造搜索引擎
    发表于 08-28 15:32 29次下载

    Python写网络爬虫

    Python写网络爬虫的方法说明。
    发表于 06-01 11:55 21次下载