Proxy skirtasis laikas: ryšys pakimba, o po to nutrūksta
Updated:
Skirtojo laiko pabaiga erzina labiau nei kitos klaidos, nes ji nieko nepraneša: jokio atmetimo, jokio slaptažodžio prašymo – tik tyla, kol jūsų programinė įranga pasiduoda. Paprastai paketai kažkur nukeliauja ir pradingsta arba tarpinis serveris priima ryšį, bet laiku neatsako. Svarbiausia – išsiaiškinti, kuriame etape atsiranda ši tyla.
Trys mūsų išmatuoti skirtojo laiko rezultatai
Sukūrėme bandomąjį tarpinį serverį, kuris priima TCP ryšius, bet niekada neatsako, ir paleidome tą pačią užklausą su dviejų tipų laiko limitais (adresas pakeistas į 203.0.113.10:8080, user123:pass456):
curl --connect-timeout 10 -x http://user123:[email protected]:8080 https://example.comgrąžinacurl: (28) Proxy CONNECT aborted due to timeout. Šis limitas taikomas tik prisijungimo etapui.- Pakeitus į
-m 10(viso perdavimo limitas), gaunamacurl: (28) Connection timed out after 10002 milliseconds. - Nukreipus Chromium į tą patį tarpinį serverį, rodoma
ERR_TIMED_OUT; proxy tikrintuvas pateikiatimeout.
Priežastys pagal tikėtinumą
- Jūsų tinklas tyliai blokuoja proxy prievadą. Biuro, viešbučio ar universiteto Wi-Fi dažnai tiesiog numeta paketus į neįprastus prievadus, užuot juos atmetęs, todėl laukiate be galo.
- Jūsų kode nustatytas per trumpas laiko limitas. Tolimoje šalyje esančiam proxy serveriui reikia šiek tiek daugiau laiko rankos paspaudimui; 2–3 sekundžių limitas gali nutraukti visiškai veikiančio serverio darbą.
- Tarpinis serveris arba paskirties vieta yra perkrauta. Tarpinis serveris priima ryšį, tačiau laukia svetainės atsakymo, o jūsų kantrybė baigiasi anksčiau.
- Neteisingas IP. Rašybos klaida, nukreipianti į neatsakantį adresą, sukelia tylą, o ne ryšio atmetimą.
Sprendimai pagal aplinką
- Windows/Chrome: išbandykite tą patį proxy naudodami telefono mobiliuosius duomenis. Jei laiko limito klaida išnyksta, pradinis tinklas blokuoja srautą; skaitykite proxy ir ugniasienės tikrinimas.
- Antidetect naršyklės: proxy tikrinimo mygtukas paprastai turi fiksuotą laukimo laiką. Pabandykite dar kelis kartus, o jei nepavyksta tik tam tikriems profiliams, palyginkite jų proxy eilutę su veikiančia.
- Telegram: įstrigęs prisijungimas įjungus proxy dažnai taip pat reiškia laiko limitą; prieš keisdami Telegram nustatymus, išbandykite proxy tikrintuve.
- Python requests: nurodykite
timeout=(10, 30), o tai reiškia 10 sekundžių prisijungimui ir 30 sekundžių nuskaitymui. Atskirai apdorokiterequests.exceptions.ConnectTimeoutirrequests.exceptions.ReadTimeout, kad pamatytumėte, kur pakimba, ir pridėkite kelis pakartotinius bandymus su intervalais, o ne neribotą laukimą. - curl: naudokite
--connect-timeout, kad išmatuotumėte tik prisijungimo etapą, ir-m, kad apribotumėte visą komandą.
Skirtasis laikas ar tiesiog lėtas veikimas?
Lėtas tarpinis serveris vis tiek atsako, tik vėliau. Proxy greičio testas parodo realų atsako laiką; jei jis yra arti jūsų programinės įrangos laiko limito, padidinkite limitą arba pasirinkite proxy šalyje, kuri yra arčiau tikslo. Jei pakartotiniai testai niekada negauna atsakymo, tai tikras skirtasis laikas, o kitas žingsnis – pateikti užklausą su tikrintuvo rezultatu.
Žingsnis po žingsnio
- 1
Patvirtinkite laiko limitą tikrintuvu
Įklijuokite proxy eilutę į proxy tikrintuvas. Rezultatas
timeoutreiškia, kad per nustatytą laukimo limitą atsakymas negautas. - 2
Pakeiskite tinklą, kad nustatytumėte priežastį
Pabandykite dar kartą naudodami mobiliuosius duomenis. Jei pavyksta, problema yra pradiniame tinkle arba jo ugniasienėje.
- 3
Išmatuokite atsako laiką
Atlikite proxy greičio testas, kad pamatytumėte, ar proxy yra lėtas, ar visai neatsako.
- 4
Sureguliuokite laiko limitus ir kartojimus programoje
Padidinkite prisijungimo limitą maždaug iki 10 sekundžių, pridėkite pakartotinius bandymus ir paleiskite užduotį iš naujo.
Dažnai užduodami klausimai
Ar proxy skirtasis laikas reiškia, kad proxy nebeveikia?
Nebūtinai. Daugeliu atvejų laiko limitas viršijamas todėl, kad vartotojo tinklas blokuoja prievadą. Prieš darydami išvadas, išbandykite kitame tinkle.
Kokį laiko limitą proxy serveriams nustatyti kode?
Maždaug 10 sekundžių prisijungimui ir 30 sekundžių nuskaitymui yra tinkama pradžia. Tolimiems proxy serveriams ar didelės apimties puslapiams gali prireikti daugiau.
Kodėl per proxy laiko limitas viršijamas tik tam tikrose svetainėse?
Tokiu atveju proxy veikia, o paskirties svetainė veikia lėtai arba blokuoja. Jei svetainė vietoj tylos pateikia 502, žr. 502 Bad Gateway.
Kuo skirtasis laikas skiriasi nuo atmesto ryšio?
Atmetimas įvyksta akimirksniu, o skirtasis laikas laukia iki limito pabaigos. Žr. tarpinis serveris atmeta ryšius.
Pasirinkite proxy arčiau savo rinkos
VinaProxy siūlo IP adresus Vietname, JAV, Japonijoje, Pietų Korėjoje, Singapūre, JK ir Honkonge, kad būtumėte arti savo tikslo.
Žiūrėti kainas