You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现类似Fiddler AutoResponder的HTTP代理:替换指定URL内容

实现Electron应用请求拦截与内容替换方案

方法一:直接修改Electron应用的请求拦截(最可靠)

如果能接触到Electron应用源码,或可通过注入脚本修改,直接用Electron的session模块拦截请求是最直接的方式:

  1. 在Electron主进程中添加拦截逻辑:
const { app, BrowserWindow, session } = require('electron');

app.on('ready', () => {
  const mainWindow = new BrowserWindow();
  
  // 拦截目标域名下的所有请求
  session.defaultSession.webRequest.onBeforeRequest({ urls: ['*://randomdomain.com/*'] }, (details, callback) => {
    // 替换URL为你的站点地址
    const newUrl = details.url.replace('https://randomdomain.com', 'https://cliqqi.ml');
    // 执行重定向
    callback({ redirectURL: newUrl });
  });

  mainWindow.loadURL('原应用的启动地址');
});

若无法直接修改源码,可使用asar extract工具解压应用的asar包,修改主进程代码后重新打包,或通过第三方工具注入脚本。

方法二:Node.js搭建正确的代理服务器

之前代理失败大概率是未正确处理HTTPS请求与重定向逻辑,以下是可用的实现(基于http-proxy):

  1. 安装依赖:
npm install http-proxy https fs
  1. 代理脚本代码:
const http = require('http');
const https = require('https');
const httpProxy = require('http-proxy');
const fs = require('fs');

const proxy = httpProxy.createProxyServer({});

// 处理HTTP请求
const httpServer = http.createServer((req, res) => {
  rewriteAndProxy(req, res);
});

// 处理HTTPS请求(需生成自签证书)
const httpsServer = https.createServer({
  key: fs.readFileSync('server.key'),
  cert: fs.readFileSync('server.crt')
}, (req, res) => {
  rewriteAndProxy(req, res);
});

// 核心URL重写逻辑
function rewriteAndProxy(req, res) {
  if (req.url.includes('randomdomain.com')) {
    req.url = req.url.replace('randomdomain.com', 'cliqqi.ml');
    proxy.web(req, res, { target: 'https://cliqqi.ml', changeOrigin: true });
  } else {
    // 其他请求正常转发到原目标
    const target = new URL(`https://${req.headers.host}`);
    proxy.web(req, res, { target: target.origin, changeOrigin: true });
  }
}

// 启动服务
httpServer.listen(8080);
httpsServer.listen(8443);
  1. 配置Electron应用使用代理:
  • 启动时添加参数:--proxy-server=http://localhost:8080
  • 或在应用设置中手动将HTTP/HTTPS代理设为localhost:8080

方法三:Python mitmproxy拦截实现

mitmproxy专为HTTP/HTTPS拦截设计,配置简单:

  1. 安装mitmproxy:
pip install mitmproxy
  1. 编写拦截脚本(rewrite.py):
from mitmproxy import http

def request(flow: http.HTTPFlow) -> None:
    if "randomdomain.com" in flow.request.pretty_url:
        new_url = flow.request.pretty_url.replace("https://randomdomain.com", "https://cliqqi.ml")
        flow.request.url = new_url
  1. 启动mitmproxy:
mitmdump -s rewrite.py
  1. 配置Electron应用代理为localhost:8080,并安装mitmproxy的CA证书(否则HTTPS请求会因证书验证失败被拦截)。

关键注意事项

  • 处理HTTPS请求时,必须让Electron应用信任代理的CA证书,否则会触发证书错误。
  • 若Electron应用启用了webSecurity: false或自定义session配置,需调整拦截逻辑适配。
  • 确保替换后的站点返回内容的格式、结构与原站点一致,避免应用运行异常。

内容的提问来源于stack exchange,提问作者Niks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 06:36:35