2013-01-16 89 views
33

我正在使用Charles Proxy来重写来自API的响应以用于测试目的。是否有可能用Charles Proxy重写状态码?

如果我设置一个断点,我允许,我想完全重写原始响应。

但是,如果我想通过“重写”工具来自动执行它,我卡住了,似乎你不能修改的状态代码:

Rewrite Rule panel

你知道,如果我遗漏了什么?

+1

我只是想知道同样的事情。我现在需要这个功能,所以我向Charles Proxy的作者发送了支持请求。如果我知道如何做到这一点,我会报告回来。 –

回答

65

的更新:查尔斯代理的3.8版本刚刚发布,与改写状态的能力。从release notes

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

这个版本的重写UI增加了一个新的 “响应状态” 规则类型:

enter image description here

+0

完美地工作。谢谢 – Janusz

+23

在我的Charles版本(3.10.1)中,我必须输入一个状态码和一条消息才能重写。对于上面的示例工作,我必须用“500错误”替换“500”。 – emidander

8

这不是直接回答你的问题,但在我的评论指出上面我是在同样的情况,我发现使用不同的工具,它为我的作品很好的解决方案。

而是查尔斯的,我跑mitmproxy,特别mitmdump,这个简短的Python 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

最后编辑:马克Liyanage的回答是最正确的这个问题现在。

不,你不,我不认为这是可能改写一个状态代码。

我不能将其添加为注释(新用户),但一个解决方法是:

  1. ,将返回你所需要的代码,或者找到那些做一个服务器上创建资源。
  2. 使用地图Remote功能,映射到返回的代码资源。

我试过使用地图本地,这将是完美的,但查尔斯增加了它自己的200 OK状态代码到返回的所有文件。

编辑:你也可以使用个体反应断点和修改代码。

+1

Marc Liyanage的答案是Charles新版本(3.8+)的正确答案。 – alejandromp

7

使用查尔斯3.8 +,你可以重写状态码。

在重写工具中,选择“类型:响应状态”。 在匹配字段和替换字段中,请注意,Charles预计传入和重写的状态匹配格式"\d{3} .*"。这意味着您的重写状态除了数字状态码之外还必须有一个消息部分。

例如:

匹配值:201 *

替换值:502错误的网关

省略从替换值的消息将导致没有重写的状态线。 您可以在每个调用摘要的Notes部分中看到Charles的重写工具输出消息。

相关问题