收到群友消息,小红书timestamp2更新了。
滑块问题
建议调试的时候删除timestamp2就行,不要把所有cookie都删了,否则进入无限滑块。 尽管只删除timestamp2,生成的参数值一样。
开控制台的时候,把这个div删掉就可以拖动了。
如果还是进入无限滑块环节,换下IP,过一会儿会解封。
接口分析
之前的registerCanvas接口也更新了,FormData中的sign进行了加密。
timestamp2现在是服务端返回的,请求时还是只需要携带timestamp2。
Sign分析
掏出祖传的XHR断点。 输入: /v2/shield/registerCanvas , 删除timestamp2刷新页面
往回走两步,可以看到参数 i 和 u。
对应的 id 和 sign。
在 call stack 中向下调试。
找到了u = I.qrTqB(l, I.PNXDL, JSON[r(1347)](i)) ,把参数都打印下看看。
即:
所以扣下来应该是这样的流程
经过一阵分析后,发现关键位置在 I[o(1159)](function(n, t, e) {} 这里。
I.“uPhZo” = function(n, t, e, r) { return n(t, e, r) },
所以说最后的调用如下图所示:
eyJ1c2VyQWdlbnQiOiJNb3ppbGxh 是 浏览器参数base64之后的结果。
代码语言:javascript复制 '{"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36","webdriver":false,"language":"zh-CN","colorDepth":24,"deviceMemory":8,"hardwareConcurrency":8,"screenResolution":"1920;1080","availableScreenResolution":"1920;1040","timezoneOffset":-480,"timezone":"Asia/Shanghai","sessionStorage":1,"localStorage":1,"indexedDb":1,"openDatabase":1,"cpuClass":"unknown","platform":"Win32","plugins":["PDF Viewer::Portable Document Format::application/pdf~pdf,text/pdf~pdf","Chrome PDF Viewer::Portable Document Format::application/pdf~pdf,text/pdf~pdf","Chromium PDF Viewer::Portable Document Format::application/pdf~pdf,text/pdf~pdf","Microsoft Edge PDF Viewer::Portable Document Format::application/pdf~pdf,text/pdf~pdf","WebKit built-in PDF::Portable Document Format::application/pdf~pdf,text/pdf~pdf"],"canvas":"10cfbbb02b2606dbc2ccb15a3cd2b558","adBlock":false,"hasLiedLanguages":false,"hasLiedResolution":false,"hasLiedOs":false,"hasLiedBrowser":false,"touchSupport":"0;false;false","fonts":"4;7;8","audio":"124.04347527516074"}'
扣代码补环境
H中有加解密相关变量名。
参数中会判断是encrypt还是decrypt,加密方法最终会走到case 9 中 return T中。
关于补变量名的问题,可以写个正则统一替换。
流程总结
Sign生成流程是先把浏览器信息base64,然后加密得到k,s,再把k和s通过FbmlO方法拼接起来得到b,然后对b再进行加密得到最终的sign值。