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

某东h5st_5.1(补环境)

JS逆向实战——某东h5st_5.1(补环境)

  • 声明
  • 网站
  • 流程分析
  • 结果展示
  • 总结

声明

本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!

网站

aHR0cHM6Ly9zZWFyY2guamQuY29tL1NlYXJjaD9rZXl3b3JkPSVFNiU4OSU4QiVFNiU5QyVCQSZzdWdnZXN0PTEuaGlzLjAuMCZ3cT0lRTYlODklOEIlRTYlOUMlQkEmc3RvY2s9MSZwdmlkPWNkYzhjOWI4ZGM1OTRiNDg5NTlmYzc5ZTViMDM1Nzg2JmlzTGlzdD0wJnBhZ2U9MyZzPTU2JmNsaWNrPTAmbG9nX2lkPTE3NDU2NTU5MDE2NzEuOTM1Mg

今天水一篇某东的h5st_5.1版,但是内容不会讲的很详细,说一下我觉得的关键内容,不想收到某东的私信,有问题可以直接私信,下面进入正题。

流程分析

搜索h5st可以直接定位到生成位置,发现是个异步,使用py调用时可以先将异步转同步,或者打印结果后强制停止程序,返回结果调用,我是用的是第二种方法,使用subprocess库。

在这里插入图片描述

参数中的body是请求体中的body经过SHA256加密而成,标准库,网上找套加密源码套上就行。

在这里插入图片描述

接下来讲一下补环境,需要的环境不是很多,就不讲的很细了,主要是不方便,容易受到警告。下面列举一下需要的一些环境。
document.all、canvas、head、getContext_2d等
比较重要的检测就是document.all,下面放出我补的代码

const { debug } = require('console')
const { he } = require('faker/lib/locales')
const v8 = require('v8');
const vm=require('vm');
const { prototype } = require('events');
v8.setFlagsFromString('--allow-natives-syntax');
let undetectable = vm.runInThisContext("%GetUndetectable()");
v8.setFlagsFromString('--no-allow-natives-syntax');HTMLAllCollection = function HTMLAllCollection() { };
window.HTMLAllCollection = HTMLAllCollection;all = undetectable;
all.__proto__ = HTMLAllCollection.prototype;
all.length = 3173;

别的环境常规补就没什么问题了,长度和网页的差不多就可以去测了,基本没什么问题。如果实在过不了可以hook随机数等,最终生成的加密和网页一致就包没问题啦,下面放出hook代码。

Date.now = function now() {return 17375265789541
};
Date.parse = function () {return 1661986251253
};
Date.prototype.valueOf = function () {return 1661986251253
};
Date.prototype.getTime = function () {return 1661986251253
};
Date.prototype.toString = function () {return 1661986251253
};
Performance.prototype.now = function now() {return Number('1661986251253'.slice(8))
}
Math.random = function random() {return 0.08636862211354912
};
window.crypto.getRandomValues = function getRandomValues(array32, ...args) {return array32;
}

结果展示

最终也是可以成功翻页拿到数据

在这里插入图片描述

总结

需要完整代码的可以私信我,逆向分析中有任何疑问也可以私信我一起讨论学习,谢谢大家!!!

http://www.xdnf.cn/news/2253.html

相关文章:

  • 119. 杨辉三角 II
  • C++模拟Java C#的 finally
  • 数据结构顺序表的实现
  • PyTorch作为深度学习框架在建筑行业的应用
  • 从基础到实践(三十三):USB接口简介
  • Python文件操作及数据库交互(Python File Manipulation and Database Interaction)
  • 【刷题Day27】Python/JAVA - 01(浅)
  • 状态压缩DP:蒙德里安的梦想
  • 极简桌面app官网版下载 极简桌面最新版 安装包下载
  • 导览项目KD-Tree最近地点搜索优化
  • Java集合复习题目
  • 【matlab】绘制maxENT模型的ROC曲线和omission curve
  • 基于 IPMI + Kickstart + Jenkins 的 OS 自动化安装
  • 如何监控和分析MySQL数据库的性能?
  • 指针遍历数组
  • 如何控制DeepSeek的输出内容之AI时代的流量入口GEO
  • JavaScript基础-运算符的分类
  • HiSpark Studio如何使用Trae(Marscode)插件
  • SpringBoot 常用注解通俗解释
  • puppeteer注入浏览器指纹过CDP
  • linux blueZ 第五篇:高阶优化与性能调优——蓝牙吞吐、延迟与功耗全攻略
  • 详解 Network.framework:iOS 网络开发的新基石
  • Spring进阶篇
  • Java面试高频问题(29-30)
  • 解释PyTorch中的广播机制
  • 如何在 Ubuntu 22.04|20.04|18.04 上安装 PostGIS
  • Docker 学习入门篇:镜像构建、推送与私有仓库搭建全攻略
  • JAVA JVM面试题
  • MQ消息的不可靠性发生情况与解决方案
  • Goland终端PowerShell命令失效