cuốn sách gpt4 ai đã làm

c# - proxy HTTPS

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 13:37:12 28 4
mua khóa gpt4 Nike

Tôi đang cố gắng tạo máy chủ proxy HTTPS trong C#. Ai đó đã đăng một giải pháp ở đây:

        chuỗi máy chủ = "encrypted.google.com";
chuỗi proxy = "127.0.0.1";//máy chủ;
int proxyPort = 8888;//443;

bộ đệm byte [] = byte mới [2048];
int byte;

// Kết nối ổ cắm
Máy khách TcpClient = TcpClient mới (proxy, proxyPort);
NetworkStream stream = client.GetStream();

//Thiết lập đường hầm Tcp
byte[] TunnelRequest = Encoding.UTF8.GetBytes(String.Format("CONNECT {0}:443 HTTP/1.1\r\nHost: {0}\r\n\r\n", máy chủ));
Stream.Write(tunnelRequest, 0, TunnelRequest.Length);
suối.Flush();

// Đọc phản hồi cho yêu cầu CONNECT
// Cần có vòng lặp đọc nhiều gói
byte = stream.Read(buffer, 0, buffer.Length);
Console.Write(Encoding.UTF8.GetString(buffer, 0, byte));

// Gói trong luồng SSL
SslStream sslStream = SslStream mới(luồng);
sslStream.AuthenticateAsClient(máy chủ);

// Gửi yêu cầu
byte[] request = Encoding.UTF8.GetBytes(String.Format("GET https://{0}/ HTTP/1.1\r\nHost: {0}\r\n\r\n", máy chủ));
sslStream.Write(request, 0, request.Length);
sslStream.Flush();

// Read response
do
{
byte = sslStream.Read(buffer, 0, buffer.Length);
Console.Write(Encoding.UTF8.GetString(buffer, 0, byte));
} while (byte != 0);

client.Close();
Console.ReadKey();

Tuy nhiên, đây không phải là mã của máy chủ. Nó in phản hồi (dưới dạng văn bản thuần túy), nhưng ổ cắm máy khách (trình duyệt) không nhận được phản hồi.

Cảm ơn sự giúp đỡ của bạn, cảm ơn bạn.

câu trả lời hay nhất

Tôi không phải là chuyên gia về C#, nhưng sẽ không thay thế Console.Write bằng thao tác ghi trở lại kết nối TCP, yêu cầu CONNECT ban đầu xuất phát từ việc khắc phục điều này?

Có vẻ như thiếu một số mã, giống như trước khi tất cả điều này xảy ra, bạn phải lắng nghe máy khách qua kết nối TCP. Ví dụ: bạn đang nghe địa chỉ IP 192.168.1.1 trên cổng 8080. Sau đó, khách hàng sẽ gửi một cái gì đó như

HTTP/1.1 www.example.com:443

Và sau đó bạn thực hiện tất cả những điều này, và điều bạn muốn làm không phải là Console.write, mà là (192.168.1.1:8080).write() hoặc C# tương đương.

Về proxy c#-HTTPS, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/36199239/

28 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress