Reputation: 1420
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:
Do you know if I'm missing something?
Upvotes: 96
Views: 60413
Reputation: 1032
To enable rewrite for HTTPS
you have to enable "SSL Proxy" first in Charles.
This article provides the guide to setup this.
Upvotes: -1
Reputation: 461
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:
Here's how a basic response modification rule looks like
Here's a quick demo for the same. https://youtu.be/nLcIZGmMAtQ
Upvotes: 3
Reputation: 3594
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.
Upvotes: 2
Reputation: 3516
1- Select Tools > Rewrite
or OPTION + CMD + R
2- Select Enable Rewrite
and then select Add
3- Fill the fields with your details
4- Add type and action
5- Select type of action - Response Status
for our case -, write value to be changed -500-, write value for replace -200-
Final Step:
6- You are ready to manipulate status code of your response with Charles
Official site of Charles Web Debugging Proxy
Upvotes: 47
Reputation: 4681
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.
Upvotes: 11
Reputation: 1185
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:
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.
Upvotes: 4
Reputation: 203
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.
Upvotes: 20
Reputation: 4681
An Update: Version 3.8 of Charles Proxy was just released, with the ability to rewrite the status. From the release notes:
This version's rewrite UI adds a new "Response Status" rule type:
Upvotes: 145