How to manipulate HTTP response using Proxyman Map Local Tool
This brief technical blog will demonstrate what Map Local Tool is and how it could help us to quickly manipulate the response.
We hope Proxyman can boost your debugging productivity 👏.
1. Map Local Tool
The Map Local Tool enables you to use the content of local files as a response from your requests, which are matched with your rules.
Map Local Tool could significantly boost your speed development and provide the capability to rapidly test on several edge-cased without explicitly updating the data in your server. It's also the must-have tool for QA or Developer if you would like to test the app's behavior with various responses.
2. Benefits of manipulating the HTTP response
There are plenty of scenarios in your debugging time when you would try various type of response to test the layout or content from your devices, apps:
- Quick Trying new params in responses.
- Test the app's behaviors with different parameters in the responses.
- Test the UI layout with unusual contents.
- Test Localization.
- Quick reproduce the bug with specific params in responses.
3. How it works
If the URL of in-coming requests are matching with the pre-defined matching Rule, and the Local file is valid => The body response of those matching requests are automatically replaced with the content of the local file.
If the requests are not matching any rules, the entire Response's content remains from the server.
4. Matching Rule
You can simply define the rule by a combination of Wildcards and Include subdirectories options.
Top-Down Matching: Incoming requests will be evaluated by Top-Down priority. The Rule in top of the list is the first rule to evaluate.
Asterisk ( * ): Matches any character zero or more times. For example, "api.proxyman.io/v1/*" matches anything beginning with "api.proxyman.io/v1/", such as "api.proxyman.io/v1/login", "api.proxyman.io/v1/data" and "api.proxyman.io/v1/", ...
Question mark ( ? ): Matches a single character once. For example, "api.proxyman.io/v?/login" matches api.proxyman.io/v1/login and api.proxyman.io/v2/login
Include subdirectories: All subdirectories will automaitcally match. It's super convenience if you want to match all paths from the domain. For example: "api.proxyman.io" with ON in "Include subdirectories" matches all URLs, which have "api.proxyman.io" as a domain, such as "api.proxyman.io", "api.proxyman.io/v1/data", "api.proxyman.io/login", "api.proxyman.io/user?name=nghia", ....
HTTP / HTTPS include: By default, "api.proxyman.io" matches all requests, which have a scheme is HTTP or HTTPS. Otherwise, "http://api.proxyman.io" matches the only HTTP, and "https://api.proxyman.io" matches only HTTPS.
| URL | Include subdirectories | Matching URLs | |:-------:|:------:|------------------------------| | api.proxyman.io | ON | api.proxyman.io, http://api.proxyman.io, https://api.proxyman.io, api.proxyman.io/v1/data, https://api.proxyman.io/v2/login, ... | | api.proxyman.io/v1/* | ON | api.proxyman.io/v1/data, https://api.proxyman.io/v1/login, ... | | * /v1/ * | ON | api.proxyman.io/v1/data, https://producthunt.io/v1/login, ... | | api.proxyman.io/v?/login | ON | api.proxyman.io/v1/login, api.proxyman.io/v2/login, ... | | https://api.proxyman.io/v1/login?username=nghia | OFF | Only https://api.proxyman.io/v1/login?username=nghia |
5. Remap Response
This table explain what the changes on the Response.
| Match | Response Header | Response Body |
| Matched | Same Headers from the server.
Remove Content-Encoding and Transfer-Encoding.
Add X-Proxyman-Map-Local: Path File
Update Content-Type: application/json, image/png, text/plain, ... depend on type of files | Replace with the local file | | Not Match | Same Header from server | Same Response body from Server |
Map Local Tools also offer various ways to quickly manipulate the Rule List and support hotkeys as well.
- ⌘ + ⌥ + L : Quick open Map Local window.
- ⌘ + N : New entry
- ⌘ + E : Edit entry
- ⌘ + D : Duplicate entry
- ⌘ + ⌫ : Delete entry
- Support Multiple-selection entry
- Quick the Local File in Finder or your favorited Editor.
- All changes are immediately applied and you don't need to save.
- For matched response, the "Content-Type" will automatically replace with the type of local file. Ex: application/json, image/png, image/jpg, .... So the app will handle the response appropriately.
7. How to use
There are various ways to access the Map Local Tool. If we open Map Local Tool from Domains or flows, it will fill the matching rule automatically.
Proxyman is a high-performance macOS app, which enables developers to capture and inspect HTTP/HTTPS requests from apps and domains on iOS device, iOS Simulator and Android devices.
Get it at https://proxyman.io