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

爬虫逆向之X音a_bogus参数分析

本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

此文章重在学习调试技巧。模拟参数生成。

目录

网站难点

加密位置

第一次插桩

三个执行顺序

第二次插桩

第三次插桩

附Node环境


目标网址:aHR0cHM6Ly93d3cuZG91eWluLmNvbS91c2VyL01TNHdMakFCQUFBQW9tcFhrUG9ZT0dzQTE1MmRxWW95dEt5Y2pJWl9hQ0N4SHdHbUxYNUlzRE0/ZnJvbV90YWJfbmFtZT1tYWluZA==

接口:aHR0cHM6Ly93d3cuZG91eWluLmNvbS9hd2VtZS92MS93ZWIvYXdlbWUvcG9zdA==

网站难点

网页生成a_bogus执行方法有三种个三个执行入口,每一次刷新进入随机一个执行入口,你断点可能断不了一点,所以最好是三个执行入口一起断住。

这个网页除了补环境外,最大的挑战就是插桩。a_bogus值会生成多次,一个接口生成一次,不同接口生成a_bogus值不一样,所以就是找特征下断点。关键词:'post'

加密位置

XHR断住后,往每个JS文件入扣处打上断点,经分析,加密位置在bdms.JS文件里,并且每次加载进入bdms.JS文件不一样,有三处地方(天哪,第一次做调试到奔溃)

更加正确位置是X函数里的s值

其实有个技巧,跟栈不一定是一个栈一个栈找,也可以一个文件一个文件找。最好的是往每个文件入口处打上断点,就可以分析在那个文件进行加密。

其实上可以在这个文件打上日志断点,不要往初始化的地方打上日志断点。

第一次插桩

很显然就是s坐标9的位置就是参数生成位置,这个参数会生成很多次不一样的值。关键词post

找执行bdms.JS的最开始地方,这里设置条件断点

先对比接口和a_bogus,发现有这个规律。s[9]和s[6]两两对应,这是生成位置。

断住后跟栈找,S生成的6坐标对应相应的接口,生成的9坐标则是对应相应接口加密的a_babogus,每个接口的a_bogus值不一样,入口传入参数不一样。所以我们设置添加断点,让它能对应相应接口生成的a_babogus值。

三个执行顺序

跟栈发现在index.js

但是有时调试时会加载别的JS文件,不一定是index.js,,还有可能是client-entry~.js

还有是browser.cn.js接口

心好累,有时调试时候,打上断点,风控就是是执行顺序老变,妨碍调试,搞得很崩塌,但事实上逻辑都是一样的。而且是我电脑原因吗,调试越久越卡。(写个博客心态都崩了!!!)

第二次插桩

接下来就是看看入口的传参了,经调试,在入口处设置这个条件断点即可,这是生成a_b值入口。

重新进入,发现跟栈变了。

往这里继续打断点,

又戳戳变了,这个有点难分析,不过没关系,重新刷新,刷到我们断住的断点为止

分析得出入口在这里

就算断住后也要注意函数名,可能先执行,但下一步不是生成的JS函数,也可能后执行。

不断刷新,直到断指(断住)

this要分析(不一定是this,也可能是e,看你断住得地方),t写死,n如何导出?

首先全扣代码 bdms.JS文件,补完环境后,导出n函数,因为n函数会有很多个接口经过然后对a_b值加密,所以要设置一个特有的条件断点。

第三次插桩

但post接口经过时,e参数是这样的。这是导出a_b值条件。

所以在自己node环境也设置这个条件断点

函数执行处有XML对象,u写死

定义一个对象

传入

然后吐出环境

copy一下,整理得出

uifd是请求体得uifd要一一对应,args是请求接口处a_b值外的url。其中的uifid也要对应。

包括请求头要一一对应

最后在X函数,s[9]就是a_b值,

顺利得出

模拟参数生成。搞定!!

附Node环境

EventTarget = function EventTarget() {
}
EventTarget.prototype.toString = function toString() {return 'function EventTarget() { [native code] }'
}
Window = function Window() {
}
Window.prototype.toString = function toString() {return 'function Window() { [native code] }'
}
Window.prototype.requestAnimationFrame = function requestAnimationFrame(res) {
}
Object.setPrototypeOf(Window.prototype, EventTarget.prototype)
window = new Window()
window.toString = function () {return '[object Window]'
}XMLHttpRequest = {}
window.XMLHttpRequest = {}
XMLHttpRequest.prototype = {}class Location{constructor() {this.Symbol = "Location"}}location = new  Location()
location.href = "xxxxx"
location.ancestorOrigins = {}
location.origin = "xxx"
location.protocol = "https:"
location.host = "xxxxx"
location.hostname = "xxxxx"window.location = location// -----------------navigator---------------
Navigator = function Navigator() {}
Navigator.prototype.userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36"navigator = new Navigator()
window.navigator = navigatorscreen = {}
window.screen = screen

http://www.dtcms.com/a/524964.html

相关文章:

  • Tigshop开源商城系统 JAVA v5.6.0 版本已发布
  • 自己可以申请网站做外卖吗竞价广告推广
  • 做淘宝联盟网站要多少钱?权威的网站建设
  • 专门做钻石国外网站做精酿啤酒购买的网站
  • 【JUC】Future + CompletableFuture详解
  • 高端的食品行业网站开发上海网络开发公司
  • 建设网站书籍pdf下载东莞网站建设是什么意思
  • 华为OD机试双机位A卷 - 分弹珠游戏 (C++ Python JAVA JS GO)
  • 机器学习日报03
  • Ubuntu 20.04上安装MuJoCo 210
  • 耳机商城网站开发新华书店网上商城
  • xcode只显示堆栈不定位断点处
  • 米思米网站订单取消怎么做室内设计师怎么找
  • “十五五”制造业自立新篇:工业软件成为关键支撑
  • 加速度计LIS2DW12开发(2)----基于中断信号获取加速度数据
  • **发散创新:金丝雀发布的技术深度解析与实现**随着技术的不断进步,金丝雀发布作为一种重要的软件发布策略,被广泛应用于生
  • 矽塔 SA8208 36V输入耐压 8A过流保护阈值 大功率过压过流保护芯片
  • 在网上做翻译的网站网站建设费属于哪个会计科目
  • 网站如何收录沭阳网站建设方案
  • 东丽集团网站建设什么网站可以接图做图
  • SAP SD交货单执行跟踪报表分享
  • vs code工具新手操作技巧
  • Delft3D建模、水动力模拟方法及在地表水环境影响评价中的实践技术应用
  • Python多态与继承详解
  • 详解c++中的文件流
  • 2017网站建设费用html网页设计毕业设计作品
  • 单页响应式网站模板html5电商网页制作
  • PaddleOCR-VL:紧凑型0.9B参数模型在多语言文档解析领域表现卓越
  • syssetup!Wizard函数分析之comctl32!_CreatePropertySheetPage
  • Python爬虫数据存储:MySQL实战教程