[每周一更]-(第26期):反爬虫机制

news2024/11/19 11:25:16

在这里插入图片描述

随着网站的越来越普及,我们开发出来的知识类网站更不希望被竞争对手爬虫,虽然现在网络中充斥着各种各样的蜘蛛,有合法的浏览器爬虫,以及不合法
的人为爬虫,所以攻防战一直都存在,我们只能更好的设定规则,防止我们的资料被泄露;曾几何时,爬虫是我们的利器,世事沧桑,我们又不得不反爬虫,这其中
只有真正领悟过的人才会懂。

  • 对于WEB数据的安全,就多层设置门槛;对比物理数据安全只有多备份,多么痛的领悟;

什么是爬虫?

  • 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。
    原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做。 互联网大数据时代,给予我们的是生活的便利以及海量数据爆炸式的出现在网络中。

什么又是反爬虫?

  • 反爬虫:任何阻止爬虫程序访问 目标服务器资源或获取数据的行为。如限制ip频率,客户端身份验证,文本混淆,返回假数据等措施。

Go设置反爬机制

  • (1)每个区域的ip,每天只能怕固定数量的条数,如:100条/天;让注册用户进行数据查询,可以多查一部分;非注册用户只能查10条/天;
  • (2)设置网站的robots.txt协议,禁止爬虫设置;
  • (3)账户的请求次数,1分钟限制次数;
  • (4)对请求地址的UA进行判断,(UA的字面意思,用户代理,也就是说用户通过什么工具来访问网站。) User-Agent
  • (5)针对请求地址中请求头的Referer判断,(Referer是包含在请求头里的,表示从哪个URL跳转到这个请求) Referer
  • (6)针对请求判断是否登录,也就是cookie限制;
  • (7)用户登录增加验证码认证;
  • (8)黑名单机制

1、Nginx禁止爬虫访问的方法

if ($http_user_agent ~* "Scrapy|Baiduspider|Curl|HttpClient|Bytespider|FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser
|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSp

ider|Ezooms|^$"){

    return 403;

}

如需跳转其他页面,只需要吧return 403 换成对于的地址即可,配置如下:
if ($http_user_agent ~* "Scrapy|Baiduspider|Curl|HttpClient|Bytespider|FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser
|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSp

ider|Ezooms|^$") {

    return 301 https://yoursite.com;

}

如需禁止特定来源用户,配置如下:
if ($http_referer ~ "baidu\.com|google\.net|bing\.com")  {
return 403;

}

如需仅允许GET,HEAD和POST请求,配置如下:
#fbrbidden not GET|HEAD|POST method access
if ($request_method !~ ^(GET|HEAD|POST)$) {

        return 403;

}

使用Nginx过滤网络爬虫 防盗链

现在的网络爬虫越来越多,有很多爬虫都是初学者写的,和搜索引擎的爬虫不一样,他们不懂如何控制速度,结果往往大量消耗服务器资源,导致带宽白白浪费了。

其实Nginx可以非常容易地根据User-Agent过滤请求,我们只需要在需要URL入口位置通过一个简单的正则表达式就可以过滤不符合要求的爬虫请求:

    ...
    location / {
        if ($http_user_agent ~* "python|curl|java|wget|httpclient|okhttp") {
            return 503;
        }
        # 正常处理
        ...
    }
    ...
    

变量$http_user_agent是一个可以直接在location中引用的Nginx变量。~*表示不区分大小写的正则匹配,通过python就可以过滤掉80%的Python爬虫。

2、Apache禁用爬虫的配置

mod_rewrite模块确定开启的前提下,在.htaccess文件或者相应的.conf文件,添加以下内容:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (^$|FeedDemon|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms) [NC]

RewriteRule . - [R=403,L]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/112524.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中文文本分类

手把手带你做一个文本分类实战项目(模型代码解读) https://www.bilibili.com/video/BV15Z4y1S7aR/?spm_id_from333.788.recommend_more_video.-1&vd_sourcec47fbb8166930edc486d8fdc405bf569 中文汉字对应的数字索引 之后对应的数字索引 之后找到tokn embedding的东西 1…

34. 池化层 / 汇聚层

1. 池化层 如果我们拍摄黑白之间轮廓清晰的图像X,并将整个图像向右移动一个像素,即Z[i, j] X[i, j 1],则新图像Z的输出可能大不相同。而在现实中,随着拍摄角度的移动,任何物体几乎不可能发生在同一像素上。即使用三脚…

15【SpringMVC的注解开发】

文章目录二、SpringMVC注解支持2.1 回顾Servlet容器启动源码流程2.2 分析SpringMVC启动源码分析2.2.1 SpringServletContainerInitializer源码分析2.2.2 WebApplicationInitializer源码分析1)AbstractContextLoaderInitializer2)AbstractDispatcherServl…

短视频播放量超10w后,流量变少的问题解决方案

短视频播放量超10w后,流量变少的问题解决方案 上一篇我们聊了视频播放超10w后,会遇到流量变少的问题并分析了可能的原因,既然知道了原因,那么我们就可以针对性的去解决了。 今天给大家聊一聊在我赢助手跟超200名短视频创作者沟通…

