本文来自:来自: https://www.cnblogs.com/zichliang/

目标网站

aHR0cDovL3d3dy50bm1nLmNvbS5jbi9pbmZvcm1hdGlvbi9pbmZvX3h3enguYXNweD9jbGFzc2lkPTMx

分析

此网站根据cookie加密 如cookie无效则返回 412 有点像某数。



根据抓包分析 可知 这个

Cookie: ASP.NET_SessionId=irftqluvfywztp3nhmfqsgab; ASP.NET_SessionId_NS_Sig=oenCV6mdwHx26gTo; eFKuN5wtW89D006=K7vHE8llNk_GHoH63eOhtYf6Tr3vg0boafQPv9qOVyQRtO6M6rtkgWprfZrRt11Vr_OchRw__wmXgj2B9B70eMsA6XWIrwQ4BmwLUu23eXBog

这些cookie 是我们所传的参数。

定位函数入口

根据hook 确定 cookie加密的未知



然后我们一步一步追栈进入





这部分就是函数入口,我们在控制调用函数看看



由此可见 这就是cookie生成的入口了

耐心扣代码

我们找到了cookie生成的位置 接下来就是慢慢扣代码了

函数R\(ih()和R\)ff.R$aK();由我们多次试验可知 这是一个定值(如果不确定调用函数也行 这两个函数扣起来比较简单。)

所以我们可以改写一下

var R$aZ = 'eFKuN5wtW89D006'
var R$jZ = "K"
var R$ma = R$lA(); // 32位随机数
var R$jy = R$jn(); // 16位随机数
var R$fX = R$ke(); // 43位随机数
var R$gQ = R$jZ + R$jP(R$jy["concat"](R$jt(R$fX, R$ma)));

接下里就是扣这三个数组随机数了

