Szybka odpowiedź
Co oznacza SOCKS5 proxy errors w kontekście proxy?
Błędy SOCKS5 występują w trzech rodzajach: klient nie ma wsparcia SOCKS, serwer odrzucił login i hasło, albo serwer nie dotarł do celu i zwrócił kod odpowiedzi. W CrawlRelay zainstaluj wsparcie SOCKS (dla Python requests: requests[socks]), używaj portu SOCKS5 i preferuj socks5h://, aby DNS rozwiązywał exit, a nie Twoja maszyna.
SOCKS5 proxy errors w skrócie
| Błąd | SOCKS5 proxy errors |
|---|---|
| Typ | Błąd protokołu lub klienta SOCKS5 |
| Wysłane przez | Serwer SOCKS5 (kody odpowiedzi) lub Twoja biblioteka klienta (brak wsparcia) |
| Zdefiniowano w | SOCKS5: RFC 1928; username/password authentication: RFC 1929 |
| Spróbować ponownie? | Zależy od kodu odpowiedzi |
| Najpierw sprawdź | Potwierdź, że klient obsługuje SOCKS5 z uwierzytelnianiem, potem przeczytaj kod odpowiedzi |
Co oznacza SOCKS5 proxy errors?
SOCKS5, zdefiniowany w RFC 1928, pośredniczy w połączeniach TCP bez czytania HTTP. Uwierzytelnianie przez login i hasło to osobna krótka wymiana, opisana w RFC 1929. Po uwierzytelnieniu klient prosi o połączenie do hosta i portu, a serwer odpowiada jednobajtowym kodem.
Kod 0x00 oznacza sukces. Kody od 0x01 do 0x08 oznaczają niepowodzenia, od ogólnej awarii serwera do nieobsługiwanego typu adresu. Klienci tłumaczą te kody na własne komunikaty.
Jak wygląda a SOCKS5 error w Python, curl, Node.js i przeglądarkach?
Ten sam błąd wyświetla się inaczej w każdym narzędziu. Oto komunikaty, które warto wyszukać w logach:
- Python requests bez PySocks:
InvalidSchema: Missing dependencies for SOCKS support. - curl, odrzucone dane:
curl: (97) User was rejected by the SOCKS5 server - Odpowiedź 0x01: 'ogólna awaria serwera SOCKS'
- Odpowiedź 0x04 / 0x05: 'Host niedostępny' / 'Połączenie odrzucone' przez cel
- Odpowiedź 0x08: 'Nieobsługiwany typ adresu'
Co powoduje a SOCKS5 error?
Najczęściej na początku:
- Brak wsparcia SOCKS w bibliotece klienta.
- Złe dane logowania lub niezakodowane URL.
- Port HTTP używany dla SOCKS lub port SOCKS dla HTTP.
- Cel odrzucił lub był niedostępny z wyjścia.
- Lokalny DNS przy
socks5://: klient sam rozwiązuje nazwę, co może się nie powieść lub zwrócić zły regionalny adres.
Jak krok po kroku zdiagnozować a SOCKS5 error?
- Potwierdź wsparcie SOCKS: w Pythonie
pip show pysocks; w Node.js pakiet agenta SOCKS. - Uruchom test curl na porcie SOCKS5 z
--socks5-hostname. - Odczytaj kod lub komunikat odpowiedzi.
- Porównaj
socks5://isocks5h://dla tego samego celu.
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:[email protected]:7777 https://TARGET_URL
# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URLJak naprawić a SOCKS5 error?
- Zainstaluj wsparcie:
pip install "requests[socks]"; w Node.js użyj agenta proxy SOCKS. - Używaj portu SOCKS5 dla adresów
socks5h://i portu HTTP dlahttp://. - Preferuj
socks5h://, aby exit rozwiązywał DNS, co odpowiada lokalnym użytkownikom. - Dla kodów 0x04 lub 0x05 przetestuj cel bez proxy; może być niedostępny lub odrzucający połączenia.
- Dla przeglądarek używaj portu HTTP: Chromium nie wspiera uwierzytelniania SOCKS5.
import requests
# socks5h:// sends the hostname to the proxy, so DNS resolves at the exit
proxy = "socks5h://USERNAME:[email protected]:7778"
r = requests.get("https://api.ipify.org", proxies={"http": proxy, "https": proxy}, timeout=(10, 30))
print(r.status_code, r.text)Czy warto ponawiać próbę po a SOCKS5 error?
Powtarzaj tylko błędy po stronie celu, takie jak host niedostępny czy połączenie odrzucone, i to tylko raz na nowym wyjściu. Błędy uwierzytelnienia i brak wsparcia klienta powtarzają się aż do poprawki konfiguracji.
Jak SOCKS5 proxy errors odnosi się do CrawlRelay?
CrawlRelay serwuje SOCKS5 na własnym porcie, wymienionym poniżej, z tym samym formatem nazwy użytkownika i hasła co port HTTP. Targeting i sesje działają identycznie na obu portach.
Gateway: gw.crawlrelay.com, port 7777 (HTTP, HTTPS przez CONNECT) i port 7778 (SOCKS5). Format nazwy użytkownika: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. Powiązane: Nie można połączyć się z proxy · poradnik curl · poradnik Python.
SOCKS5 proxy errors: pytania, które zadają deweloperzy
Jaka jest różnica między socks5:// a socks5h://?
Przy socks5:// klient sam rozwiązuje nazwę hosta na adres IP i wysyła IP do proxy. Przy socks5h:// wysyła nazwę hosta, a po stronie proxy następuje rozwiązywanie. Używaj socks5h:// do scrapowania: DNS odbywa się na wyjściu, więc otrzymujesz te same regionalne odpowiedzi, które dostają lokalni użytkownicy.
Czy powinienem używać proxy SOCKS5 czy HTTP do scrapowania?
Do stron WWW oba działają, a proxy HTTP są prostsze: każda biblioteka HTTP i przeglądarka je obsługuje z uwierzytelnianiem. Używaj SOCKS5 do protokołów innych niż HTTP lub narzędzi, które obsługują tylko SOCKS. Przeglądarki oparte na Chromium nie mogą uwierzytelniać się przez SOCKS5, więc tam używaj portu HTTP.
Dlaczego curl wyświetla komunikat 'User was rejected by the SOCKS5 server'?
Serwer SOCKS5 odrzucił wymianę nazwy użytkownika i hasła. Sprawdź dane logowania, zakoduj znaki specjalne w URL i potwierdź, że używasz portu SOCKS5. Ten sam login i hasło powinny działać na porcie HTTP, jeśli konto jest aktywne.
Inne błędy proxy w tym odniesieniu
Kody statusu HTTP
- 401 Unauthorized vs 407
- 403 Forbidden
- 407 Proxy Authentication Required
- 429 Too Many Requests
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
Błędy w przeglądarce i kliencie
Błędy połączenia i TLS
Proxy rezydencjalne z dokumentacją opisującą przypadki błędów
CrawlRelay proxy rezydencjalne od 0,50 USD/GB, ruch, który nigdy nie wygasa.