我正在使用Charles Proxy重写来自API的响应以进行测试。
如果我设置断点,我可以按照自己的意愿完全重写原始响应。
但是,如果我想通过“重写”工具自动化它,我就卡住了,似乎你无法修改状态代码:
你知道我错过了什么吗?
答案 0 :(得分:97)
答案 1 :(得分:12)
使用Charles 3.8+,您可以重写状态代码。
在重写工具中,选择"输入:响应状态"。
在匹配字段和替换字段中,请注意Charles希望传入和重写的状态与格式"\d{3} .*"
匹配。这意味着除了数字状态代码之外,您的重写状态必须还有一个消息部分。
例如:
匹配值:201。*
替换值:502 Bad Gateway
从替换值中省略消息将导致不重写状态行。 你可以看到查尔斯'在每个调用摘要的“注释”部分中重写工具输出消息。
答案 2 :(得分:9)
这不是您问题的直接答案,但正如我在上面的评论中指出的那样,我处于同样的情况,我找到了一个使用不同工具的解决方案,对我来说效果很好。
而不是Charles,我使用这个简短的Python mitmproxy运行mitmdump,特别是rewriting script:
#!/usr/bin/env python
def response(context, flow):
if '/somePath' not in flow.request.path:
return
flow.response.status_code = 404
要将其挂钩到代理中,我会像这样运行mitmdump
:
mitmdump -s /path/to/rewriting-script.py
并且效果很好。
我在OS X上,我将网络接口的Web代理配置为127.0.0.1端口8080.
答案 3 :(得分:4)
最终编辑:Marc Liyanage现在对这个问题的答案是最正确的。
不,你不是,我认为不可能重写状态代码。
我无法将其添加为评论(新用户),但有一种解决方法是:
我已经尝试使用Map Local,这对于此非常适合,但是Charles将自己的200 OK状态代码添加到所有返回的文件中。
编辑:您还可以在各个响应中使用断点并修改代码。
答案 4 :(得分:0)
1-选择Tools > Rewrite
或OPTION + CMD + R
2-选择Enable Rewrite
,然后选择Add
3-在字段中填写您的详细信息
4-添加类型和操作
5-选择操作类型-Response Status
(针对我们的情况)-,写入值要更改-500-,替换值要写入-200-
最终步骤:
6-您准备好与Charles一起使用回复的状态代码
答案 5 :(得分:0)
这并不是对Charles的直接回答,但是您可以编写Proxyman(Scripting feature)来轻松地更改JS响应的JS代码
例如,
function onResponse(url, request, response) {
// Change to 404 status code for the matching request
response.statusCode = 404;
return response;
}
以下是您可以执行的Snippet Code的完整列表:
免责声明:我是Proxyman的创建者。希望它能对您有所帮助。