我目前正在尝试使用主机文件在 C# 中编写代理来重定向请求(特定请求)。我只希望它拦截一个地址。
它位于 Windows 上,并且代理在机器上本地运行。
忽略所有其他代理内容,我只是试图获取第一个请求的 HTTP 标头。
对于 HTTP 请求,我将代理设置为 127.0.0.1:80,并将 127.0.0.1 [foo.com] 放入主机文件中。
打开浏览器导航至http://foo.com/我抓住请求并显示它。
“GET foo.com/HTTP/1.1”等等
现在如果我:
对于 HTTPS 请求,我将代理设置为 127.0.0.1:443,并将 127.0.0.1 [foo.com] 放入主机文件中。
打开浏览器导航至https://foo.com/我抓住请求并显示它。
我原本期待的是“连接......等等”,但我实际上得到的只是垃圾字符。
如果使用相同的代理设置为 127.0.0.1:8080 并在浏览器代理设置中指向它,我会看到我期望的正确的 HTTPS 标头。
为什么主机文件会搞乱 HTTPS 请求标头?
答案1
它不会搞乱标题;您没有告诉操作系统/浏览器使用代理服务器,而是告诉操作系统实际服务器位于 127.0.0.1,因此您正在接收 SSL/TLS 握手。