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

某东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;
}

结果展示

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

在这里插入图片描述

总结

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

相关文章:

  • qt/c++云对象浏览器
  • 文章记单词 | 第46篇(六级)
  • java函数式接口与方法引用
  • 八猴渲染器三维场景实时预览软件 Marmoset Toolbag 5.01 安装包免费下载
  • 山东大学离散数学第九章习题解析
  • C++ 为什么建议类模板定义在头文件中,而不定义在源文件中
  • Nacos详解
  • Python 第 12、13 节课 - 元组和列表
  • Linux基本指令(保姆级教学)
  • 【新技术】Testfy.js v3.0 深度解析与使用指南
  • 关于循环缓冲区
  • MUC基本知识
  • 基于javaweb的SpringBoot小说阅读系统设计与实现(源码+文档+部署讲解)
  • Threejs中顶视图截图
  • Python dotenv 使用指南:轻松管理项目环境变量
  • Bento4的安装和简单转码
  • Linux基础指令【上】
  • 写时拷贝讲解
  • dubbo 隐式传递
  • Python项目实践:控制台银行系统与词频统计工具开发指南
  • 国家数据发展研究院在京正式揭牌
  • 长三角数智文化产业基金意向签约会成功举办
  • 李家超称香港将部署为内地企业提供供应链服务,突破美国封锁
  • 专访倪军:人要有终身学习能力,一张文凭无法像以往支撑那么多年
  • 韩国称DeepSeek未经同意将用户数据传至境外,外交部回应
  • 拍片无小事,牙齿也有故事