Yêu cầu phải dùng HttpClient được tạo với handler proxy của bạn. Tạo đối tượng WebProxy không liên quan không ảnh hưởng tuyến của máy khách khác.

using System;
using System.Net;
using System.Net.Http;

var proxy = new WebProxy("http://203.0.113.10:8080")
{
    BypassProxyOnLocal = false
};

using var handler = new HttpClientHandler
{
    Proxy = proxy,
    UseProxy = true
};

using var client = new HttpClient(handler)
{
    Timeout = TimeSpan.FromSeconds(15)
};

using var response = await client.GetAsync("https://example.com/");
Console.WriteLine((int)response.StatusCode);
Console.WriteLine(await response.Content.ReadAsStringAsync());

Thay địa chỉ tài liệu bằng proxy HTTP thật từ dịch vụ của bạn hoặc danh sách proxy HTTP. Cú pháp cấp cao nhất này phù hợp dự án console C# hiện đại; dự án cũ có thể đặt các câu lệnh trong Main bất đồng bộ.

Kiểm tra cả hai thuộc tính handler: Proxy chọn endpoint và UseProxy=true bật việc sử dụng. Nếu endpoint chạy riêng nhưng không chạy trong ứng dụng, xác nhận không có mã tắt UseProxy và lời gọi dùng đúng đối tượng này. Handler riêng tránh phụ thuộc vào khám phá proxy của tiến trình hay hệ điều hành.

Khi bên vận hành proxy cấp tài khoản, gán NetworkCredential cho thuộc tính WebProxy.Credentials. Authorization của trang web phục vụ một chặng khác, và mục IP:port công cộng không cung cấp đăng nhập mặc định. Listener http:// có thể mang HTTPS qua tunnel; giữ xác minh đích bình thường.

Chương trình ngắn này giải phóng đối tượng khi thoát. Với lời gọi dịch vụ lặp lại, theo hướng dẫn .NET về vòng đời máy khách và giữ máy khách/handler cho tải công việc thay vì dựng lại pool kết nối mỗi yêu cầu. Xem trạng thái trả về: tuyến proxy hoạt động vẫn có thể mang phản hồi từ chối của trang web.

Bài viết liên quan