Подключите TcpClient через Fiddler прокси - PullRequest
0 голосов
/ 02 ноября 2018

Как я могу использовать прокси-сервер Fiddler с TcpClient? Ответ на этот похожий вопрос у меня не сработал: Как использовать Proxy с TcpClient.ConnectAsync ()?

var client = new Pop3Client();
var tcpClient = new TcpClient(hostname, port);
var sslStream = new SslStream(tcpClient.GetStream());
sslStream.AuthenticateAsClient(hostname);
client.Connect(sslStream);

1 Ответ

0 голосов
/ 02 ноября 2018

После некоторого обсуждения выяснилось, что код для создания соединения через прокси, на который есть ссылка в вопросе, действительно работал, но

  • В Fiddler должна быть отключена расшифровка SSL.
    В противном случае Fiddler не пропустит исходное рукопожатие TLS, но создаст одно между Fiddler и сервером и другое между клиентом и Fiddler, где последний имеет сертификат, созданный Fiddler. Клиент обычно не будет доверять этому сертификату по умолчанию и, таким образом, потерпит неудачу при установлении связи TLS.
    Более того, Fiddler ожидает, что трафик внутри соединения TLS будет HTTP, то есть клиент отправляет запрос HTTP, а сервер отправляет ответ HTTP обратно. POP3 работает по-разному, имея другой синтаксис сообщения и сервер начинает с отправки, а не с клиента.
  • Это действительно должно быть client.Connect(sslStream), как показано в вопросе, а не что-то вроде client.Connect(tcpStream), как было в ОП в его реальном коде. В последнем случае клиент просто попытается прочитать зашифрованные данные из соединения и, таким образом, потерпит неудачу.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...