爬虫入门-js端cookie反爬与无限debugger

admin 2024年4月24日03:08:07评论4 views字数 2623阅读8分44秒阅读模式

时间2023-08-05

反爬:js逆向基础#header反爬>cookie(acw_sc__v2)+xq_a_token+无限debugger

网址:aHR0cHM6Ly94dWVxaXUuY29tL3RvZGF5

视频:https://www.bilibili.com/video/BV1Bm4y1W76o/

b64http://www.jsons.cn/base64/

curlhttps://spidertools.cn/#/curl2Request

声明文章/代码/视频仅供学习交流,如有问题可到文章末尾加我联系删除

爬虫入门-js端cookie反爬与无限debugger

反爬参数如图

爬虫入门-js端cookie反爬与无限debugger

爬虫入门-js端cookie反爬与无限debugger


爬虫入门-js端cookie反爬与无限debugger

知识点提前Get

cookie要么是JS(客户端)生成的,要么是服务器返回的,需要在网页界面按Fn+F12打开开发者工具平台观察

爬虫入门-js端cookie反爬与无限debugger

可以通过Response Headers响应头是否是Set-Cookie判断为服务器cookie

爬虫入门-js端cookie反爬与无限debugger

或者是否有HttpOnly属性判断为服务器cookie

爬虫入门-js端cookie反爬与无限debugger

研究cookie,得先Fn+F12打开开发者工具平台,清空网页cookie缓存

爬虫入门-js端cookie反爬与无限debugger

第一种方式删除目标cookie清除

爬虫入门-js端cookie反爬与无限debugger

第二种直接全清,无论是哪个网址的cookie

爬虫入门-js端cookie反爬与无限debugger

第三种方式选择目标网址清cookie

爬虫入门-js端cookie反爬与无限debugger


爬虫入门-js端cookie反爬与无限debugger

视频讲解流程

爬虫入门-js端cookie反爬与无限debugger

详细分析流程

1.首先,我们如何判断有cookie反爬,先清空所有cookie,模拟请求

爬虫入门-js端cookie反爬与无限debugger

2.接着清空所有请求流,方便分析,刷新网页

爬虫入门-js端cookie反爬与无限debugger

3.然后搜索目标数据内容,定位具体的接口是哪个

爬虫入门-js端cookie反爬与无限debugger

4.这里我们确定了哪个接口后,可以过滤筛选只看这个接口

爬虫入门-js端cookie反爬与无限debugger

5.然后我们鼠标右击目标接口,copy>copy as curl(cmd)

爬虫入门-js端cookie反爬与无限debugger

6.打开https://spidertools.cn/#/curl2Request 直接生成requests请求

爬虫入门-js端cookie反爬与无限debugger

7.打开pycharm,新建python文件,复制上面的requests请求,运行代码,发现数据未正常返回,简单的看了下可能是cookie反爬

爬虫入门-js端cookie反爬与无限debugger

8.开始继续测试,我们试着注释掉部分cookie,发现也能拿到正常响应数据

爬虫入门-js端cookie反爬与无限debugger

9.但是当我们把xq_a_token注释掉后,无法正常返回数据,由此确定这个接口xq_a_token是cookie反爬

爬虫入门-js端cookie反爬与无限debugger

10.我们复制上面的xq_a_token的cookie往上逆推分析,发现在下面这个today接口找到,而且确定是服务器返回的cookie

爬虫入门-js端cookie反爬与无限debugger

11.重复操作步骤5~6,我们模拟这个today接口请求,发现响应头里面并没有生成我们要的xq_a_token的cookie请求,而且响应文本里面是一段纯js的内容,再回到浏览器分析,发现这个接口请求了两次

爬虫入门-js端cookie反爬与无限debugger

12.我们细细看这个两次接口的请求,也就是我们第一次请求today接口只返回了js,第二次接口请求才能真正返回我们需要的xq_t_token的cookie

爬虫入门-js端cookie反爬与无限debugger

爬虫入门-js端cookie反爬与无限debugger

13.那我们试试直接请求两次这个today接口看看cookie-xq_a_token是否返回,也没有返回

爬虫入门-js端cookie反爬与无限debugger

14.也就是说第二个接口请求可能还存在一个cookie反爬acw_sc__v2,而这个cookie就是第一次请求js生成返回的

爬虫入门-js端cookie反爬与无限debugger

15.所以我们先研究下acw_sc__v2这个cookie的由来,先清掉cookie缓存

爬虫入门-js端cookie反爬与无限debugger

16.清掉当前数据流,方便分析

爬虫入门-js端cookie反爬与无限debugger

