如何用Charles Proxy改写响应体中的session_id为无效值?新手求助
如何用Charles Proxy改写响应体中的session_id为无效值
步骤1:启用Rewrite并创建规则集
- 打开Charles,点击顶部菜单 Tools > Rewrite
- 勾选「Enable Rewrite」,然后点击「Add」创建新规则集(命名比如「Modify Session ID」)
步骤2:配置目标请求匹配规则
切换到规则集的「Location」标签页,点击「Add」设置匹配条件,确保只命中你要修改的接口:
- Host:填写接口的域名(如
api.yourdomain.com,用*可匹配所有域名,建议精准匹配) - Path:填写接口路径(如
/v1/auth/get_session,同样支持*模糊匹配) - 其他条件按需设置,避免误改其他接口的响应
步骤3:添加响应体替换规则(核心)
切换到「Rewrite」标签页,点击「Add」,按以下配置:
- Type:选择「Body」
- Action:选择「Replace」
- Match Using:选择「Regular Expression」
- Find:输入正则表达式
"session_id":\s*"([^"]+)"解释:精准匹配JSON中
"session_id": "xxx"格式的内容,捕获引号内的原有session_id值 - Replace with:输入你要设置的无效值,比如
"session_id": "invalid_session_123"
注意:如果你的实际响应中使用了中文引号(如示例里的「“session_id"」),需要把正则改成
“session_id":\s*“([^”]+)”,不过接口返回一般是英文引号,优先用前者
步骤4:验证规则生效
- 如果接口是HTTPS,必须开启SSL代理:点击顶部菜单 Proxy > SSL Proxying Settings,勾选「Enable SSL Proxying」,点击「Add」输入目标域名和端口
443 - 移动端配置Charles代理后,触发目标接口请求,查看Charles的「Response」标签,确认
session_id已被替换为无效值
常见问题排查
- 规则未命中:检查「Location」的Host/Path是否匹配目标接口,可通过Charles的请求列表确认接口的Host和Path
- 正则不生效:检查响应体中
session_id的格式是否和正则匹配,比如有没有多余的空格、引号类型是否正确 - 响应未解压:如果响应是GZIP压缩的,去 Proxy > Settings > Miscellaneous 勾选「Uncompress responses」
内容的提问来源于stack exchange,提问作者Saro
相关产品推荐
相关产品推荐

