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

使用Python requests库是否可以修改响应体后再回传?

该需求可以实现,根据使用场景不同有两类实现路径:

方案1:仅在当前Python程序的requests请求流程中修改响应

如果你不需要拦截第三方软件的请求,只在自己编写的requests调用逻辑里修改响应,可直接修改requests.Response对象的内置属性:

import requests

# 发起原始请求
resp = requests.get("https://example.com")
print("原始响应内容:", resp.text)

# 修改响应体,注意必须赋值为bytes类型
resp._content = b"自定义修改后的响应内容"
# 也可同步修改状态码、响应头等属性
resp.status_code = 200
resp.headers["Custom-Edit-Flag"] = "modified-by-python"

# 后续读取响应时返回的都是修改后的内容
print("修改后响应内容:", resp.text)

如果需要对所有requests请求统一修改响应,可使用requests内置的钩子函数:

def response_hook(resp, *args, **kwargs):
    # 可添加匹配规则,只修改符合条件的请求响应
    if "example.com" in resp.url:
        resp._content = b"钩子统一修改的响应内容"
    return resp

# 发起请求时绑定钩子,也可通过session全局绑定
resp = requests.get("https://example.com", hooks={"response": response_hook})
方案2:实现类似Fiddler/Charles的代理级响应修改功能

如果需要拦截其他软件、浏览器的请求并修改响应,可使用Python开发的开源代理工具mitmproxy,它支持通过Python脚本自定义拦截逻辑,完全覆盖专业代理工具的请求/响应编辑能力。
示例拦截脚本如下:

# 保存为modify_resp.py
from mitmproxy import http

def response(flow: http.HTTPFlow) -> None:
    # 匹配要修改的请求地址
    if flow.request.pretty_url == "https://example.com/":
        # 替换响应体
        flow.response.content = b"代理拦截修改后的响应内容"
        # 也可修改请求内容、响应状态码、响应头
        flow.response.status_code = 200

使用方式:安装mitmproxy后执行命令mitmproxy -s modify_resp.py,将需要拦截的设备/软件代理设置为127.0.0.1:8080,即可实现代理级的响应修改效果。

内容的提问来源于stack exchange,提问作者Corrupt-Bandit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:45:05