【Cookie反爬虫】某采购网站动态Cookie加点选验证码校验分析与实战

文章目录

  • 1. 写在前面
  • 2. 请求分析
  • 3. JS反混淆
  • 4. 深度分析

【作者主页】:吴秋霖
【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作!
【作者推荐】:对JS逆向感兴趣的朋友可以关注《爬虫JS逆向实战》,对分布式爬虫平台感兴趣的朋友可以关注《分布式爬虫平台搭建与开发实战》
还有未来会持续更新的验证码突防、APP逆向、Python领域等一系列文章

1. 写在前面

  爬虫一途,艰且险阻。稍有不慎就会令你抓耳挠腮!相信很多爬虫工程师们在职业生涯中遇到过各式各样的反爬虫操作,可以说是五花八门!本期教程难度并不高,但是仍然可以阻拦绝大部分的爬虫操作,赶紧动手跟作者学起来吧!

看似Cookie反爬、实则只是开胃小菜!核心防护在翻页点选验证码验证并生成验证加密参数用以后续翻页请求!

分析目标

aHR0cDovL3d3dy55bmdwLmNvbS8=


在这里插入图片描述


在这里插入图片描述

2. 请求分析

一般针对Cookie反爬虫,应该如何判断?这里我们可以尝试清除Cookie记录,点击鼠标右键Replay XHR再次重放请求,如下再次请求无效:

在这里插入图片描述

这里我们也可以直接Curl请求到本地终端测试,尝试请求网站,得到如下反馈:

在这里插入图片描述

这说明是有Cookie反爬的!初看开局刷新页面那张显示加载动作的图,是不是发现跟那个Cloudflare加载的时候异曲同工之妙~

通过上述分析大概率可以判断该网站对Cookie进行了判断检测,导致爬虫无法正常的流程获取到页面数据,既然是Cookie有问题做了手脚,那么我们先分析Cookie尝试多次测试看看有什么变化,经过测试发现PYCCS是在二次请求中更新的,如下所示:

在这里插入图片描述

3. JS反混淆

到了这一步,一般有经验的已经知道该从哪里入手分析了!它这个现象跟我之前做的这个小网站有点相似之处的:某网站搜索接口参数MD5加密又加盐逆向实战分析

