在网络调试中,经常会看到这样的信息:
https://api.example.com:443
https://api.example.com:8443
很多人看到端口时只知道 443 是 HTTPS,但在实际抓包过程中,端口信息可能比 URL 更重要。
简单的例子:
- App 请求已经发出
- 代理工具没有任何记录
- TCP 连接却已经建立
这个时候,要确认的事情就是请求到底走的是哪个端口。
下面用一次调试过程说明 HTTPS 端口在抓包中的作用。
一、先确认 App 请求的端口
在开始抓包之前,需要先找到 App 的实际连接端口。
一种简单的方法是使用代理抓包工具,例如:
- Charles
- Proxyman
- Sniffmaster
建立代理环境:
- 启动 Charles
- 查看代理端口(例如 8888)
- iPhone 与电脑连接同一 Wi-Fi
- 在 iPhone Wi-Fi 设置中配置 HTTP 代理
- 输入电脑 IP 与端口
保存后返回桌面。
验证代理是否生效
打开 Safari 访问一个 HTTPS 网站。
如果 Charles 中出现请求,并且可以看到:
- URL
- Header
- Response
说明代理链路已经建立。
此时可以开始观察端口信息。
二、观察 HTTPS 请求的端口
在 Charles 的请求列表中可以看到类似这样的连接:
api.example.com:443
如果服务器使用默认 HTTPS 端口,请求会直接走 443。
但在一些环境中,例如:
- 内网测试环境
- 自建 API 网关
可能会使用其他端口,例如8443、9443
当端口发生变化时,抓包工具仍然可以看到连接,但某些代理规则可能需要重新配置。
三、代理抓不到请求时
在一次实际调试中遇到过这样的情况:
- Safari 请求正常
- App 请求没有出现在 Charles 中
确认端口之后发现,App 连接使用的是 自定义端口。
这种情况下,可以通过底层抓包工具进一步确认。
四、查看 TCP 连接端口
如果需要查看更底层的连接信息,可以使用:
- Wireshark
- 数据流抓包工具(Sniffmaster)
在 Wireshark 中可以看到:
- TCP 三次握手
- 连接的源端口与目标端口
例如:
192.168.1.10 → 203.0.113.1:8443
这一步可以确认 HTTPS 连接是否建立成功。
五、通过数据线直连 iPhone 抓包观察 HTTPS 端口
当代理抓不到请求时,可以使用设备本机抓包工具,例如 SniffMaster(抓包大师)。
这种方式不依赖 Wi-Fi 代理,可以直接从设备中读取网络数据。
使用 SniffMaster 抓取 HTTPS 连接
操作步骤如下:
- 使用 USB 将 iPhone 连接电脑
- 保持设备解锁
- 在手机上点击“信任此电脑”
- 启动 SniffMaster
- 在设备列表中选择 iPhone
- 按提示安装 iOS 驱动
- 安装描述文件
- 进入 HTTPS 暴力抓包模式
- 点击开始
然后在手机上触发网络请求。
抓包界面会出现对应的 HTTPS 连接记录,其中包括:
- 请求域名
- 端口号
- 请求路径
筛选目标 App
设备级抓包会包含系统网络数据,例如:
- DNS 查询
- Apple 服务连接
为了更容易定位目标请求,可以在 SniffMaster 中:
- 点击 选择 App
- 勾选目标应用
- 再触发请求
抓包列表会只显示该 App 的网络数据。
六、端口与 HTTPS 解密的关系
HTTPS 是否可以解密,与端口本身没有直接关系。
关键因素是:
- TLS 握手是否完成
- 是否存在证书校验
- App 是否使用开发证书签名
即使端口是 8443 或其他自定义端口,只要 TLS 握手正常,抓包工具仍然可以解析 HTTPS。
七、分析 HTTPS 端口问题时的常见步骤
在排查 HTTPS 请求时,可以按以下顺序进行:
- 使用代理工具确认是否有请求
- 查看连接使用的端口
- 如果代理抓不到请求,使用设备级抓包
- 使用 Wireshark 分析 TCP 连接
通过这几个步骤,可以确认:
- 请求是否发出
- 使用了哪个端口
- TLS 是否建立