- Хост
- 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 в Go. Займёт несколько минут.
Шаг 1. Возьмите данные прокси в кабинете
Откройте план и скопируйте хост gw.prokso.com, порт, логин и пароль. Порт 823 — HTTP, 824 — SOCKS5 (оба дают новый IP на каждый запрос); порты 10000–20000 — фиксированный IP до 120 минут, работают и как HTTP, и как SOCKS5 (каждый порт — отдельный адрес). Страну задают в логине: логин__cr.ua.
Шаг 2. Ничего не устанавливайте
Всё нужное есть в стандартной библиотеке: пакеты net/http и net/url. Сторонние модули не понадобятся ни для HTTP, ни для SOCKS5.
package main
import (
"fmt"
"io"
"net/http"
"net/url"
"time"
)
func main() {
proxyURL, err := url.Parse("http://ЛОГИН:ПАРОЛЬ@gw.prokso.com:823")
if err != nil {
panic(err)
}
client := &http.Client{
Transport: &http.Transport{Proxy: http.ProxyURL(proxyURL)},
Timeout: 30 * time.Second,
}
resp, err := client.Get("https://api.ipify.org?format=json")
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}Шаг 3. Задайте прокси в Transport
Разберите адрес прокси с логином и паролем через url.Parse и передайте его в поле Proxy через http.ProxyURL. Go сам добавит заголовок авторизации — и для обычных запросов, и для https-сайтов через туннель.
Шаг 4. SOCKS5 тем же адресом
Тип прокси Go определяет по схеме адреса. Замените http:// на socks5:// и порт на 824 — остальной код не меняется. Логин и пароль так же берутся из адреса.
Шаг 5. Один клиент на весь скрипт
Создавайте http.Client один раз и используйте его во всех горутинах: он безопасен для параллельной работы и переиспользует соединения с прокси. Для серии запросов с одного IP возьмите фиксированный порт 10000–20000.
Шаг 6. Если соединение не устанавливается
Сверьте хост gw.prokso.com, порт и схему: HTTP на 823, SOCKS5 на 824, на портах 10000–20000 — оба. Ошибка 407 означает неверный логин или пароль либо закончившийся трафик: проверьте остаток на странице плана в кабинете. Таймаут чаще всего значит, что порт введён с ошибкой или клиент ждёт другой протокол. Если работаете с доступом по IP, убедитесь, что в белый список добавлен внешний адрес именно той машины, где запускается код.
Шаг 7. Проверьте вывод
Запустите пример: программа обращается к https://api.ipify.org и печатает IP, который видит сайт. Это должен быть адрес прокси, а не ваш. Ошибка 407 означает неверный логин или пароль либо закончившийся трафик на плане. Страница «Мой IP» в браузере здесь не поможет: браузер идёт напрямую.
Вопросы и ответы
Подхватит ли Go прокси из переменных окружения?
Только если в Transport стоит <code>http.ProxyFromEnvironment</code> — так сделано в стандартном <code>http.DefaultTransport</code>. Тогда действуют <code>HTTPS_PROXY</code> и <code>HTTP_PROXY</code>. В примере прокси задан явно, и переменные на него не влияют.
Почему запрос висит без ответа?
Задайте <code>Timeout</code> в клиенте, как в примере: без него Go будет ждать бесконечно. Если таймаут срабатывает сразу, сверьте порт и схему — HTTP на 823, SOCKS5 на 824.
Какой порт выбрать?
Порт 823 (HTTP) или 824 (SOCKS5) даёт новый IP на каждый запрос — удобно для сбора данных. Порт 10000–20000 держит один IP до 120 минут — для сессий со входом в аккаунт. На план приходится до 1000 одновременных соединений.
Как выбрать страну?
Страна записана в логине прокси. Сгенерируйте в кабинете строку для нужной страны и подставьте в код логин из неё — остальной адрес не меняется.
Что делать, если часть запросов падает?
При сборе данных отдельные адреса бывают медленными или недоступными. Добавьте в код несколько повторных попыток с паузой: на порту 823 или 824 каждая попытка пойдёт уже с нового адреса.