美文网首页
mitmproxy 跳过瑞数js加密验证

mitmproxy 跳过瑞数js加密验证

作者: 木语沉心 | 来源:发表于2020-09-28 17:07 被阅读0次

mitmproxy消息拦截-突破瑞数js加密验证

老规矩先上效果图 :
mitproxy_1.gif

一 先介绍 mitmproxy :

>>请移步到官网: https://www.mitmproxy.org/

官网上图

二 反爬思考:

当需求网站js加密混淆, 动态cookies, 加密参数级别太高直接破解难度极高时
此时实现需求绕过反爬的方式有如下几种:

  1. selenium 模拟浏览器驱动


    image.png
  2. fiddler 抓包软件内部脚本


    image.png
  3. 谷歌-油猴编写 js hook插件 将加密参数通过sokect发送至后台

  4. 其他终端模拟程序 如:PyAutoGUI,PyUserInput 等

  5. 使用mitmproxy抓包拦截 原理可类比fiddler 支持三种模式 其中Python-API是神器


    image.png

三 python-api mitmdump 使用

1 实用范围:

几乎支持网络传输生命中的所有event事件处理:
插件通过事件与mitmproxy的内部机制挂钩。这些是在插件上作为一组众所周知的名称的方法实现的。许多事件接收流对象作为参数—通过修改这些对象,插件可以动态地改变流量。例如,这里是一个插件,添加了一个响应头的计数,响应的数量看到:

image.png
2 主要应用的三大事件:

1 HTTP Events;2 WebSocket Events; TCP Events 来源 >> https://docs.mitmproxy.org/stable/addons-events/

简单使用示例:

** HTTP Events **
在http请求流程中的各个阶段如 http_connect,request,responseheaders, response 都可以进行自定义消息处理
Example:

from mitmproxy import http

def request(flow: http.HTTPFlow) -> None:
    # 拦截指定站点链接 - 修改返回响应
    if flow.request.pretty_url == "http://example.com/path":
        # 自定义响应
        flow.response = http.HTTPResponse.make(
            200,  # (optional) status code
            b"Hello World",  # (optional) content
            {"Content-Type": "text/html"}  # (optional) headers
        )
        # 获取响应cookie
        cookies = flow.response.cookies
        print(cookies)

        # 修改响应内容
        js_script = '''<script> console.log('消息注入成功') </script> \n\r'''
        flow.response.text = js_script + flow.response.text
        # '''''''

基于如上的例子 这样就能在消息返回阶段做很多事情了
如:注入js代码(很多外挂就是这么干的);拦截获取cookies;直接保存响应html源码 等等
这样js,cookies ,动态加密等问题就浏览器环境直接帮我们做了 我们拦截拿现成的参数结果就行

四 最后代码

附上完整代码: 湖北省发改委 瑞数反爬虫

> Github地址 : https://github.com/Forbilly/ruishu_untispider
作者:Silva

瑞数反爬虫.png

相关文章

  • mitmproxy 跳过瑞数js加密验证

    mitmproxy消息拦截-突破瑞数js加密验证 老规矩先上效果图 : 一 先介绍 mitmproxy : >>...

  • js逆向-捕捉瑞数等eval加密信息

    代码传入浏览器运行即可在控制台查看eval代码

  • 《Java加密与解密的艺术》读书笔记

    学习目标:了解加密算法选型,并能使用正确的算法进行加密。 学习目录:1、电子邮件传输算法——Base642、验证数...

  • 数字签名

    签名:用私钥加密 验证:用公钥解密 加密:用公钥加密 解密:用私钥解密 数字签名签名的数据 数字签名主要使用来做数...

  • CocoaPods跳过验证

    我们在使用私有组件库的时候,有时候会遇到这个问题,podspec明明可以正常使用,:path和:git方式使用都正...

  • Java爬虫入门篇(二)Java 8 Nashorn 动态执行j

    场景描述:一些网站的 response 信息是加密数据,页面显示的时候通过调用js函数进行解密,我们爬到这些加密数...

  • JavaScript数独验证

    Js数独验证 在网上看到一道数独验证的题。 数独游戏是在一个9*9的方格中进行填数字的游戏,需要满足的规则是每行每...

  • 2021-05-14

    Math.random().toString(36).substring(3,7)js生成随机4位数验证码

  • PHP生成图形化验证码

    参考 PHP 代码 html中调用 js中实现点击切换验证码 php中进行校验(从session中取验证码显示的数...

  • Chainlink

    Chainlink功能主要有: 为智能合约获取加密货币价格; 生成可验证的随机数; 利用Chainlink合约库请...

网友评论

      本文标题:mitmproxy 跳过瑞数js加密验证

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