Hızlı cevap
Konut proxy ile Connection reset by peer (ECONNRESET) ne anlama gelir?
Bağlantı arkadaş tarafından sıfırlandı ifadesi, TCP bağlantısının diğer ucun normal kapama yerine ani bir sıfırlama ile kapandığını belirtir. CrawlRelay konut proxy'leri üzerinden, yaygın nedenler eskiyip kullanılmaz hale gelmiş kalıcı bir bağlantının yeniden kullanılması, düşen bir çıkış veya bağlantıyı kesen hedef güvenlik duvarıdır. Güvenli istekleri yeni bir bağlantı ile yeniden deneyin ve boşta kalan bağlantıları çok uzun tutmayın.
Connection reset by peer (ECONNRESET) hızlı bakış
| Hata | Connection reset by peer (ECONNRESET) |
|---|---|
| Tür | Soket hatası |
| Gönderen | Ağ yığını, diğer taraf bağlantıyı aniden kapattıktan sonra |
| Tanımlandığı yer | TCP reset (RST segment): RFC 9293 |
| Tekrar denemek ister misiniz? | Evet, güvenli isteklerde, yeni bir bağlantı üzerinden |
| İlk kontrol | Sıfırlamaların boşta yeniden kullanılan bağlantılar mı yoksa yeni bağlantılar mı ardından gerçekleştiğine bakın |
Connection reset by peer (ECONNRESET) ne anlama gelir?
TCP bir bağlantıyı ya nazikçe ya da sıfırlayarak kesebilir. Sıfırlama, makinenize diğer tarafın bağlantıyı attığını bildirir, bu yüzden yolda olan veriler kaybolur. Python ConnectionResetError kaldırır; Node.js ise ECONNRESET veya 'socket hang up' verir.
'Socket'in konuştuğu doğrudan eş peer'dir; bu proxy ağ geçididir. Sıfırlama zincirde daha ileride başlayabilir ve iletilebilir.
Python, curl, Node.js ve tarayıcılarda a connection reset nasıl görünür?
Aynı başarısızlık her araçta farklı şekilde görünür. Loglarınızda aramanız gereken mesajlar şunlardır:
- Python:
ConnectionResetError: [Errno 104] Connection reset by peerveya Windows'ta[WinError 10054] - requests:
ConnectionError(ProtocolError('Connection aborted.', ConnectionResetError(...))) - Node.js:
Error: socket hang upveyaread ECONNRESET - curl:
curl: (56) Recv failure: Connection reset by peer
a connection reset neden olur?
Öncelikle en olası sebep:
- Eski kalıcı bağlantılar: Havuzdaki bir bağlantı boşta kaldı ve diğer taraf kapattı; sonraki istek hemen başarısız olur.
- Düşen bir çıkış, o çıkışı kullanan her bağlantıyı sonlandırır.
- Bağlantıyı kesen hedef güvenlik duvarı.
- **Yolda bir yerde boşta kalma sınırı tarafından kesilen uzun yüklemeler veya indirmeler.
a connection reset nasıl adım adım teşhis edilir?
- Sıfırlamaların bağlantının ilk isteğinde mi yoksa boşta yeniden kullanım sonrası mı meydana geldiğini kontrol edin.
- Her ana bilgisayar için sıfırlamaları sayın: tek ana bilgisayar hedefi gösterir; tüm ana bilgisayarlar yol veya havuzu gösterir.
- Zamanlamayı not edin: tam N saniye boşta kalma sonrası sıfırlamalar boşta kalma sınırına işaret eder.
# 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_URLa connection reset nasıl düzeltilir?
- Tekrar deneyin: Yalnızca yeni bir bağlantıda idempotent istekler (GET, HEAD).
- Boşta yeniden kullanımı kısaltın: Birkaç saniyeden uzun boşta kalmış havuz bağlantılarını kapatın veya zaten yeni IP gerekliyse her istek için yeni bağlantı açın.
- **Tekrarlayan sıfırlamalar yapan sabit oturumu bitirin ve yenisini başlatın.
- **Yük altındayken sıfırlama yapan ana bilgisayarlarda yavaşlayın.
import random
import time
import requests
PROXY = "http://USERNAME:[email protected]:7777"
PROXIES = {"http": PROXY, "https": PROXY}
RETRY_STATUSES = {429, 502, 503, 504}
def fetch(url, attempts=5, timeout=(10, 30)):
for attempt in range(attempts):
try:
r = requests.get(url, proxies=PROXIES, timeout=timeout)
except (requests.exceptions.ConnectionError, requests.exceptions.Timeout):
r = None # dropped exit, reset or timeout: a new connection gets a new exit
if r is not None and r.status_code not in RETRY_STATUSES:
return r
retry_after = r.headers.get("Retry-After", "") if r is not None else ""
if retry_after.isdigit():
wait = int(retry_after)
else:
wait = min(60, 2 ** attempt) + random.uniform(0, 1)
time.sleep(wait)
raise RuntimeError("giving up on %s after %d attempts" % (url, attempts))a connection reset sonrası tekrar denenmeli mi?
Güvenli isteklerde, örneğin GET, sıfırlamayı bir kez yeniden deneyin. Veriyi değiştiren POST isteklerini körü körüne yeniden denemeyin: ilk istek işlenmiş olabilir. Bir ana bilgisayarda sıfırlama patlaması o ana bilgisayarın sizi kesiyor olduğunu gösterir; oradaki hızı azaltın.
Connection reset by peer (ECONNRESET) CrawlRelay için nasıl geçerli?
CrawlRelay'de döndürme her yeni bağlantıda gerçekleşir. Bir istemci bir bağlantıyı canlı tutarsa, o bağlantıdaki her istek için aynı çıkışı kullanır, dolayısıyla düşen bir çıkış o bağlantıyı sıfırlar. Yeni bir bağlantı açarak taze bir çıkış alın; oturumlar rehberi modelleri gösterir.
Gateway: gw.crawlrelay.com, port 7777 (HTTP, HTTPS CONNECT üzerinden) ve port 7778 (SOCKS5). Kullanıcı adı formatı: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. İlgili: 502 Bad Gateway · Read timed out · Sessions guide.
Connection reset by peer (ECONNRESET): geliştiricilerin sorduğu sorular
Proxy ile Node.js içinde neden 'socket hang up' alıyorum?
Yanıt gelmeden önce bağlantı kapandı. Proxy ile, yaygın nedenler eskiyip kullanılamaz kalmış yeniden kullanılan bir kalıcı soket, düşen bir çıkış veya bağlantıyı koparan hedeftir. GET isteklerini yeni bir sokette yeniden deneyin ve boşta kalmış soketlerin havuzda kalma süresini sınırlandırın.
Bağlantı sıfırlaması engellendiğimin bir işareti midir?
Bazen. Güvenlik duvarları reddettikleri istemcilerde bağlantıyı sıfırlayabilir, ama sıfırlamalar zararsız sebeplerle herhangi bir konut ağında da olur. Modeli inceleyin: Sıfırlamalar yalnızca belli bir ana bilgisayara sınırlıysa ve istek hızınıza bağlı artıyorsa, ana bilgisayar sizi engelliyor demektir.
Scraping için keep-alive kapatmalı mıyım?
Tam olarak değil. Keep-alive, aynı çıkış üzerinden aynı ana bilgisayara birden fazla istek gönderirken zaman kazandırır. Her istek için yeni IP istediğinizde, her istek için yeni bağlantı temiz tercih olur. Bunların karışımı kontrolsüz yapılırsa eski bağlantı sıfırlamalarına yol açar.
Bu referanstaki diğer proxy hataları
HTTP durum kodları
- 401 Unauthorized vs 407
- 403 Forbidden
- 407 Proxy Authentication Required
- 429 Too Many Requests
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
Tarayıcı ve istemci hataları
Bağlantı ve TLS hataları
Başarısızlık durumları için dokümanlı konut proxy'ler
$0,50/GB sitesinden süresi hiç bitmeyen CrawlRelay konut proxy