恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

抖音a_bogus,mstoken全参数爬虫逆向补环境2024-06-15最新版

  • 首页
  • 资讯中心
  • /
  • 抖音a_bogus,mstoken全参数爬虫逆向补环境2024-06-15最新版

相关资讯

AI视频生成的实际成本:从“两根棒棒糖”到真实账单 2026/8/31 3:48:02
瑞雷波正反演实战:raylee工具从频散曲线到速度模型 2026/8/31 3:48:02
数据中心租赁新趋势:从自建到按需租用,算清成本与电池容量 2026/8/31 3:48:02

最新资讯

轻量模型登顶背后:GLM-5.3-Flash与Ox Alpha的工程化接入实战
Replit智能模型路由:免费版与付费版差异背后的资源调度逻辑
三点式振荡电路详解:从LC反馈原理到面试实战判断
STM32F407从零实现CNC雕刻机控制源码解析
免费REST API统一获取LLM定价与上下文窗口,助力AI成本估算与模型选型
火车也会堵车?其实是列车运行图与追踪间隔在调适

今日推荐

MCU无DAC如何用定时器+DMA 2D输出高保真任意波形
Cortex-M3 Flash下载失败?从编程错误标志到供电瞬态排查
STM32 TouchGFX屏幕切换Transition优化:原理、配置与排障实战

本周热门

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析
数字电路时序基石:深入理解建立时间与保持时间
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

抖音a_bogus,mstoken全参数爬虫逆向补环境2024-06-15最新版

