欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

mitmproxy 跳过 Ricochet js 密码验证

最编程 2024-04-20 15:23:45
...

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