论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
安全
›
终端安全
›
总有坏人想爬我网站的数据,看我用这 10 招干他! ...
总有坏人想爬我网站的数据,看我用这 10 招干他!
民工心事
金牌会员
|
2024-9-18 03:21:44
|
显示全部楼层
|
阅读模式
楼主
主题
659
|
帖子
659
|
积分
1977
大家好,我是程序员鱼皮。前两天模仿口试一位社招两年的老哥,由于他的表现不错,我就临时起意,跟他交流一下我们最近遇到的业务场景问题。问题如下:
最近我们不是做了个 程序员刷题网站 - 口试鸭 嘛,有许多坏人盯上了我们网站,想把我们 4,000 多道口试题、100 多个口试题库的数据都用爬虫抓下来。那我们应该如何防止这种爬虫行为?比如怎么识别出这些非法爬取数据的用户并且自动封号?
整个问题的交流过程大家可以看视频学习:https://www.bilibili.com/video/BV1b142187Tb
下面我就直接把防止爬虫的方法汇总分享给大家,总共有整整 10 种方法!最后一个方法很独特~
如何防止网站被爬虫?
1、使用协议条款
robots.txt 是一个放置在网站根目录下的文件,用于告诉搜索引擎的爬虫哪些部分不盼望被抓取。
举个例子,可以在 robots.txt 文件中添加如下规则来克制特定目录或文件被抓取:
User-agent: *
Disallow: /private/
Disallow: /important/
复制代码
虽然大多数合规的爬虫会遵守这些规则,但恶意爬虫可能会忽视它,所以,仅凭 robots.txt 不能完全制止所有爬虫。但它是防护的第一步,起到一个声明和威慑的作用。
可以在网站的服务条款或使用协议中明白克制爬虫抓取数据,并将违背这些条款的行为视为违法,如果网站内容被恶意爬虫抓取并造成了侵害,robots.txt 可以作为违背这些条款的证据之一。
2、限制数据获取条件
比起直接袒露所有数据,可以要求用户登录或提供 API 密钥才能访问特定数据。还可以为关键内容设置身份验证机制,比如使用 OAuth 2.0 或 JWT(JSON Web Tokens),确保只有授权用户能够访问敏感数据,有用制止未经授权的爬虫获取数据。
3、统计访问频率和封禁
可以使用缓存工具如 Redis 分布式缓存或 Caffeine 当地缓存来记载每个 IP 或客户端的哀求次数,并设置阈值限制单个 IP 所在的访问频率。当检测到非常流量时,系统可以自动封禁该 IP 所在,或者采取其他的战略。
需要注意的是,虽然 Map 也能够统计哀求频率,但是由于哀求是不断累加的,占用的内存也会连续增长,所以不建议使用 Map 这种无法自动释放资源的数据结构。如果肯定要使用内存进行哀求频率统计,可以使用 Caffeine 这种具有数据淘汰机制的缓存技能。
4、多级处置惩罚战略
为了防止 “误伤”,比起直接对非法爬虫的客户端进行封号,可以设定一个更灵活的多级处置惩罚战略来应对爬虫。比如,当检测到非常流量时,先发出告诫;如果爬虫行为继续存在,则采取更严厉的步伐,如暂时封禁 IP 所在;如果解封后继续爬虫,再进行永世封禁等处罚。
具体的处置惩罚战略可以根据实际情况来定制,也不建议搞的太复杂,别因此加重了系统的负担。
5、自动告警 + 人工参与
可以实现自动告警能力,比如在检测到非常流量或爬虫行为时,系统能自动发出企业微信消息关照。然后网站的管理员就可以及时参与,对爬虫的哀求进行进一步分析和处置惩罚。
这点之前也给大家分享过,不止是针对爬虫,企业的线上系统最好接入全方面的告警,比如接口错误、CPU / 内存占用率过高之类的。
6、爬虫行为分析
非法爬虫和正常用户的行为一样平常是有区别的,爬虫往往遵循特定的访问模式。比如正常用户每道题目都要看一会儿、看的时间也不一样,而爬虫一样平常是按照固定的顺序、固定的频率来获取题目,很显着就能识别出来。
比如下面这种情况,有可能就是爬虫:
7、哀求头检测
每个发送到服务器的哀求都有哀求头信息,可以通过检查哀求头中的 User-Agent 和 Referer 等标识符,对爬虫哀求进行拦截。
固然,这招只能防防菜鸟,因为哀求头是可以很轻松地伪造的,只要通过浏览器自带的网络控制台获取到响应正常的哀求头信息,就可以绕过检测了。
8、自主公开数据
记得大学上信息安全课的时候,学到一个知识点:防止网络攻击的一种方法是,让攻击者的成本大于实际的收益。比如密码 10 分钟有用,破解密码要花 15 分钟,就不会有人去破解。
用到爬虫场景上,我们的做法是,不做任何限制,直接让所有人不登录也能查看到我们网站的题目数据!而且还提供了题目的各种筛选功能、收藏功能。大多数同学只是为了自己学习,这样一来,就没有必要花时间去爬数据了~
9、溯源技能
虽然题目都是公开的,但有些我们专门请大厂大佬们来写的优质题解是仅会员可见的。如果有用户使用爬虫抓取了这部分数据,可就要小心了!一样平常来说,只要你在一个网站登录了,就肯定会有访问记载,如果你泄漏了网站登录后才可见的内容、尤其是付费内容,网站管理员肯定有办法追溯到你是谁。
比力常用的溯源技能就是水印、盲水印等。对于我们的口试鸭,自己就是通过微信登录的,而且如果你是会员,肯定还有支付记载。这些技能不但资助标记数据源,还可以在数据被滥用时追踪其泉源,从而增强数据的保护。
10、科普法律
除了上面这些方法外,还可以通过接入反爬服务、接入验证码、增加动态时间戳等方式进一步限制爬虫。但是要记住,爬虫是没有办法完美防御的!因为你无法限制真实的用户,攻击者完全可以模仿真实用户的访问方式来获取你的网站数据,比如找 10 个用户,每人获取几百题。
所以我的最后一个方法是 —— 科普法律。可以在网站上发布明白的法律声明,告知用户未经授权的抓取行为是违法的,可以对爬虫行为起到肯定的威慑作用。并且还通过发布视频和文章的方式,让广大程序员朋友们提高法律意识。爬虫是有肯定风险的,自己学习倒没问题,但是万万别给人家的网站造成压力了,搞欠好就有破坏计算机系统的嫌疑了!
更多
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
民工心事
金牌会员
这个人很懒什么都没写!
楼主热帖
Cilium系列-10-启用 IPv6 BIG TCP和启 ...
【云原生】Spring Cloud是什么?Spring ...
[源码阅读]-Redis核心事件流程 ...
安全应急响应中心SRC
读Java实战(第二版)笔记07_用Optiona ...
Java中如何将“日期字符串”转换为java ...
OpenGL ES google angle
Java入门11(JDBC)
Biwen.QuickApi代码生成器功能上线 ...
c++ container容器(string,vector,map, ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表