# Reverse Proxy（反向代理）

> 使用 Proxyman Reverse Proxy 通过本地端口，抓取忽略系统代理的应用和命令行工具中的 HTTP 与 HTTPS 流量。

## 1. 这是什么？ {#1-whats-it}

Reverse Proxy 会创建一个**本地 Web 服务器**，将你的流量透明地转发到远程服务器。这样，Proxyman 就能抓取并记录你的流量。

当你使用的客户端不支持 HTTP/HTTPS 代理，或 HTTP 代理配置过于复杂时，Reverse Proxy 就很有用。

例如，大多数命令行应用不会遵循系统的 HTTP/HTTPS 代理设置，因此 Proxyman 无法抓取它们的流量。要解决这个问题，你可以：

* 显式配置 HTTP/HTTPS 代理。这可能比较复杂，取决于你使用的网络库。请阅读[无法看到第三方网络库的任何请求](https://proxyman.com/docs/zh-cn/troubleshooting/couldnt-see-any-requests-from-3rd-party-network-libraries)了解更多。
* 使用 Reverse Proxy。

Reverse Proxy 在 Proxyman 2.29.0 及更高版本中可用。

## 2. 优势 {#2-benefit}

* 将客户端连接到 Proxyman 的本地 Web 服务器，Proxyman 会将流量转发到远程主机。无需在客户端上设置 HTTP/HTTPS 代理。
* 可从 Charles Proxy 导入 Reverse Proxy 设置。
* 保留 Host 请求头。
* 创建新条目时，Proxyman 会自动选择可用端口。
* 可对 Reverse Proxy 流量使用 Breakpoint、Map Local 和 Scripting 💯。

## 3. 使用方法 {#3-how-to-use}

1. 打开 **Tools** 菜单 -> **Reverse Proxy…**
2. 创建新条目，并输入 Remote Host 和 Remote Port。Proxyman 会自动选择 Local Port。你可以将其改为其他端口，但该端口必须可用。
3. 保存。
4. 在客户端应用中，将 URL 改为 `http://localhost:<local_port>`（例如 `http://localhost:10000`）
5. 发起请求，并在 Proxyman 应用中查看流量。

![Proxyman Reverse Proxy 窗口，其中 httpbin 条目将本地端口 10000 映射到 httpbin.proxyman.app 的 443 端口](https://proxyman.com/docs/assets/proxyman-reverse-proxy-window.jpg)

_Reverse Proxy 窗口_

![Proxyman Reverse Proxy 条目编辑器，本地端口 10000，远程主机 httpbin.proxyman.app，远程端口 443](https://proxyman.com/docs/assets/proxyman-reverse-proxy-entry-editor.jpg)

_Reverse Proxy 条目_

> **备注:** 如果 Remote Port 为 443，Proxyman 会与远程服务器执行 SSL 握手；否则，会将远程服务器视为普通的 HTTP Web 服务器。
>
> 从 Proxyman 5.17.0 开始，勾选 **Force Using SSL when connecting to Remote Port**，即可对任意远程端口使用 SSL/TLS。

> **备注:** **Preserve Host in Header fields** 会保留原始的 Host 值。请谨慎使用，因为如果 Host 值不匹配，远程服务器可能会拒绝该请求。

## 了解更多 {#learn-more}

* [如何使用 Reverse Proxy 抓取不使用 HTTP 代理的应用中的 HTTP/HTTPS 流量](https://proxyman.com/posts/2023-03-22-How-to-use-Reverse-Proxy)