它们的相似点就是JS操作的代码放在了请求响应内!并且是混淆过的。就是上面测试请求那块返回的eval(function(…

在这里插入图片描述

这里我们拿出来进行一个反混淆,反混淆之后使用AST普通解密来进行还原,如下所示:

var _$ = ["#challenge", "#waf_answer", "#ChallengeForm"];
$(_$[0]).show();
$(function () {setTimeout(function () {var x06dd1a = {};var x0fcad9;var x08c924 = 38;var x01c264 = navigator.userAgent.toLowerCase();x08c924 = x08c924 * 99;if (x0fcad9 = x01c264.match(/msie ([\d.]+)/)) {x06dd1a.ie = x0fcad9[1];} else {if (x0fcad9 = x01c264.match(/firefox\/([\d.]+)/)) {x06dd1a.firefox = x0fcad9[1];} else {if (x0fcad9 = x01c264.match(/chrome\/([\d.]+)/)) {x06dd1a.chrome = x0fcad9[1];} else {if (x0fcad9 = x01c264.match(/opera.([\d.]+)/)) {x06dd1a.opera = x0fcad9[1];} else {if (x0fcad9 = x01c264.match(/version\/([\d.]+).*safari/)) {x06dd1a.safari = x0fcad9[1];} else {0;}}}}}x08c924 = x08c924 + 46;if (x06dd1a.ie || x06dd1a.firefox || x06dd1a.chrome || x06dd1a.opera || x06dd1a.safari) {x08c924 = x08c924 * 3 + 7;if (x08c924 < 123) x08c924 = x08c924 + 2345;var x0b515d = $(_$[1]);if (x08c924 > 2345) x08c924 = Math.floor(x08c924 / 123);x0b515d.val(x08c924);$(_$[2]).submit();}}, 1000);
});

上面的代码AST后是无法直接运行的,需要修改一下,修改之后如下:

navigator = {'userAgent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'}
var _$ = ["#challenge", "#waf_answer", "#ChallengeForm"];
var x06dd1a = {};
var x0fcad9;
var x08c924 = 38;
var x01c264 = navigator["userAgent"]["toLowerCase"]();
x08c924 = x08c924 * 99;if (x0fcad9 = x01c264.match(/msie ([\d.]+)/)) {x06dd1a.ie = x0fcad9[1];
} else {if (x0fcad9 = x01c264.match(/firefox\/([\d.]+)/)) {x06dd1a.firefox = x0fcad9[1];} else {if (x0fcad9 = x01c264.match(/chrome\/([\d.]+)/)) {x06dd1a.chrome = x0fcad9[1];} else {if (x0fcad9 = x01c264.match(/opera.([\d.]+)/)) {x06dd1a.opera = x0fcad9[1];} else {if (x0fcad9 = x01c264.match(/version\/([\d.]+).*safari/)) {x06dd1a.safari = x0fcad9[1];} else {0;}}}}
}x08c924 = x08c924 + 46;if (x06dd1a.ie || x06dd1a.firefox || x06dd1a.chrome || x06dd1a.opera || x06dd1a.safari) {x08c924 = x08c924 * 3 + 7;if (x08c924 < 123) x08c924 = x08c924 + 2345;if (x08c924 > 2345) x08c924 = Math.floor(x08c924 / 123);
}

4. 深度分析

截止到这里,上面还原的JS代码中x08c924所计算出来的值就是下面POST请求获取PYCCS需要提交的参数,提交以后可以拿到Set-Cookie中新的Cookie信息,最后访问网站正常!

在这里插入图片描述
在这里插入图片描述

每一次请求混淆的JS代码是动态生成的,发现变化的地方在数字上所以answer字段所计算出来的结果也是不固定的!

前面的Cookie反爬虫小烟雾弹只是开胃小菜,真正的重头戏在采购板块下相关的信息,这里面的每一项内容在开始翻页之前必须过一个点选验证码,因为后续的翻页请求中携带提交验证检测通过的加密参数,如下所示:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

完成首次的验证是后续请求的必要条件!并且在后续过程中会要求不定时验证检测!每一次点选验证通过以后获取captchaCheckId,它就是检测的加密参数!这个地方全局搜索验证码的那个加密参数,然后可以直接找到一个叫做verify的JS文件,分析如下所示:

在这里插入图片描述
在这里插入图片描述

这里需要注意的是验证码通过验证之后的captchaCheckId参数是有时效性的!测试的话应该是在30分钟内,过期以后会出现验证校验不通过。重新验证即可,如此往复便可顺利进行后续的工作。如下采集所示:

在这里插入图片描述

这个小站的话,除了刚开始的Cookie迷惑操作稍微流程绕了一些外,没有太多的难点!但是本文中规中矩的操作并非最优方案!

爬虫之路、条条可通罗马!

好了,到这里又到了跟大家说再见的时候了。创作不易,帮忙点个赞再走吧。你的支持是我创作的动力,希望能带给大家更多优质的文章

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

紫林醋业:打造第二招牌驱动结构性增长

引言&#xff1a;紫林醋业面临内卷竞争&#xff0c;需要找到新的发展路径。许战海矩阵模型分析紫林醋业产品矩阵&#xff0c;探讨如何打造外线第二招牌实现结构性增长。分析指出三个打造第二招牌的产品方向包括醋饮料、复合调味料和保健品。其中&#xff0c;保健品可以大大提升…

vue项目在public中编写一个json文件 并用http请求获取 模仿数据接口

我们前后端分离是经常存在 前端已经开发到需要接口 但后端还没开始的情况的 如果直接在js中写假数据 后面还要改不少东西 多少有点麻烦 我们可以 直接在 public 静态资源目录下创建一个json文件 这里 我取名叫 city.json 大家可以根据自己喜好给json文件命名 我这个json文件的…

万户 ezOFFICE SendFileCheckTemplateEdit.jsp SQL注入漏洞

0x01 产品简介 万户OA ezoffice是万户网络协同办公产品多年来一直将主要精力致力于中高端市场的一款OA协同办公软件产品,统一的基础管理平台,实现用户数据统一管理、权限统一分配、身份统一认证。统一规划门户网站群和协同办公平台,将外网信息维护、客户服务、互动交流和日…

redis使用Big key的问题

文章目录 BigKey带来的问题业务场景具体现象解决思路 BigKey带来的问题 客户端执行命令的时延变大&#xff1a;对大Key进行的慢操作会导致后续的命令被阻塞&#xff0c;从而导致一系列慢查询。 引发操作阻塞&#xff1a;Redis内存达到maxmemory参数定义的上限引发操作阻塞或重…

RK3588平台开发系列讲解(视频篇)H.264码流结构介绍

文章目录 一、 码流查看工具二、 I帧、 P帧、 B帧三、序列四、GOP, 即关键帧间隔五、片和宏块沉淀、分享、成长,让自己和他人都能有所收获!😄 📢H.264码流结构介绍。 一、 码流查看工具 ① H.264码流查看工具: Elecard_streamEye、 Elecard StreamEye Tools、 Special…

游戏发行代理服务商需要具备什么能力?

在游戏产业的竞争激烈环境下&#xff0c; 游戏发行代理服务商扮演着至关重要的角色。他们不仅连接着游戏开发者和玩家&#xff0c;还需要具备一系列关键能力&#xff0c;以确保游戏的成功发行和市场推广。本文将探讨游戏发行代理服务商所需的关键能力。 1、市场洞察与策略制定&…

【Pwn | CTF】BUUCTF test_your_nc1

天命&#xff1a;时隔两年&#xff0c;又杀回了pwn这里 拿到题目的提示&#xff0c;测试你的nc工具 这题直接连接就可以了&#xff0c;windows装了nc工具&#xff0c;直接耍 nc node5.buuoj.cn 28930 下面给一点nc命令的解释&#xff0c;文心一言得出来的 nc命令是一个用于网…

VUE3子表格嵌套分页查询互相干扰的问题解决

VUE3在表格中嵌套子表格子表格的分页查询互相干扰的问题解决 简单嵌套 如果不需要做子表格的分页查询&#xff0c;那么可以直接在主表格中嵌套子表格&#xff0c;有两种方式&#xff1b;一种是主表格加载的同时加载子表格数据&#xff0c;另一种是点击展开时加载子表格数据&…

【格密码基础】:详解Ring-SIS问题

目录 一. 介绍 二. Ring-SIS问题相关的参数 三. Ring-SIS问题定义 四. 相比SIS问题的优点 五. 与SIS问题之间的关系 一. 介绍 在1998年&#xff0c;有关多项式环密码系统NTRU被提出。Ajtai提出了原始的SIS问题。 在2002年&#xff0c;Micciancio发现可以将这两者结合&am…

python爬虫2

1.table 是表格&#xff0c;tr是行&#xff0c;td是列 ul li是无序列标签用的较多&#xff0c;ol li是有序列标签 最基本的结构 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title> Title </title>…

外汇监管牌照解析:确保交易安全与合规性

外汇交易中&#xff0c;资金安全与平台监管是大家最关心的话题。监管是评估外汇经纪商是否值得信赖、是否具备相关资质的关键依据&#xff0c;因此选择一家拥有海外合法监管的经济商至关重要。 那么&#xff0c;今天我们就来聊聊全球权威的几大监管机构 — FCA、ASIC、NFA、FSA…

HarmonyOS 线程讲解(任务分发、线程通信)

一、简单说明 说起鸿蒙的线程就不得不说Android的线程&#xff0c;相信都知道在Android中&#xff0c;每一个应用都会有自己的主线程和其他的子线程&#xff0c;主线程负责处理大部分业务&#xff0c;负责UI的显示和更新等操作&#xff0c;所以又称之为UI线程&#xff0c;同时…