gpt4 book ai didi

sockets - 使用 sslStream 类包装在 ssl 流中

转载 作者:可可西里 更新时间:2023-11-01 02:54:42 24 4
gpt4 key购买 nike

当我运行下面的代码时,发生错误

    string host = "www.google.com";
int proxyPort = 443;//443;

byte[] buffer = new byte[2048];
int bytes;

// Connect socket
TcpClient client = new TcpClient(host, proxyPort);
NetworkStream stream = client.GetStream();

// Establish Tcp tunnel
byte[] tunnelRequest = Encoding.UTF8.GetBytes(String.Format("CONNECT {0}:443 HTTP/1.1\r\nHost: {0}\r\n\r\n", host));
stream.Write(tunnelRequest, 0, tunnelRequest.Length);
stream.Flush();

// Read response to CONNECT request
// There should be loop that reads multiple packets
bytes = stream.Read(buffer, 0, buffer.Length);
Console.Write(Encoding.UTF8.GetString(buffer, 0, bytes));

// Wrap in SSL stream
SslStream sslStream = new SslStream(stream);
sslStream.AuthenticateAsClient(host);

错误发生在这一行

    sslStream.AuthenticateAsClient(host);

错误是:无法将数据写入传输连接:已建立的连接已被主机中的软件中止。

我该如何解决这个问题?谢谢

最佳答案

您正在向 HTTPS 服务器发送 CONNECT,这会正确地关闭连接,因为它不是有效的 HTTPS 握手。

CONNECT 仅发送到上游代理(以便通过代理建立隧道);它从不发送到原始服务器本身。即使您使用的是代理,您读取对 CONNECT 的响应的代码也有问题并且不太可能工作。

您是否考虑过让我为您完成繁重的工作? http://fiddler2.com/core/

关于sockets - 使用 sslStream 类包装在 ssl 流中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18618462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com