当前位置: 首页 > news >正文

爬虫之反爬思路与解决手段

阅读时间建议:4分钟
本篇概念比较多,嗯。。

0x01 反爬思路与解决手段

1、服务器反爬虫的原因

因为爬虫的访问次数高,浪费资源,公司资源被批量抓走,丧失竞争力,同时也是法律的灰色地带。

2、服务器反什么爬虫

三月爬虫:毕业生写的,不管服务器负载能力。
小公司:几个人缺钱,开始玩主流的爬虫数据分析,写的爬虫贼多,浪费资源。
个人爬虫:忘记停止的爬虫。
商业对手:很有钱,投入很大精力爬虫,浪费资源。
搜索引擎:通用爬虫,存在一些bug,对某一个网站持续爬取,他们技术很好,对服务器造成压力

3、反爬虫里的概念

爬虫:实用技术批量获取信息
反爬虫:阻止别人使用技术获取信息
误伤:服务器把普通用户屏蔽了
拦截:阻止爬虫访问
资源:机器和人力成本

4、反爬虫三个方向

4.1身份识别反爬

根据发出的请求符不符合浏览器发出携带的参数,那你就会被反爬。

4.1.1通过headers的ua字段反爬

如果我们不修改headers,那么ua那一行就是python或者是你用的模块名,这样很容易被反。

4.1.2referer字段反爬

看你是从哪发出的请求,一般浏览器自己带上,有的服务器在获取到一个请求后,要看从哪跳转的,如果没有referer,极有可能是爬虫,一般会被反。

4.1.3cookie反爬

通过检查cookie查看发起请求的用户是否具有权限。

4.1.4请求参数反爬

通过html文件中提取请求数据,需要仔细分析每一个包
通过发送请求来获取请求数据,需要搞清楚参数来源
js生成了请求参数,需要js2py获取js执行结果,或者用selenium
验证码反爬,需要打码平台或者机器学习,这里我推荐打码平台,成本低而且简单
(据说机器学习可以解马赛克?)

4.2爬虫行为反爬

众所周知,在爬取top250时,要先访问页面,获取详情url,振幅此页面发请求,针对每一步发出请求,服务器在此过程检查数据包中反爬。

4.2.1基于请求频率反爬

当某ip访问过量时,很大可能被反爬,需要降低爬虫采集速度或者使用代理池又或者是准备多个账号。

4.2.2 基于请求间隔的反爬

请求时间间隔十分规律,会被反爬,需要设置随机休眠或者是代理池或者多账号。

4.2.3 基于请求次数的反爬

比如支付宝,逆天给你限量转账400次,需要代理池或者多账号。

4.2.4 基于爬虫行为反爬

有些网站它的翻页url不是规律的,需要查看js一般里面有计算步骤
蜜罐获取爬虫ip———什么意思呢?
进入拉钩https://www.lagou.com/

图片


1、这里有很多求职信息,于是我们爬取它
2、在爬取的时候,爬到了一个隐藏的职位,这就是蜜罐,他就会确定你是爬虫,并且把你的代理池搞报废。
3、正常人看不到,而程序看得到,怎么实现呢?
4、检查这个节点,add attribute-》添加style=”dispaly:none”

图片

图片

5、于是就看不到了。
通过假数据反爬,就是往响应里添加垃圾数据恶心爬虫工程师,需要把数据库内容与世纪网页进行比对。
通过阻塞队列反爬,就是往响应url里添加垃圾url,需要对url进行过滤
通过阻塞网络IO,比如往你下载的数据里加个蓝光大电影(其实就是爬虫bomb,期待社区搞一个,搞搞新手),需要观察爬虫状态/多线程请求计时

4.3数据加密反爬

加大数据提取难度

4.3.1css字体反爬

进入猫眼https://www.maoyan.com/films/248172

图片


可以看到两个方块,但我检查的是9.1啊,说明这里有字体反爬虫
需要换成手机版
点这个

图片


(在我选中的里面有一个9.1)

图片

4.3.2css字体偏移

源码中的数据不是真正数据,需要计算css的位移(这哪是没找到例子)

4.3.3 数据化图片反爬

就是把数据写在图片里,需要使用图片解析引擎

4.3.4 编码格式反爬

每个格式都试试

 

1.print(response.content.decode("GBK"))

 申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法。

相关文章:

  • 记录一次jlink连不上cpu的情况
  • 洛谷 CF1969A Two Friends 题解
  • RAG 高效应用指南 :Query 理解
  • Java1.8全套家政上门服务+springboot+ mysql +Thymeleaf 技术架构开发,家政APP系统在线派单,师傅入驻全套商业源码
  • 【TB作品】 51单片机8x8点阵显示滚动汉字仿真
  • html+CSS+js部分基础运用15
  • C# 判断字符串不等于空的示例
  • AdminController
  • 【面试笔记】单片机软件工程师,工业控制方向(储能)
  • Windows下载安装RabbitMQ客户端(2024最新篇)
  • 【CMake系列】09-cmake install 一般文件 文件夹 源代码
  • 必应bing国内广告怎样开户投放呢?
  • dotenv 配置踩坑-显示undefined
  • gitlab-jh的docker容器自动退出/gitlab镜像版本/升级问题
  • 安卓手机APP开发_____通过设备管理政策增强安全性
  • 自己简单写的 事件订阅机制
  • ECS应用管理最佳实践
  • HashMap ConcurrentHashMap
  • HTTP中GET与POST的区别 99%的错误认识
  • JavaScript对象详解
  • Laravel 实践之路: 数据库迁移与数据填充
  • nodejs实现webservice问题总结
  • Sass Day-01
  • 编写高质量JavaScript代码之并发
  • 创建一个Struts2项目maven 方式
  • 和 || 运算
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 前端技术周刊 2019-01-14:客户端存储
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 深入 Nginx 之配置篇
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 微信开放平台全网发布【失败】的几点排查方法
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 如何在招聘中考核.NET架构师
  • !!java web学习笔记(一到五)
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (转载)CentOS查看系统信息|CentOS查看命令
  • ... 是什么 ?... 有什么用处?
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • ::前边啥也没有
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • [ 数据结构 - C++] AVL树原理及实现
  • [2024-06]-[大模型]-[Ollama] 0-相关命令