Allegro如何设置差分动态等长规则操作指导

Allegro如何设置差分动态等长规则操作指导 Allegro上可以对差分设置动态等长规则,让差分对在任意一段距离上都是满足等长误差的,尤其是在差分对走线较长的情况下 以下面这两对线为例 具体操作如下 打开constraint Manage选择Physical规则

Linux 管理联网 设置主机名( nmtui图形化 和 hostnamectl命令 )

设置主机名 # 常用的有两种方式,一种是 nmtui 图形化界面的方式来设置, 一种是 hostnamectl 命令的方式来设置。 nmtui 直接在命令行 输入 nmtui 便进入 图形化界面 >>> 最后一选项( 红底) 便是 设置主机名~&#x…

微导纳米科创板上市:市值125亿 无锡首富王燕清再敲钟

雷递网 雷建平 12月23日江苏微导纳米科技股份有限公司(简称:“微导纳米”,股票代码为:“688147”)今日在科创板上市。微导纳米此次发行4544.55万股,发行价为24.21元,募资总额为11亿元。微导纳米…

react笔记_11 redux

目录redux定义使用时机redux基本概念StoreStateActionreducerredux工作原理语法[1] 创建StorecreateStorecombineReducers[2]创建并分发actiondispatchapplyMiddleware语法举例说明- 做一个加法运算执行原理redux-thunk中间件使用[3]创建reducer语法渲染过程[4]getState[5]subs…

基于meanshift算法的目标聚类和目标跟踪matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 meanshift算法其实通过名字就可以看到该算法的核心,mean(均值),shift(偏移),简单的说,也就是有一个…

Web前端105天-day63-HTML5_CORE

HTML5CORE03 目录 前言 一、复习 二、SVG 三、Echarts 四、Webworker 五、回调地狱 六、Promise 七、promiseajax 八、promise_axios 九、async_await 总结 前言 HTML5CORE03学习开始 一、复习 跨域 浏览器的同源策略限定: 网页中利用 AJAX 请求数据, 必须访问同源…

【CSS】flex布局用法解析,快速上手flex布局,flex:1是什么意思?肯定看的懂好吧?

一、flex布局 flex 是 flexible box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。 任何一个容器都可以指定为 flex 布局。 采用 flex 布局的元素,称为 flex 容器(flex container),…

如何解决跨越

解决跨域我想在坐的各位都会听说过几个解决跨域的方法: 1.有什么 cors后端配置(加几个请求头 2.jsonp(利用script的src属性) 3.还有vue-cli前端配置。 跨域其实就是违背了浏览器的一种策略,这种策略就是同源策略&…

公司刚来的阿里p8,看完我构建的springboot框架,甩给我一份文档

前言: 我们刚开始学习 JavaWeb 的时候,使用 Servlet/JSP 做开发,一个接口搞一个 Servlet ,很头大,后来我们通过隐藏域或者反射等方式,可以减少 Servlet 的创建,但是依然不方便,再后…

【Transformer】医学分割领域的应用与扩展(论文阅读)(二) || DETR

声明:仅学习使用~ 目录 1. Transformer学习2. DETR1. Transformer学习 前篇指路:【Transformer】医学分隔领域的应用与扩展(论文阅读)(一) 继续… 关于Self-Attention的公式: 原来是 m x m 是2D的,现在变成1 x m了,是1D的了。 下图中。左图是传统的Transformer,右…

【python圣诞树的实现】

🤵‍♂️ 个人主页老虎也淘气 个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏…

拒不外传,阿里内部耗重金找人总结出这份并发编程手册(全彩版)

并发世界很有趣,不要错过 前言: 时间飞逝,转眼间毕业七年多,从事 Java 开发也六年了。我在想,也是时候将自己的 Java 整理成一套体系。 这一次的知识体系面试题涉及到 Java 知识部分、性能优化、微服务、并发编程、开…

python常用模块

time模块 常用操作 1.直接获取时间 time.time() #获取结果是秒数,即从1970年1月1日8:00起计#1671856010.9592516 2.获取结构化时间 time.localtime() #获取本地时间,中国为东八区,为上海时间 time.gmtime() …

C++控制台圣诞树

前言 有是一年圣诞节,先祝大家圣诞节快乐,所以本蒟蒻在AFO之后决定回来更新一篇打印字符圣诞树的教程 (呃好吧我承认我就是想嫖奖品) 效果展示 呃我知道这有点拉,但是……蒟蒻能有什么坏心思呢,他只不过想…

客户端服务端交互实现

问题 客户端业务逻辑如何实现? 与服务设备具体交互细节如何设计? 客户端业务逻辑实现 用户输入处理 字符串空格处理,分割获取命令与参数 服务信息处理 字符串预处理,分割获取服务命令存储服务命令与设备地址之间的映射(命令字…

Java Socket实现NIO通信

文章目录一.简单介绍通道(Channel)多路复用器(Selector)二.代码实现.客户端服务端运行结果一.简单介绍 NIO 很多人也称之为 Non-block I/O,即非阻塞 I/O,因为这样叫,更能体现它的特点。 为什么…