Заявката трябва да използва 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 насоките за живота на клиента и запазете клиента/обработчика за натоварването, вместо да изграждате наново пуловете за всяка заявка. Проверете върнатия статус: работещ прокси път може да пренася отказ от сайта.

Подобни статии