Nodejs爬虫遇到js加密问题 想请教一下前端大哥们

发布于 1周前 作者 sinazl 来自 nodejs/Nestjs

Nodejs爬虫遇到js加密问题 想请教一下前端大哥们
不懂为什么这个 JSON.parse 可以将数据修改了?我应该怎么进行逆向去找?

14 回复

s 是正确的数据 l 是进行加密后的数据


啥都看不出来…

parse 被 hook 掉了

#4 那应该怎么解决 可以提供下思路吗

看链接,剩下的自己搞吧

#7 多谢!方便告诉我是怎么找到 e1(e2(str))的执行吗?

u.c(u.d(JSON.stringify(l.payload)))

u.d=e1
u.c=e2


function e2(e) {
if (null == (e = _u_e(e)))
return null;
for (var t = “”, n = 0; n < e.length; n++) {
var r = _p.charCodeAt(n % _p.length);
t += String.fromCharCode(e.charCodeAt(n) ^ r)
}
return t

function e1(e) {
if (null == e)
return null;
for (var t, n, r, o, i, a, u, c = “”, s = 0; s < e.length; )
o = (t = e.charCodeAt(s++)) >> 2,
i = (3 & t) << 4 | (n = e.charCodeAt(s++)) >> 4,
a = (15 & n) << 2 | (r = e.charCodeAt(s++)) >> 6,
u = 63 & r,
isNaN(n) ? a = u = 64 : isNaN® && (u = 64),
c = c + _keyStr.charAt(o) + _keyStr.charAt(i) + _keyStr.charAt(a) + _keyStr.charAt(u);
return c
}

断下后,F11 单步走就跟到了。

楼上大佬说的很清楚了,一步步找就行。我一般是 charles 把 js 整在本地测试打函数

#11 好的 多谢!

#10 谢谢大佬!

遇到Node.js爬虫中的JS加密问题,可以尝试以下步骤来解决:

分析加密参数

  1. 定位加密代码

    • 使用开发者工具(如Chrome的DevTools)定位网页中的JS加密代码。
    • 查找影响数据获取的加密参数,通过对比不同请求的参数变化来确定。
  2. 理解加密逻辑

    • 分析加密参数是如何生成的,可能是通过之前的请求传递,也可能是在某个JS文件中生成。
    • 如果加密逻辑在JS文件中,需要找到对应的JS文件并理解其代码。

实现解密逻辑

  1. 在Node.js中执行JS代码

    • 如果加密逻辑简单,可以直接在Node.js中模拟执行。
    • 使用execjs库来执行调试好的JS加密代码。
  2. 示例代码

    const execjs = require('execjs');
    const context = execjs.compile(`
        function encrypt(word) {
            // 假设这是从网页JS代码中提取的加密函数
            var tkey = "your_key";
            var tiv = "your_iv";
            var CryptoJS = {/* 引入CryptoJS库 */};
            // ... 加密逻辑
            return encrypted.toString();
        }
    `);
    const encryptedWord = context.call('encrypt', 'your_word');
    console.log(encryptedWord);
    
  3. 调用API

    • 在获取到加密参数后,使用Node.js的HTTP库(如axiosnode-fetch)调用API,并传入加密参数。

总之,解决Node.js爬虫中的JS加密问题需要对前端技术和Node.js有一定了解,同时需要耐心和细心地分析网页的JS代码。

回到顶部