Postman with ProxyMesh
If you gather data via ProxyMesh using your own APIs, you might check out the Postman API platform. Postman offers collaborative tools, a repository, and workspace to build and maintain web applications with APIs. Postman is built on open-source technology and is extensible, meaning you can expand the capabilities of the code base. API workflows you build within the platform are also extensible.
Postman has its own proxy, and it works well with proxy systems, though it has some limiting factors. This article discusses selected Postman use cases and describes configuration for use with ProxyMesh. Below are some useful links for learning about and using Postman.
- Building Requests -- You can send requests in Postman to connect to APIs you're working with.
- Authorizing Requests -- APIs use authorization to ensure that client requests access data securely.
- Receiving a Response – Ensuring the correctness of API responses to data requests.
- Using Variables – Variables enable you to store and reuse values in your requests and scripts.
Using a Proxy
This Postman use case section, like ProxyMesh docs, describes proxies and their functions, including privacy and security features. Then it provides how-to information on creating and troubleshooting proxy configurations in several operating systems.
Postman maintains native apps to provide support for configuring proxies in Mac, Windows, and Linux. You can specify the use of either a custom proxy or the system proxy defined in the OS.
With the custom proxy, all of your applications use the same proxy. But as a ProxyMesh user, you may be switching among authorized proxies, and sometimes using your device for non-proxied transmissions. In that case, you're likely to need the system proxy in Postman, described below.
To configure the proxy settings in Postman, click the gear icon on the right side of the header toolbar, choose Settings, and select the Proxy tab.
System proxy configuration
With the Use the system proxy option, Postman uses the system's default proxy configuration. Environment variable options are
Use the system proxy settings to forward your HTTP or HTTPS requests in Postman through your OS’s default configuration. That is, you're telling Postman, and all requests sent through Postman, to follow your OS's default configuration.
- Postman is acting as client, sending a request through your operating system’s default configuration, which then forwards the request to the proxy server.
- The system proxy server sends the request to the remote-site server.
- The remote site returns a response back through the proxy server.
System proxy settings are enabled by default. Any request made through Postman will go through the system proxy.
However, regardless of the proxy setting in the app, Postman will still use the system proxy if an environment variable is set.
Troubleshooting the proxy configuration
If you are unable to send any requests through Postman and your network requires a proxy, follow the link to troubleshooting steps for the operating systems.
If the issue is with the API request, follow this link to Troubleshooting requests.
- You can also optionally include a label when authenticating from the dashboard.
The Headers configuration from Postman works well for HTTP requests. In our experience, however, Postman cannot read a proxy header passed in with an encrypted request. Therefore, it passes in a custom request header undetected to the remote site, which will see the originating IP address within the encrypted request.
To get a custom header for an HTTPS request, you can establish a tunnel to the remote site and retrieve the header from the response. Once you receive the response, you can easily switch to the urllib3 library to send a new HTTPS request. urllib3 can send custom IP headers to ProxyMesh with the request. With urllib3, headers passed in to the proxy manager are sent to the proxy. The request headers can be sent on the request function call.
As an alternative to Postman, please see Using urllib3 for Proxy Headers, which includes a code example for the request with header in urllib3.