今日目标:拉勾网数据采集之data解密及返回值解密

1、确认数据接口,通过观察,我们发现XHR的请求返回值均是加密的,所以这里我们暂时先随便找一个接口破解一下,这么做是因为我猜测他的加密和解密逻辑是一套逻辑,这里我们以companyAjax.json这个接口位例子。

2、分析下请求参数的情况和返回值的情况,都是加密的,其中请求头中也有一些看似密文的字段,但是经过测试,其中不用变更就可以拿到数据,所以暂时我们先只解决请求体的加密和返回值的解密问题

3、打上XHR断点,通过调用堆栈,我们找到了一个控制路,发现data的赋值流程,是从上面w的值过来的,加密逻辑都在这里,我们打上断点,看看参数,以及返回值看看,通过控制台,我们确认了请求的参数,以及加密后的加密值

4、通过代码分析,我们发现A.$Z("?".concat(s))的作用就是将字符串变成了对象。这里我们都不用做处理,直接将对象给他用,更方便我们调节代码的机动性

5、通过控制台,我们确认了最终的data是从前面的w再加上urlencode编码和解码生成的

6、逆向w的值,将段点打在生成的关键函数T.q6上,进去看看这个函数做了什么,进去后我们发现就是一个aes加密。这下简单了。只需要找到key,iv就可以解决问题。

7、代码模拟试试看,对齐参数后和原网页核对,一摸一样

8、最终的data生成值,只需要微调一下代码就可以了,与原网页核对,一模一样

9、模拟请求的代码整合,成功获取请求,拿到的返回值一致

10、返回值解密部分,通过调用堆栈,我们找到了请求成功后的回调函数。这里我们确认了解密位置T.ow,点进去看看是个什么逻辑

11、进去之后发现是个aes解密,只需要找到key,iv就可以解决问题。

12、代码模拟,对齐参数解密试试看,发现解密成功

13、代码整合,解密成功

14、彩蛋:在这里咱们只是联系下js的熟练度,真正的数据,其实是个静态页面,哈哈

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 Python 的 PyV8 库来解密 JS 混淆加密代码。 这是一个使用 PyV8 的示例函数: ``` import PyV8 def decrypt_js(js_code): ctxt = PyV8.JSContext() ctxt.enter() func = ctxt.eval(js_code) result = func() ctxt.leave() return result ``` 输入参数是 JS 代码字符串,函数会返回解密后的代码。 请注意,这个函数可能无法解密所有类型的 JS 混淆加密代码。 ### 回答2: 要用Python编写一个解密JS混淆加密代码的函数,首先需要了解JS混淆加密的原理。JS混淆加密通常会使用一些算法对源代码进行变形和转换,使得代码难以被阅读和理解。 为了解密这种加密代码,可以使用Python的正则表达式(re)库来匹配和替换特定的模式,以还原出原有的代码。下面是一个简单的实现: ```python import re def decrypt_js(obfuscated_code): # 在此处编写解密逻辑,使用正则表达式匹配和替换模式 # ... return decrypted_code # 测试函数 obfuscated_code = "混淆加密后的代码" decrypted_code = decrypt_js(obfuscated_code) print(decrypted_code) ``` 在函数`decrypt_js`中,需要编写解密逻辑。具体的解密过程因加密代码的不同而异。如果您已经有具体的加密代码,请提供给我,我可以给您提供更具体的解密逻辑。 解密逻辑的核心是使用正则表达式来匹配和替换特定的模式。通过分析加密代码的规则,可以编写相应的正则表达式来还原出原有的代码。处理完加密代码后,将解密后的代码以返回值的形式返回即可。 需要注意的是,不同的JS混淆加密代码可能使用不同的加密算法和混淆方式,因此具体的解密逻辑需要根据代码的特点进行编写。以上示例只是一个简单的框架,具体的解密逻辑需要根据实际情况进行定制。 ### 回答3: 要解密JS混淆加密代码,可以使用Python的`execjs`模块。`execjs`模块可以运行JavaScript代码,因此可以用它来执行JS混淆加密代码,并获取解密后的结果。 首先,我们需要安装`execjs`模块。可以使用以下命令安装: ``` pip install PyExecJS ``` 接下来,我们可以编写一个函数,接收JS混淆加密代码作为输入,并返回解密后的结果。以下是一个示例代码: ```python import execjs def decrypt_js_code(js_code): ctx = execjs.compile(js_code) # 编译JS代码 result = ctx.call('decrypt') # 执行JS中的decrypt函数,获取解密后的结果 return result ``` 在上述代码中,`js_code`是JS混淆加密代码的字符串。`decrypt`是JS代码中用于解密的函数名,可以根据实际情况进行修改。 使用示例: ```python js_code = """ function decrypt() { // JS混淆加密的代码... // 执行解密操作,并返回解密后的结果 return decrypted_data; } """ result = decrypt_js_code(js_code) print(result) ``` 注意,上述代码只是简单示例,并不能直接运行。实际使用时,需要根据具体的JS混淆加密代码修改`decrypt`函数的内容,并确保JS代码中的逻辑正确。 希望以上信息对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值