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

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

作者: Minusonewly | 来源:发表于2020-03-29 19:30 被阅读0次

    声明:该文章仅用于学习,不得用于商业用途,如有问题,请联系作者删除!
    目标网址: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年最新真气网反调试与参数反爬解决方案

          本文链接:https://www.haomeiwen.com/subject/cdpuuhtx.html