是否可以使用Charles Proxy重写状态代码?

时间:2013-01-16 14:00:27

标签: proxy rewrite charles-proxy

我正在使用Charles Proxy重写来自API的响应以进行测试。

如果我设置断点,我可以按照自己的意愿完全重写原始响应。

但是,如果我想通过“重写”工具自动化它,我就卡住了,似乎你无法修改状态代码:

Rewrite Rule panel

你知道我错过了什么吗?

6 个答案:

答案 0 :(得分:97)

更新:Charles Proxy的3.8版刚刚发布,具有重写状态的能力。来自release notes

  • 重写工具:允许重写响应状态

此版本的重写UI添加了新的“响应状态”规则类型:

enter image description here

答案 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现在对这个问题的答案是最正确的。

不,你不是,我认为不可能重写状态代码。

我无法将其添加为评论(新用户),但有一种解决方法是:

  1. 在服务器上创建资源,该服务器将返回您需要的代码,或者找到可以执行的代码。
  2. 使用Map Remote功能,映射到返回代码的资源。
  3. 我已经尝试使用Map Local,这对于此非常适合,但是Charles将自己的200 OK状态代码添加到所有返回的文件中。

    编辑:您还可以在各个响应中使用断点并修改代码。

答案 4 :(得分:0)

1-选择Tools > RewriteOPTION + CMD + R

Rewrite selection


2-选择Enable Rewrite,然后选择Add

Enable Rewrite selection


3-在字段中填写您的详细信息

Details


4-添加类型和操作

Type and Action


5-选择操作类型-Response Status(针对我们的情况)-,写入值要更改-500-,替换值要写入-200-

Configure Type and Action


最终步骤:

6-您准备好与Charles一起使用回复的状态代码

Finally

Official site of Charles Web Debugging Proxy

答案 5 :(得分:0)

这并不是对Charles的直接回答,但是您可以编写ProxymanScripting 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的创建者。希望它能对您有所帮助。