ChatGPT解决这个技术问题 Extra ChatGPT

Is it possible to rewrite a status code with Charles Proxy?

I'm using Charles Proxy to rewrite a response from an API for testing purpose.

If I set a breakpoint, I am allowed to completely rewrite the raw response as I wish.

However, if I want to automate it via the "Rewrite" tool, I'm stuck, it seems that you cannot modify the status code:

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

Do you know if I'm missing something?

I just wondered the same thing. I need exactly this feature right now, so I sent a support request to Charles Proxy's author. I'll report back if I learn of a way to do this.

M
Marc Liyanage

An Update: Version 3.8 of Charles Proxy was just released, with the ability to rewrite the status. From the release notes:

Rewrite tool: allow rewriting of response status

This version's rewrite UI adds a new "Response Status" rule type:

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


Works perfectly. Thanks
In my version of Charles (3.10.1) I have to enter both a status code and a message for the rewrite to work. For the example above to work I have to replace "500" with "500 Error".
@marc Is it possible to rewrite an API with custom data always until disabled?
@NevinMadhukarK I'm not sure what exactly you're asking, but if it's about rewriting the response payload, that should be possible as well, but is unrelated to this question. Maybe start a new question thread for that.
e
emrcftci

1- Select Tools > Rewrite or OPTION + CMD + R

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

2- Select Enable Rewrite and then select Add

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

3- Fill the fields with your details

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

4- Add type and action

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

5- Select type of action - Response Status for our case -, write value to be changed -500-, write value for replace -200-

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

Final Step:

6- You are ready to manipulate status code of your response with Charles

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

Official site of Charles Web Debugging Proxy


Best answer here, super helpful with the illustrations, and sticks to the topic: Charles. There's one change needed, though: as of Charles 4.6.2 you need to specify something after the "200" code (in the replace section), e.g. "200 OK" or "200 Banana" - anything, but there must be something.
I'm gonna update the answer, thanks for the comment.
C
Community

Using Charles 3.8+, you can rewrite the status code.

In the rewrite tool, select "Type: response status". In the match fields and replace fields, be aware that Charles expects the incoming and rewritten statuses to match the format "\d{3} .*". This means that your rewritten status must have a message portion in addition to the numeric status code.

For example:

Match value: 201 .* Replace value: 502 Bad Gateway

Omitting the message from the replace value will result in no rewrite of the status line. You can see Charles' rewrite tool output messages in the Notes section of each call's summary.


M
Maximilian Hils

This is not a direct answer to your question, but as noted in my comment above I was in the same situation and I found a solution using a different tool that works well for me.

Instead of Charles, I run mitmproxy, specifically mitmdump, with this short Python rewriting script:

#!/usr/bin/env python

def response(context, flow):
    if '/somePath' not in flow.request.path:
        return

    flow.response.status_code = 404

To hook it into the proxy, I run mitmdump like this:

mitmdump -s /path/to/rewriting-script.py

and it works great.

I'm on OS X and I configured the network interface's web proxy to 127.0.0.1 port 8080.


D
David Boydell

Final Edit: Marc Liyanage's answer is the most correct for this question now.

No, you're not, I don't think it is possible to rewrite a status code.

I cannot add this as a comment (new user) but one workaround is:

Create resources on a server that will return the codes you need, or find ones that do. Use the Map Remote feature, mapping to the resource that returns the code.

I've tried using Map Local, which would be perfect for this, but Charles adds it's own 200 OK status code to all files returned.

Edit: Also you can use breakpoints on individual responses and modify the code.


Marc Liyanage answer is the correct answer for the new versions of Charles (3.8+).
N
Nghia Tran

It's not a direct answer to Charles, but you can write JS code to change the HTTP Response at ease with Proxyman (Scripting feature)

For instance,

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

Here is full list of Snippet Code that you can do:

Disclaimer: I'm a creator of Proxyman. Hope it can help you.


S
Sahil Gupta

Using Requestly Desktop App, not only you can modify the response of a request, but also the status code too and that too within 30 seconds.

On top of this you can:

define a regex/wildcard pattern for the URL that needs to be matched.

save the rule (so that you don't need to modify the status code again and again).

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

Here's a quick demo for the same. https://youtu.be/nLcIZGmMAtQ


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

Success story sharing

Want to stay one step ahead of the latest teleworks?

Subscribe Now