R\(lA()
![](https://img2023.cnblogs.com/blog/2721529/202302/2721529-20230221103011518-671063045.png)
![](https://img2023.cnblogs.com/blog/2721529/202302/2721529-20230221103143556-1750382652.png)
![](https://img2023.cnblogs.com/blog/2721529/202302/2721529-20230221103155134-2081550246.png)
由此可见这是cookey
但是生成的地方我们暂时不知道
所以我们可以先扣其他地方 这个地方暂时写死好了
R\)jn();



同理 这个随机数也是一样的。

R\(ke();
然后我们扣这个函数
![](https://img2023.cnblogs.com/blog/2721529/202302/2721529-20230221103409606-1930558227.png)
这里有个坑
![](https://img2023.cnblogs.com/blog/2721529/202302/2721529-20230221103440861-1796997938.png)
在扣R\)lr();这个函数的时候,我们会发现很多selenium webdriver



这种情况要伪装的参数太多了,而且往里面越扣就越多,索性我们直接写死写成个定值

反正也只是一大堆环境检测。

其他顺着慢慢扣就好了。

执行JS

本文来自:来自: https://www.cnblogs.com/zichliang/

然后我们执行我们的JS



发现可以运行。

我们放到Python中运行,发现还是不行。

解决服务器动态生成问题。

那肯定是我们刚刚写的定值不对。唯一值得怀疑的点 就是那个"cookieKey"还有"blackBlock"

但是这两个值怎么追栈都找不到,

所以我们反复hook

会发现有有些值可能是服务器生成的。

所以我们只要找到这个函数入口函数即可。



实验多次,我们找到了这个函数。

然后我们只要把这个cookieKey 和 blackBlock提取出来即可。

我们后续只需要



用正则把这个值提取出来就能正常爬取了。

运行验证



可以正常运行~~

来自: https://www.cnblogs.com/zichliang/

JS逆向实战11——某金属集团动态cookie加密的更多相关文章

  1. JS逆向实战9——cookies DES加密混淆

    cookie加密 DES 混淆 目标网站:aHR0cHM6Ly90bGNoZW1zaG9wLnlvdXpoaWNhaS5jb20vbWFpbi90ZW5kP05vdGljZUNhdGVJZD0xJk5 ...

  2. JS逆向实战4--cookie——__jsl_clearance_s 生成

    分析 网站返回状态码521,从浏览器抓包来看,浏览器一共对此地址请求了三次(中间是设置cookie的过程): 第一次请求:网站返回的响应状态码为 521,响应返回的为经过 混淆的 JS 代码:但是这些 ...

  3. JS逆向实战3——AESCBC 模式解密

    爬取某省公共资源交易中心 通过抓包数据可知 这个data是我们所需要的数据,但是已经通过加密隐藏起来了 分析 首先这是个json文件,我们可以用请求参数一个一个搜 但是由于我们已经知道了这是个json ...

  4. JS逆向实战8——某网实战(基于golang-colly)

    其实本章算不上逆向教程 只是介绍golang的colly框架而已 列表页分析 根据关键字搜索 通过抓包分析可知 下一页所请求的参数如下 上图标红的代表所需参数 所以其实我们真正需要的也就是Search ...

  5. JS逆向实战7-- 某省在线审批网站params 随机生成

    参数分析 我们首先通过抓包 发现这个就是我们所需要的数据 然后我们通过fidder 发起请求 结果: 通过我们反复测试 发现这个params的参数是每次请求中都会变化的 断点查找 我们通过 这个t参数 ...

  6. JS逆向实战6-- x轴 y轴 过点触验证码

    点触验证码是一种常见的反爬手段 解决方案有两种:一种是直接解决,这需要深度学习机器学习等图像处理技术,以大量的数据训练识别模型,最终达到模型足矣识别图片中的文字提示和应该点击的区域之间的对应关系. 这 ...

  7. JS逆向实战5--JWT TOKEN x_sign参数

    什么是JWT JWT(JSON WEB TOKEN):JSON网络令牌,JWT是一个轻便的安全跨平台传输格式,定义了一个紧凑的自包含的方式在不同实体之间安全传输信息(JSON格式).它是在Web环境下 ...

  8. JS逆向实战2--cookie-AcwScV2加密—某招标信息网

    cookies的获取 首先拿到第一次访问原链接 拿到acw_tc的值,然后放到session中去 再用这个session再次访问原链接拿到js加载的加密的真实数据.用了一些反混淆. 最后获取这个数据中 ...

  9. JS逆向实战1——某省阳光采购服务平台

    分析 其实这个网站基本没有用到过什么逆向,就是简单的图片base64加密 然后把连接变成2进制存成文件 然后用ocr去识别即可 !! 注意 在获取图片连接 和对列表页发起请求时一定要用一个请求,也就是 ...

  10. Koa与Node.js开发实战(2)——使用Koa中间件获取响应时间(视频演示)

    学习架构: 在实战项目中,经常需要记录下服务器的响应时间,也就是从服务器接收到HTTP请求,到最终返回给客户端之间所耗时长.在Koa应用中,利用中间件机制可以很方便的实现这一功能.代码如下所示: 01 ...

随机推荐

  1. laravel框架 url地址传参

    //前端页面 <a title="编辑" onclick="xadmin.open('编辑','{{url("admin/Manager/edit&quo ...

  2. python仿写js算法二

    前言 之前写过一篇用python 仿写 js 算法,当时以为大部分语法都已经能很好的在python找到对应的语法结构,直到前几天我用 python 仿写了 慕课网解析视频加密的算法,我发现很多之前没遇 ...

  3. day21 单列索引与组合索引 & 索引的优点和使用原则 & 视图与函数

    索引 1.索引有几种 四种,单列索引,组合索引,全文索引,空间索引 2.索引的优点 所有的MySQL数据库列类型都可以被索引,也就是可以给任意字段加索引 提高数据查询速度 索引的缺点 1)创建索引和维 ...

  4. Qt_CLion

    目录 安装Qt和CLion 配置 CLion配置Qt的资源文件系统 在项目根文件夹下创建一个资源文件夹 在项目根目录下创建一个qrc文件 安装Qt和CLion 相关的安装网上有很多教程,安装步骤这里不 ...

  5. 【Java SE进阶】Day09 字节流、字符流、I/O操作、属性集

    一.I/O概述 1.输入输出 输入:硬盘-->内存 输出:内存-->内存 2.流 字节流:一个字节等于8位 字符流:一个字符=2个字节 二.字节流 1.概述 以字节的方式读取/传输 可以读 ...

  6. List排序(降序)

    一.添加一个比较器 点击查看代码 import java.util.Comparator; /** * @Classname ComparatorResultType * @Description 排 ...

  7. 高性能 Jsonpath 框架,Snack3 3.2.50 发布

    Snack3,一个高性能的 JsonPath 框架 借鉴了 Javascript 所有变量由 var 申明,及 Xml dom 一切都是 Node 的设计.其下一切数据都以ONode表示,ONode也 ...

  8. Flask 终端启动运行

    在终端启动 1.首先创建xxxx.py文件(xxxx表示创建的文件名)写入一个小app实例,例如: # 在hello.py文件下创建一个小的FLask app from flask import Fl ...

  9. 1+x初级Web的关键词填写

    H5+CSS: 声明HTML网页标准:<!DOCTYPE> 图片标签 img css颜色样式color 定位 position 绝对absolute 相对 relative 外边距:mar ...

  10. CentOS 7安装mysql5.7-单节点&主从

    一 下载 Mysql5.7下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads Mysql精细版本存档版本下载地址:https:/ ...