- 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ół.
- 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.