Запит має використовувати HttpClient, створений із вашим обробником проксі. Створення непов’язаного об’єкта WebProxy не змінює маршрут іншого клієнта.

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());

Замініть документаційну адресу справжнім HTTP-проксі свого сервісу або зі списку HTTP-проксі. Цей синтаксис верхнього рівня підходить сучасному консольному проєкту C#; старі проєкти можуть помістити оператори в асинхронний Main.

Перевірте обидві властивості обробника: Proxy обирає кінцеву точку, а UseProxy=true вмикає її використання. Якщо точка працює окремо, але не в застосунку, переконайтеся, що код не вимикає UseProxy і виклик використовує цей екземпляр. Окремий обробник усуває залежність від виявлення налаштувань процесом чи ОС.

Якщо оператор проксі дає обліковий запис, призначте NetworkCredential властивості WebProxy.Credentials. Authorization сайту стосується іншої ланки, а публічний запис IP:port не надає типових даних входу. Проксі, що приймає http://, може переносити HTTPS тунелем; зберігайте звичайну перевірку цілі.

Ця коротка програма звільняє об’єкти при виході. Для повторних викликів сервісу дотримуйтеся рекомендацій .NET щодо часу життя клієнта та зберігайте клієнта/обробник для навантаження, замість перебудови пулів з’єднань для кожного запиту. Перевіряйте повернений статус: справний шлях проксі все одно може передати відмову сайту.

Схожі статті