C# 通过Fiddler代理连接TcpClient
如何将Fiddler代理与TcpClient一起使用?这个类似问题的答案对我来说并不适用:C# 通过Fiddler代理连接TcpClient,c#,tcp,proxy,C#,Tcp,Proxy,如何将Fiddler代理与TcpClient一起使用?这个类似问题的答案对我来说并不适用: 经过一番讨论,结果证明,通过问题中引用的代理创建连接的代码实际上是有效的,但是 需要在Fiddler中关闭SSL解密。 否则,Fiddler将不会传递原始TLS握手,而是在Fiddler和服务器之间创建一个TLS握手,在客户端和Fiddler之间创建另一个TLS握手,其中最后一个TLS握手具有Fiddler创建的证书。默认情况下,客户端通常不信任此证书,因此TLS握手失败。 此外,Fiddler希望TL
经过一番讨论,结果证明,通过问题中引用的代理创建连接的代码实际上是有效的,但是
- 需要在Fiddler中关闭SSL解密。
否则,Fiddler将不会传递原始TLS握手,而是在Fiddler和服务器之间创建一个TLS握手,在客户端和Fiddler之间创建另一个TLS握手,其中最后一个TLS握手具有Fiddler创建的证书。默认情况下,客户端通常不信任此证书,因此TLS握手失败。
此外,Fiddler希望TLS连接内的通信量是HTTP,即客户端发送HTTP请求,服务器发送HTTP响应。POP3的工作原理不同,它既有不同的消息语法,也让服务器从发送开始,而不是从客户端开始 - 它必须是问题中所示的
,而不是像OP在其实际代码中那样的client.Connect(sslStream)
。在最后一种情况下,客户端将尝试从连接读取加密数据,因此失败client.Connect(tcpStream)
var client = new Pop3Client();
var tcpClient = new TcpClient(hostname, port);
var sslStream = new SslStream(tcpClient.GetStream());
sslStream.AuthenticateAsClient(hostname);
client.Connect(sslStream);