Ubuntu设置代理拦截

Posted by 晴天,修路 on January 15, 2026

拦截请求网址,返回特定内容

1
2
3
apt install python3 python3-pip -y

pip3 install mitmproxy
先卸载高版本werkzeug
1
pip3 uninstall werkzeug -y
安装绝对兼容的稳定版本
1
pip3 install werkzeug==2.2.3
窗口启动
1
mitmdump -s proxy_flow.py -p 8899
后台启动
1
nohup mitmdump -s proxy_flow.py -p 8899
查看服务是否运行
1
sudo lsof -i:8899
停止代理服务
1
sudo kill -9 $(sudo lsof -i:8899 -t)

py代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# -*- coding: utf-8 -*-
import json
from mitmproxy import http

# ========== 配置区 ==========
# 目标拦截URL
TARGET_URL = "http://XXX.XXX.com/site-api/mobile/flow/recharge/products/"
# 监听端口
PROXY_PORT = 8899
# 你提供的完整响应体(直接替换,无修改)
CUSTOM_RESPONSE_BODY = 响应体

# ========== 核心拦截逻辑 ==========
def response(flow: http.HTTPFlow) -> None:
    # 仅拦截指定的GET请求
    if flow.request.url == TARGET_URL and flow.request.method == "GET":
        # 直接替换响应体,其他所有响应信息(状态码、响应头)完全不变
        flow.response.text = json.dumps(CUSTOM_RESPONSE_BODY, ensure_ascii=False)
        print("✅ 已成功替换目标URL的响应体")