我发现本地用 charlse 捕获手机请求,https 请求会有证书问题不好捕获 app 内请求;那代理工具是怎么做到的?
http 请求第一步是 dns 解析,这个需要通过 dns 服务器来做 dns 解析,一般是网关(路由器)充当这个 dns 服务器,代理服务器也能负责 dns 解析么?那岂不是要代理服务器开启 dns 服务才能解析 dns ?
代理工具工作在传输层,即 TCP/UDP
https (应用层)是基于 TCP 的,代理工具负责把 TCP 链路打通,后续的证书什么的都走这个 TCP 通道,应用层( https )的业务不关心传输层( TCP )是怎么走的,所以不会有证书问题,代理服务器也无法监听 https 密钥交换过程。
至于 DNS 解析,通常的做法是本地将域名直接发到代理服务器(远端),由远端自己解析 IP 地址并完成 TCP 三次握手连接,这种远端解析 DNS 可以防止 DNS 污染。
当然也可以本地解析 DNS ,将要连接的 IP 地址发给远端直连 IP 。
代理服务器不需要开启 DNS 服务,它只需要具备域名到 IP 的转换能力就行了( DNS 客户端角色)