ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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

但是,如果我想通过“重写”工具将其自动化,我就卡住了,看来您无法修改状态代码:

https://i.stack.imgur.com/PeoUC.png

你知道我是否遗漏了什么吗?

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

M
Marc Liyanage

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

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

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

https://i.stack.imgur.com/r60Pj.png


完美运行。谢谢
在我的 Charles (3.10.1) 版本中,我必须同时输入状态代码和消息才能进行重写。为了使上面的示例正常工作,我必须将“500”替换为“500 错误”。
@marc 是否可以始终使用自定义数据重写 API,直到被禁用?
@NevinMadhukarK我不确定你到底在问什么,但如果是关于重写响应有效负载,那也应该是可能的,但与这个问题无关。也许为此开始一个新的问题线程。
e
emrcftci

1- 选择 Tools > RewriteOPTION + CMD + R

https://i.stack.imgur.com/0oNkv.png

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

https://i.stack.imgur.com/AmT3y.jpg

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

https://i.stack.imgur.com/37Hd2.png

4-添加类型和动作

https://i.stack.imgur.com/q0N0D.jpg

5- 选择操作类型 - Response Status 对于我们的案例 - 写入要更改的值 -500-,写入替换值 -200-

https://i.stack.imgur.com/KUBfq.jpg

最后一步:

6-您已准备好与 Charles 一起操作响应的状态代码

https://i.stack.imgur.com/V5uXF.jpg

Official site of Charles Web Debugging Proxy


最佳答案在这里,对插图非常有帮助,并坚持主题:查尔斯。但是,需要进行一项更改:从 Charles 4.6.2 开始,您需要在“200”代码(在替换部分中)之后指定一些内容,例如“200 OK”或“200 Banana”——任何内容,但必须有一些内容。
我会更新答案,谢谢你的评论。
C
Community

使用 Charles 3.8+,您可以重写状态码。

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

例如:

匹配值:201 .* 替换值:502 Bad Gateway

从替换值中省略消息将导致不重写状态行。您可以在每次通话摘要的备注部分中查看 Charles 的重写工具输出消息。


M
Maximilian Hils

这不是您问题的直接答案,但正如我在上面的评论中指出的那样,我处于同样的情况,我找到了一个使用适合我的不同工具的解决方案。

我使用这个简短的 Python rewriting script 运行 mitmproxy,特别是 mitmdump,而不是 Charles:

#!/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。


D
David Boydell

最终编辑:Marc Liyanage 的答案现在对于这个问题是最正确的。

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

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

在将返回您需要的代码的服务器上创建资源,或者找到那些可以返回的资源。使用 Map Remote 功能,映射到返回代码的资源。

我已经尝试使用 Map Local,这将是完美的,但查尔斯将它自己的 200 OK 状态代码添加到所有返回的文件中。

编辑:您也可以在单个响应上使用断点并修改代码。


Marc Liyanage 的答案是新版本 Charles (3.8+) 的正确答案。
N
Nghia Tran

这不是对 Charles 的直接回答,但您可以编写 JS 代码以使用 Proxyman (Scripting feature) 轻松更改 HTTP 响应

例如,

function onResponse(url, request, response) {
    // Change to 404 status code for the matching request
    response.statusCode = 404; 
    return response;
}

以下是您可以执行的 Snippet Code 的完整列表:

免责声明:我是 Proxyman 的创建者。希望它可以帮助你。


S
Sahil Gupta

使用Requestly Desktop App,您不仅可以修改请求的响应,还可以在 30 秒内修改状态码。

除此之外,您还可以:

为需要匹配的 URL 定义正则表达式/通配符模式。

保存规则(这样就不需要一次又一次地修改状态码)。

https://i.stack.imgur.com/iMKeI.png

这是相同的快速演示。 https://youtu.be/nLcIZGmMAtQ


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