声明:
本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
逆向前言
12月份的时候更新了过一次变的很恶心,这几次更新都是针对补环境的,对自动化和纯算选手应该没啥难度。
逆向过程
随便拷贝了一些数组来说一下
52是window检测。
70是检测了事件。
77检测了localStorage
104是navigator检测
118是performace其他就比较固定没啥要说的。
其他的就比较规定没啥好说的直接扣代码,补环境都一样逻辑。
- 48: 1
- 49: ""
- 51: -1
- 52: 255
- 53: 108
- 54: 0
- 55: 0
- 60: 0
- 62: (8) [0, 0, 1, 148, 187, 55, 184, 104]
- 66: 0
- 68: 1
- 69: 0
- 70: [Array(4)]
- 71: 0
- 72: 0
- 73: []
- 74: 0
- 77: [Array(3)]
- 79: ƒ anonymous( )
- 80: []
- 83: []
- 84: []
- 88: Fri Jan 31 2025 15:16:18 GMT+0800 (中国标准时间) {toString: ƒ}
- 92: 0
- 95: WebGLRenderingContext {canvas: canvas, drawingBufferWidth: 300, drawingBufferHeight: 150, drawingBufferColorSpace: 'srgb', unpackColorSpace: 'srgb', …}
- 96: false
- 98: (4) [2, 2, 2, 2]
- 100: 0
- 101: 0
- 104: 122357266022
- 105: 2
- 107: 2
- 111: 1738307778664
- 112: 1
- 113: 0
- 115: []
- 116: []
- 117: 1
- 120: 0
- 122: 1
- 125: -1
- 126: 0
部分补环境代码
建议补环境用jsdom比较友好。
const jsdom = require('jsdom'); const canvas = require('canvas'); const {JSDOM} = jsdom; const dom = new JSDOM(`<!DOCTYPE html><p>Hello world</p>`, { url: '' }); window = dom.window; XMLHttpRequest = window.XMLHttpRequest; document = window.document; //document对象:代表给定浏览器窗口中的HTML文档, navigator = window.navigator; // 关于运行当前脚本的应用程序的相关信息 location = window.location; //对象包含当前页面的URL信息 history = window.history; // 历史会话 screen = window.screen; // 浏览器屏幕 document.referrer = "" setInterval = function () { } setTimeout = function () { }
结果
总结
1.能用自动化就自动化,毕竟231更了很多个版本对最主流自动化爬虫框架基本没检测。后续用自动化在实现一个tx的231。
2.出于安全考虑,本章未提供完整流程,调试环节省略较多,只提供大致思路,具体细节要你自己还原,相信你也能调试出来。