发布时间:2026/8/31 3:53:02
抖音a_bogus,mstoken全参数爬虫逆向补环境2024-06-15最新版 抖音a_bogus,mstoken全参数爬虫逆向补环境2024-06-15最新版-----------------------------------------### 源码获取已放在github上抖音部分已全面更新为a_bogus算法。 除了抖音还包括快手小红书哔哩哔哩微博京东淘宝等平台旨在帮助大家学习使用。 链接: https://github.com/ShilongLee/Crawler### 接口及参数1. 打开网页版抖音右键视频进入详情页。2. F12打开控制台筛选detail然后刷新网页找到请求。3. 可以发现我们本次的参数目标a_bogus。a_bogus有时长度为168有时为172都可用。4. msToken在cookie中可以获得msToken过期时间为7天。5. screen_width、screen_height对应cookie中的dy_swidth、dy_sheight。6. cpu_core_num、device_memory对应cookie中的device_web_cpu_core、device_web_memory_size。7. verifyFp、fp对应cookie中的s_v_web_id。8. webid可以从doc中获得user_unique_id。### 找到加密代码* 找到入口 首先看一下接口的加载器也就是发送请求的调用栈挨个查看之后不难发现加密的入口应该在这两处由于栈中的调用顺序是从下往上所以我们先看下面那个入口。* 查看参数 首先我们查看入口参数不难发现arguments[1]是请求的url那么我们可以根据url包含detail去打一个断点然后一步一步进行调试看看发生了什么。* 断点调试 单步步入之后开始了加密参数的流程我们发现这里的代码明显是混淆过的上下翻动后我们发现这是jsvmp文件。单步跳出后直接到了请求流程说明在这里面已经完成了a_bogus的加密所以我们可以断定加密参数是在调用栈中另一个地方调用的。所以我们再查看一下调用栈中的另一个入口。可以看到加密最后运行的函数是s.apply(b,u)并且赋值给了l那么我们可以大胆猜测一下这个l就是返回的加密结果但是我们知道request中有很多加密参数而且这个代码是jsvmp所以我们可以认为这里是调用了jsvmp的指令函数这个指令函数加密了我们的a_bogus但是也被其他的一些需求调用所以说我们要定位到加密a_bogus的时机。我们可以知道a_bogus的长度为172所以我们可以在这里打条件断点当s.apply(b,u).length 172时断住。然后进行观察。断住之后我们发现结果大概率是我们要的a_bogus后面我们会验证一下参数为uri以及UserAgent。那么我们之后调用的时候可以直接调用这个函数把相应的参数传进去就可以得到我们想要的结果。由于这个s.apply可能调用的函数有很多种我们不知道它调用的具体函数是哪个因此我们需要找到函数调用入口也就是函数导出。至此我们先验证一下结果。### 补环境1. 首先我们把整个bdms.js拿下来本地运行进行补环境。 2. 然后运行后发现window is not defined我们定义一个windowglobal补个window环境再试试看。3. 我们发现这里莫名其妙报了个错由于代码混淆加上各种循环很难找到这个变量是什么所以我们猜测大概率是获取某些环境没有获取到所以我们加代理看看他获取了什么没获取到导致的。我们添加下列代理来看看检测了哪些环境。 function get_enviroment(proxy_array) { for (var i 0; i proxy_array.length; i) { handler ‘{ ’ ’ get: function(target, property, receiver) { ’ ’ console.log(“方法:”, get “, “对象:”, ’ ”’ proxy_array[i] ‘ ,’ ‘ 属性:“, property, ’ ” 属性类型:“, ’ typeof property, ’ // ” 属性值:“, ’ target[property], ’ ” 属性值类型:, typeof target[property]); ’ ’ return target[property]; ’ ’ }, ’ ’ set: function(target, property, value, receiver) { ’ ’ console.log(“方法:”, set “, “对象:”, ’ ”’ proxy_array[i] ‘ ,’ 属性:“, property, ’ ” 属性类型:“, ’ typeof property, ’ // ” 属性值:“, ’ target[property], ’ ” 属性值类型:, typeof target[property]); ’ ’ return Reflect.set(…arguments); ’ ’ } ’ ‘}’ eval(try{ ’ proxy_array[i] ; ’ proxy_array[i] ‘new Proxy(’ proxy_array[i] , ’ handler )}catch (e) { ’ proxy_array[i] {}; ’ proxy_array[i] ‘new Proxy(’ proxy_array[i] , ’ handler ‘)}’) } } proxy_array [‘window’, ‘document’, ‘location’, ‘navigator’, ‘history’, ‘screen’, ‘aaa’, ‘target’] get_enviroment(proxy_array) 4. 我们发现检测的还不少。加上代理之后我们发现在访问wondow.requestAnimationFrame时没访问到然后紧接着报错了那么说明对window.requestAnimationFrame进行了校验因此我们可以补一下 这个是一个函数我们补一个空函数试试。5. 补完后发现又有报错。我们发现访问window._sdkGlueVersionMap时XMLHttpRequest报错那我们都补一下。我们可以到浏览器的控制台获取window._sdkGlueVersionMap的值。6. 全部补完之后我们发现终于没报错了说明正常运行了下一步我们需要找到加密函数的入口然后进行最后的加密操作。#### 函数入口我们重新断点进入看看到底调用了什么我们可以发现首次调用的函数是这里我们可以单步调试进去看一下什么时候调用的s.apply。断住之后我们进去看看什么时候调用到了我们需要的s.apply所以我们需要在s.aaply处打个断点。打住断点之后由于我们之前在这里断点过所以我们可以通过查看u[3]的url是否包含我们的本次请求detail查看。断住s.apply后我们可以知道这里调用的函数就是我们需要的导出的函数我们单步步入发现是这个函数。这个函数的样子我们好像见过没错这个函数有好几处我们可以通过59 ! m找到他。我们可以看到实际上u function ()把加密函数赋值给了u所以我们直接在这里导出即可对了别忘了加上,。### 凑合用的结果其中我们发现调用sign之后又多检测了很多环境变量为了环境更加真实和防止被检测的风险尽量补全环境是最好的即使会降低运行速度如果追求运行速度我们可以尝试难度更高的纯算逆向。而且补空函数并不能通过环境的检测因此我们需要把整个环境补全最终补全的环境代码如下: window global document {} document.all {} // 全局搜索document.all发现并没有检测因此这里不补typeof navigator {} navigator.userAgent ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36’ document.createElement function (name) { if (name ‘span’) { return [{}] } } document.documentElement ‘’ document.createEvent function () { return ‘createEvent() { [native code] }’ } document.createElement function () { return ‘createElement() { [native code] }’ } window.requestAnimationFrame function () { return ‘requestAnimationFrame() { [native code] }’ } window._sdkGlueVersionMap { “sdkGlueVersion”: “1.0.0.51”, “bdmsVersion”: “1.0.1.5”, “captchaVersion”: “4.0.2” } XMLHttpRequest function () { return ‘XMLHttpRequest() { [native code] }’ } window.fetch function () { return(input, init) { var _this6 this; var url, method; if (IS_REQUEST_API_SUPPORTED input instanceof Request) { url input.url; method input.method…} window.onwheelx { “_Ax”: “0X21” } navigator.vendorSubs { “ink”: 1718453241914 } window.innerWidth 1920 window.innerHeight 1080 window.outerWidth 1914 window.outerHeight 1026 window.screenX 2563 window.screenY 412 window.pageYOffset 0 window.pageYOffset 0 window.screen { availWidth: 1920, availHeight: 1032, width: 1920, height: 1080, colorDepth: 24, pixelDepth: 24, orientation: { type: “landscape-primary”, angle: 0 }, }; navigator.platform ‘Win32’ document.body ‘’ ### 全环境补完正确结果需要注意的是环境检测远不止这一点还有dom之类的检测这部分大家可以通过断点一步步调试最终补好所有环境。### 测试成功!!!需要注意的是每个接口加密参数不同需要自己去探索其中详情接口和回复接口如下:### 项目参考这是我写的爬虫项目后续抖音部分将全面更新为a_bogus算法敬请关注。https://github.com/ShilongLee/Crawler

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号