Jak skonfigurować proxy w Go

Proxy w Go z net/http: http.ProxyURL w Transport, login i hasło w URL, SOCKS5 przez schemat socks5:// bez dodatkowych modułów oraz limity czasu.

Zaktualizowano · Redakcja Prokso

Dane do połączenia
Host
gw.prokso.com
Port
823 HTTP · 824 SOCKS5 — nowy IP przy każdym żądaniu · 10000–20000 stały IP na całą sesję, HTTP(S) i SOCKS5
Login i hasło
w panelu klienta, na stronie planu

Gotowe wiersze w potrzebnym formacie wygenerujesz w panelu klienta: wybierz kraj, typ IP i protokół.

W skrócie
  • Host gw.prokso.com, porty 823 (HTTP), 824 (SOCKS5), 10000–20000 (stały IP, HTTP lub SOCKS5)
  • Login i hasło znajdziesz w panelu klienta na stronie planu
  • Sprawdzaj IP w odpowiedzi na samo żądanie wysłane przez proxy: strona Mój IP w przeglądarce nie testuje Twojego skryptu

Instrukcja krok po kroku, jak podłączyć proxy Prokso w Go. Zajmie to kilka minut.

Krok 1. Pobierz dane proxy z panelu klienta

Otwórz swój plan i skopiuj host gw.prokso.com, port, login i hasło. Port 823 to HTTP, a 824 to SOCKS5 (oba dają nowy IP przy każdym żądaniu); porty 10000–20000 utrzymują jeden IP przez całą sesję do 120 minut i działają zarówno jako HTTP, jak i SOCKS5 (każdy port to osobny adres). Kraj ustawiasz w loginie: username__cr.ua.

Krok 2. Niczego nie instaluj

Wszystko, czego potrzebujesz, jest w bibliotece standardowej: pakiety net/http i net/url. Ani do HTTP, ani do SOCKS5 nie potrzebujesz zewnętrznych modułów.

package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"time"
)

func main() {
	proxyURL, err := url.Parse("http://USERNAME:PASSWORD@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))
}

Krok 3. Ustaw proxy w Transport

Sparsuj URL proxy z loginem i hasłem przez url.Parse i przekaż go do pola Proxy przez http.ProxyURL. Go sam doda nagłówek autoryzacji – zarówno przy zwykłych żądaniach, jak i dla stron https przez tunel.

Krok 4. SOCKS5 z tym samym URL

Go wybiera typ proxy na podstawie schematu URL. Zmień http:// na socks5://, a port na 824 – reszta kodu się nie zmienia. Login i hasło nadal są pobierane z URL.

Krok 5. Jeden klient dla całego programu

Utwórz http.Client raz i używaj go we wszystkich gorutynach: można go bezpiecznie używać współbieżnie i ponownie wykorzystuje połączenia z proxy. Do serii żądań z jednego IP użyj portu ze stałym IP z zakresu 10000-20000.

Krok 6. Jeśli połączenie się nie udaje

Sprawdź host gw.prokso.com, port i schemat: HTTP na 823, SOCKS5 na 824, dowolny z nich na portach 10000-20000. Błąd 407 oznacza nieprawidłowy login lub hasło albo koniec transferu w planie: sprawdź saldo na stronie planu w panelu klienta. Przekroczenie limitu czasu najczęściej oznacza literówkę w porcie albo klienta, który oczekuje innego protokołu. Jeśli korzystasz z listy dozwolonych IP, upewnij się, że jest na niej zewnętrzny adres dokładnie tej maszyny, na której działa kod.

Krok 7. Sprawdź wynik

Uruchom przykład: program wywołuje https://api.ipify.org i wypisuje IP, który widzi strona. Powinien to być adres proxy, a nie Twój. Błąd 407 oznacza nieprawidłowy login lub hasło albo koniec transferu w planie. Strona Mój IP w przeglądarce nic tu nie pokaże, bo przeglądarka łączy się bezpośrednio.

Jeśli proxy nie działa

Pytania i odpowiedzi (FAQ)

Czy Go pobierze proxy ze zmiennych środowiskowych?

Tylko jeśli Transport używa http.ProxyFromEnvironment, tak jak standardowy http.DefaultTransport. Wtedy działają HTTPS_PROXY i HTTP_PROXY. W przykładzie proxy jest ustawione jawnie, więc zmienne na nie nie wpływają.

Dlaczego żądanie wisi bez odpowiedzi?

Ustaw Timeout w kliencie, tak jak w przykładzie: bez niego Go czeka w nieskończoność. Jeśli limit czasu zadziała od razu, sprawdź port i schemat: HTTP na 823, SOCKS5 na 824.

Którego portu użyć?

Port 823 (HTTP) lub 824 (SOCKS5) daje nowy IP przy każdym żądaniu, co pasuje do zbierania danych. Port z zakresu 10000-20000 utrzymuje jeden IP przez maksymalnie 120 minut – do sesji, w których logujesz się na konto. Plan pozwala na maksymalnie 1000 jednoczesnych połączeń.

Jak wybrać kraj?

Kraj jest częścią loginu proxy. Wygeneruj w panelu klienta linię dla potrzebnego kraju i użyj jej loginu w kodzie; reszta adresu się nie zmienia.

Co, jeśli część żądań się nie udaje?

Przy zbieraniu danych niektóre adresy mogą być wolne lub niedostępne. Dodaj do kodu kilka ponowień z przerwą: na porcie 823 lub 824 każde ponowienie wychodzi z nowego adresu.