17.由于acw_sc__v2这个cookie是js生成的,所以我们得新建一个hook-cookie的js脚本

爬虫入门-js端cookie反爬与无限debugger

18.刷新网页后发现无限debugger阻碍拦截,所以得先过无限debugger

爬虫入门-js端cookie反爬与无限debugger

19.调用堆栈分析该无限debugger,发现是一段js混淆的代码,到console界面手动还原js分析

爬虫入门-js端cookie反爬与无限debugger

20.简单了解下(function(){}constructor('debugger')() 反爬原理

爬虫入门-js端cookie反爬与无限debugger

21.过掉上面的无限debugger,我们选择hook脚本重写,在这个位置添加即可

爬虫入门-js端cookie反爬与无限debugger

22.然后我们重复操作流程15~16,并打上script断点,拦截js脚本

爬虫入门-js端cookie反爬与无限debugger

23.刷新网页后会断在此处,这时候我们一直往下调试拦截

爬虫入门-js端cookie反爬与无限debugger

24.这时候跳到了我们目标的js脚本这里,先在第一行打断点,然后运行我们写好的hook-cookie的脚本,然后把script断点取消掉

爬虫入门-js端cookie反爬与无限debugger

25.如下就hook到我们目标cookie了,接着我们通过堆栈回溯分析acw_sc__v2的由来

爬虫入门-js端cookie反爬与无限debugger

26.如下,可以看的acw_sc__v2其实本质是 reload(x)传过来的,也就是形参x值

爬虫入门-js端cookie反爬与无限debugger

27.继续回溯,可以知道acw_sc__v2就是arg2值

爬虫入门-js端cookie反爬与无限debugger

28.再回溯,可以知道arg2就是这段js代码生成的,于此同时,我们在此处下两个断点

爬虫入门-js端cookie反爬与无限debugger

29.我们把这两行js代码复制到vscode新建的js文件里面,并在console界面手动还原下混淆变量

爬虫入门-js端cookie反爬与无限debugger

30.运行会报错缺少变量arg1,实际上我们观察还缺少_0x5e8b26

爬虫入门-js端cookie反爬与无限debugger

31.接下来我们重复15~24的步骤流程,清cookie,刷新网页,这时候可以不用打script断点了,因为我们已经在目标js上面下了几个断点了,如果遇到无限debugger,运行下hook的脚本过掉,这时候会跳到我们目标的断点位置

爬虫入门-js端cookie反爬与无限debugger

32.在console界面输出两个未定义的变量,然后补上固定值,然后ctrl+s保存代码后,再次运行arg1.unbox未定义

爬虫入门-js端cookie反爬与无限debugger

33.到浏览器界面,输出下这个函数,然后将这部分函数代码复制到本地如下

爬虫入门-js端cookie反爬与无限debugger

34.同时我们需要把混淆变量手动还原下,如下,然后ctrl+s保存下js文件

爬虫入门-js端cookie反爬与无限debugger

35.再次运行js文件,这次报错如下_0x23a392.hexXor未定义

爬虫入门-js端cookie反爬与无限debugger

36.同样的方法,重复操作流程33~34,将该部分缺少的js函数复制下来

爬虫入门-js端cookie反爬与无限debugger

37.最后我们ctrl+s保存文件后,再次运行js文件,未报错,此时acw_sc__v2生成逻辑已经分析完成

爬虫入门-js端cookie反爬与无限debugger

38.我们稍微改下js代码,封装成函数传参输出的形式,其中可以多次调试发现需要传入参数动态arg1,其它都是定值

爬虫入门-js端cookie反爬与无限debugger

39.arg1我们搜索下看哪里生成的,发现在第一次响应请求里面生成的,所以我们修改下python代码正则re提取即可

爬虫入门-js端cookie反爬与无限debugger

爬虫入门-js端cookie反爬与无限debugger

40.同时把python调用js模块的代码也编辑好传入acw_sc__v2的cookie

爬虫入门-js端cookie反爬与无限debugger

41.再开始第二次today接口请求,这时候发现xq_a_token的cookie已经生成了,通过session直接管理服务器xq_a_token的cookie,如下就能正常拿到响应了

爬虫入门-js端cookie反爬与无限debugger


爬虫入门-js端cookie反爬与无限debugger

代码仅供学习交流

爬虫入门-js端cookie反爬与无限debugger

The End~ 更多交流加vx

原文始发于微信公众号(逆向OneByOne):爬虫入门-js端cookie反爬与无限debugger

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月24日03:08:07
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   爬虫入门-js端cookie反爬与无限debuggerhttp://cn-sec.com/archives/2685578.html

发表评论

匿名网友 填写信息