2020年最新真气网反调试与参数反爬解决方案

声明:该文章仅用于学习,不得用于商业用途,如有问题,请联系作者删除!
目标网址:https://www.aqistudy.cn/

反爬手段:

  1. 反调试机制
  2. 参数加密

一、反调试机制

当我们打开网页进入开发者工具时,就会触发它的反调试机制,如图:


反调试效果.png

解决方法

在反调试函数打上断点,如图第191行,重新运行,在Console处输入以下内容,将反调试方法滞空即可

function endebug(){}

二、参数加密

  • 直接全局搜索参数名hWKRQHbQa(这个是动态的)
    image.png
  • 可以看到这是一个eval加密,直接去掉eval,把剩下的拉去console打印出来


    image.png
  • 把结果拉去编辑器格式化一下,方便查看


    image.png
  • 结果已经出来了


    image.png
  • 这个即是参数名


    image.png
  • 这些即是参数的加密规则
  • 至于这个method的值是什么,断点调试即可得出,这里不详细讲述


    image.png
  • 至此完成了对参数的解密。
  • 至于如何用python eval解密 GitHub上已有人提供相应的包,可以尝试调用后,正则匹配出想要结果。https://github.com/thisforeda/js_eval_unpack

附上代码:
注意:这里有一个坑,这个data不能直接写成appId + method + timestamp + clienttype + json.dumps(obj) 原因json.dumps后冒号:后面有个空格,会影响md5的结果。

import hashlib
"""
:param secret参数 解密
"""


appId = '5ebd73491b42ee0561932f9b40c576a9'    # 该appId为测试,实际使用aqistudy文件中得出的appId
clienttype = 'WEB'
method = 'GETDATA'
# timestamp = str(int(time.time()*1000))  # 实际使用
timestamp = '1584168590849'  # 测试使用
obj = {"city": "临安"}  # 测试使用  实际根据城市变化
data = appId + method + timestamp + clienttype + '{"city":"'+obj['city']+'"}' 
 # 这里有一个坑,这个data不能直接写成appId + method + timestamp + clienttype + json.dumps(obj) 原因json.dumps后冒号:后面有个空格,会影响md5的结果
print(data)
md = hashlib.md5()
md.update(data.encode('utf-8'))
print(md.hexdigest())

# "9c341eebd3cc24d786aa0c96e008917f"   测试得出结果

你可能感兴趣的:(2020年最新真气网反调试与参数反爬解决方案)