
我们打开控制台找到api/v3/get的请求接口这个接口是为了获取返回的图片点开载荷(Payload)这里有很多参数但我们只需要逆向的接口只有cb值1、我们点击这个链接最上面的栈打上断点刷新这个图片然后我们在图片中点击箭头所指的栈往上滑就是cb生成的位置我们将前面打的断点取消在cb生成的位置打上断点然后刷新图片生成新的图片。2、接下来他会断在cb生成的位置我们点击图片所示的函数这个函数是cb的核心函数我们点进去就可以看见第二张图可以看见cb是函数_0x62692生成的。3、我们可以直接将这个js全部拷贝下来放入code这个js文件里然后我们将这个_0x62692函数变为全局变量以便后续get_cb这个js能够直接调用如第二张图所示。再创建get_cb.js文件并在里面写入如下代码require(./env) require(./code) function get_cb() { var cb window._0x62692(); console.log(cb); console.log(类型:, typeof cb); console.log(长度:, cb.length); return cb } console.log(get_cb())4、在运行get_cb之前我们还得写一个补环境的js再将它导入get_cb可以直接让AI写一个最后我们运行代码就能得到cb的值cb值的长度为92最终结果如下所示5、我们可以调用py代码测试一下这个是否有问题可以看到这个可以直接拿到它返回的图片6、我们在成功获取滑块图片后还有api/v3/check这个接口里面的参数data需要逆向这个是用于校验滑块是否通过的这个载荷里面的cb我们可以直接用前面的。7、我们同上打开这个请求的堆栈在第一个栈打上断点然后滑动滑块触发断点它真正生成data参数的位置如下图箭头所在位置我们直接点进去打上断点再重新滑动滑块触发这个断点。8、然后我们就会断在下面这个图片的页面这里就是data的生成位置我们直接提取这个JS代码9、这里面调用了很多code里面的一些函数这些函数我们都可以直接将它们写成全局变量赋值给window如下图的方式。10、我们补出来代码如下所示。这个token是最开始api/v3/get请求返回的trace是滑动的轨迹side是滑动的距离get_trace_data是将滑块验证码的轨迹点逐个加密然后返回加密后的轨迹列表最后我们运行代码就可以返回data的值了。然后我们只需要拿到滑块的距离将距离和最开始的返回的token传给get_data生成data再发起请求就可以了。require(./env) require(./code) require(./get_cb.js) function get_trace_data(trace, token) { var trace_list [] for (var i of trace) { var new_trace_data window._0x3855dc(token, i ) trace_list.push(new_trace_data) } return trace_list } function get_data(trace, token, side) { var trace_data get_trace_data(trace, token) var _0x4a4a62 window._0x148293[sample](trace_data, 50) var _0x15278a window._0xa8a0c6(window._0x3855dc(token, side/ 320* 100 )) var _0x4d98f2 window._0x6e07ce(window._0x148293[unique2DArray](trace ,20)); return JSON[stringify]( { d: window._0xa8a0c6(_0x4a4a62[join](:)), m: , p: _0x15278a, f: window._0xa8a0c6(window._0x3855dc(token, _0x4d98f2[join](,))), ext: window._0xa8a0c6(window._0x3855dc(token, 1 , trace_data.length)) } ) }