基于Proxyman的实时解密和预览方案

简介

本篇主要讲的内容是基于Proxyman的抓包 自动化解密便捷预览实践,希望能对大家有所帮助~

更多高级玩法详见官方文档Overview | Proxyman

实现

1.初识proxyman

Proxyman · Debug, intercept & mock HTTP with Proxyman

有钱用正版,没钱...o(╥﹏╥)o

2.如何连接设备

对比Charles虽然证书安装流程差不多,但Proxyman的连接说明可以说是非常的方便

3.配置SSL代理列表

SSL Proxying | Proxyman

添加域名后进行SSL代理设置即可,可设置黑白名单

4.脚本工具使用

Scripting | Proxyman

可以通过自定义脚本实现请求和响应拦截

添加脚本

脚本示例(基于DES加密方式举例)

php 复制代码
/// This func is called if the Request Checkbox is Enabled. You can modify the Request Data here before the request hits to the server
/// e.g. Add/Update/Remove: host, scheme, port, path, headers, queries, comment, color and body (json, form, plain-text, base64 encoded string)
///
/// Use global object `sharedState` to share data between Requests/Response from different scripts (e.g. sharedState.data = "My-Data")
///
const CryptoJS = require("@libs/crypto-js.min.js");

async function onRequest(context, url, request) {
  if (request.body) {
    const result = decrypt_des(request.body);
    request.customPreviewerTabs["decrypt"] = result
  }
  return request;
}

/// This func is called if the Response Checkbox is Enabled. You can modify the Response Data here before it goes to the client
/// e.g. Add/Update/Remove: headers, statusCode, comment, color and body (json, plain-text, base64 encoded string)
///
async function onResponse(context, url, request, response) {
  if (response.body) {
    const result = decrypt_des(response.body);
    response.customPreviewerTabs["decrypt"] = result
  }
  return response;
}

// 替换为你的密钥和初始向量(IV)
const key = '你自己的秘钥Key';  // 密钥
const iv = '你自己的秘钥IV';   // IV(初始向量)

// 自定义DES解密函数
function decrypt_des(crypt_text) {

  try {
    // 将16进制字符串转换为WordArray
    const data = CryptoJS.enc.Hex.parse(crypt_text);

    // 创建key和iv的WordArray对象
    const keyWordArray = CryptoJS.enc.Utf8.parse(key);
    const ivWordArray = CryptoJS.enc.Utf8.parse(iv);

    // 使用DES-CBC模式解密
    const decrypted = CryptoJS.DES.decrypt(
      { ciphertext: data },
      keyWordArray,
      {
        iv: ivWordArray,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7  // 等同于Python的unpad
      }
    );

    // 转换为UTF-8字符串
    const result = decrypted.toString(CryptoJS.enc.Utf8);
    return result;
  } catch (error) {
    console.error('DES解密失败:', error);
    return null;
  }
}

5.添加预览Tab

Custom Previewer Tab | Proxyman (官网搬运工)

在脚本中使用自定义预览Tab

总结

非常好使~o( ̄▽ ̄)d 👍🏻👍🏻👍🏻

相关推荐
明月_清风17 分钟前
vLLM 深度实战:2026 年生产级 LLM 推理引擎完全指南
前端·后端·ai编程
风月说与山鬼17 分钟前
七、uni-app页面与组件生命周期
前端·uni-app
绿岛之北22 分钟前
Electron 安全第三章:URL 加载与 WebView
前端·electron
sunoo-22923 分钟前
C 语言文件 IO 全攻略:从基础函数到实战踩坑(BMP 读取 + 词典查询)
linux·c语言·前端·笔记·vscode·学习
Shinner欣儿24 分钟前
React18 并发渲染小记
前端
用户9210802628633 分钟前
AI 对话里的消息时间线分页:上滑加载更多历史记忆的实现与坑点
前端
PedroQue9936 分钟前
Vue-Router 2.4.0 新增可控重定向功能
前端·uni-app
阿萨德528号1 小时前
npm 包发布实战指南:从零发布、更新迭代到版本治理
前端·npm·策略模式
IT_陈寒1 小时前
Vue的v-for为啥把我的渲染顺序搞乱套了?
前端·人工智能·后端
sir.山2 小时前
在 Vue 3 项目中使用 Mock 数据
前端·vue.js·vue3·vite