Настройка прокси в C# (.NET)

Прокси в C# и .NET: HttpClientHandler с WebProxy, логин и пароль через NetworkCredential, SOCKS5 с .NET 6 и один HttpClient на всё приложение.

Обновлено · Редакция Prokso

Данные для подключения
Хост
gw.prokso.com
Порт
823 HTTP · 824 SOCKS5 — новый IP на каждый запрос · 10000–20000 фиксированный IP (sticky-сессия), HTTP(S) и SOCKS5
Логин и пароль
в кабинете, на странице плана

Готовые строки в нужном формате генерирует кабинет: выберите страну, тип IP и протокол.

Коротко
  • Хост — gw.prokso.com, порты 823 (HTTP), 824 (SOCKS5), 10000–20000 (фиксированный IP, HTTP или SOCKS5)
  • Логин и пароль — в кабинете на странице плана
  • Проверяйте IP в ответе самого запроса через прокси: страница «Мой IP» в браузере ваш скрипт не проверяет

Пошаговая инструкция, как подключить прокси Prokso в C# (.NET). Займёт несколько минут.

Шаг 1. Возьмите данные прокси в кабинете

Откройте план и скопируйте хост gw.prokso.com, порт, логин и пароль. Порт 823 — HTTP, 824 — SOCKS5 (оба дают новый IP на каждый запрос); порты 10000–20000 — фиксированный IP до 120 минут, работают и как HTTP, и как SOCKS5 (каждый порт — отдельный адрес). Страну задают в логине: логин__cr.ua.

Шаг 2. Создайте консольный проект

Понадобится .NET 6 или новее: dotnet new console. Классы HttpClient, WebProxy и NetworkCredential встроены, пакеты NuGet не нужны.

using System.Net;

var handler = new HttpClientHandler
{
    Proxy = new WebProxy("http://gw.prokso.com:823")
    {
        Credentials = new NetworkCredential("ЛОГИН", "ПАРОЛЬ")
    },
    UseProxy = true
};

using var client = new HttpClient(handler) { Timeout = TimeSpan.FromSeconds(30) };
Console.WriteLine(await client.GetStringAsync("https://api.ipify.org?format=json"));

Шаг 3. Настройте обработчик с прокси

Создайте HttpClientHandler, задайте ему WebProxy с адресом http://gw.prokso.com:823, а логин и пароль передайте через NetworkCredential в свойстве Credentials. Код ниже вставьте в Program.cs.

Шаг 4. Один HttpClient на всё приложение

Создавайте клиент один раз и используйте для всех запросов: так соединения с прокси переиспользуются. Прокси привязан к обработчику, поэтому для другого порта или страны нужен отдельный обработчик и отдельный клиент.

Шаг 5. SOCKS5 и фиксированный IP

С .NET 6 WebProxy принимает адрес socks5://gw.prokso.com:824, а логин и пароль так же берутся из Credentials. Для серии запросов с одного IP возьмите фиксированный порт 10000–20000.

Шаг 6. Если соединение не устанавливается

Сверьте хост gw.prokso.com, порт и схему: HTTP на 823, SOCKS5 на 824, на портах 10000–20000 — оба. Ошибка 407 означает неверный логин или пароль либо закончившийся трафик: проверьте остаток на странице плана в кабинете. Таймаут чаще всего значит, что порт введён с ошибкой или клиент ждёт другой протокол. Если работаете с доступом по IP, убедитесь, что в белый список добавлен внешний адрес именно той машины, где запускается код.

Шаг 7. Проверьте вывод

Запустите пример: программа обращается к https://api.ipify.org и печатает IP, который видит сайт. Это должен быть адрес прокси, а не ваш. Ошибка 407 означает неверный логин или пароль либо закончившийся трафик на плане. Страница «Мой IP» в браузере здесь не поможет: браузер идёт напрямую.

Вопросы и ответы

Почему прокси игнорируется?

Проверьте, что <code>UseProxy = true</code> и что клиент создан именно с этим обработчиком. Без обработчика <code>HttpClient</code> берёт системные настройки прокси.

Можно ли обойтись без логина?

Да. Включите в плане доступ по IP (белый список) и добавьте адрес машины, на которой работает программа. Тогда свойство <code>Credentials</code> можно не задавать.

Какой порт выбрать?

Порт 823 (HTTP) или 824 (SOCKS5) даёт новый IP на каждый запрос — удобно для сбора данных. Порт 10000–20000 держит один IP до 120 минут — для сессий со входом в аккаунт. На план приходится до 1000 одновременных соединений.

Как выбрать страну?

Страна записана в логине прокси. Сгенерируйте в кабинете строку для нужной страны и подставьте в код логин из неё — остальной адрес не меняется.

Что делать, если часть запросов падает?

При сборе данных отдельные адреса бывают медленными или недоступными. Добавьте в код несколько повторных попыток с паузой: на порту 823 или 824 каждая попытка пойдёт уже с нового адреса.