# การรีเซ็ตการเชื่อมต่อโดยฝั่งตรงข้าม (ECONNRESET) ผ่านพร็อกซี

> การรีเซ็ตการเชื่อมต่อโดยฝั่งตรงข้าม (ECONNRESET, socket hang up) ผ่านพร็อกซี: การเชื่อมต่อ keep-alive ที่ล้าสมัย, จุดออกที่หยุดทำงาน, ไฟร์วอลล์ สาเหตุและวิธีแก้ไข

- URL: https://crawlrelay.com/th/docs/errors/connection-reset/
- อัปเดตล่าสุด: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

ข้อผิดพลาดซ็อกเก็ต: ข้อความผิดพลาดที่แม่นยำในแต่ละเครื่องมือ สาเหตุที่เป็นไปได้ตามลำดับ และวิธีแก้ไขที่ใช้งานได้

**คำตอบด่วน — Connection reset by peer (ECONNRESET) หมายความว่าอย่างไรกับพร็อกซี?**

**การรีเซ็ตการเชื่อมต่อโดยฝั่งตรงข้าม** หมายถึงอีกฝั่งปิดการเชื่อมต่อ TCP อย่างกะทันหันด้วยการรีเซ็ตแทนการปิดปกติ ผ่านพร็อกซีที่เป็น residential proxies ของ CrawlRelay สาเหตุที่พบบ่อยคือการใช้การเชื่อมต่อ keep-alive ที่ล้าสมัย, จุดออกที่หยุดทำงาน หรือไฟร์วอลล์เป้าหมายที่ตัดการเชื่อมต่อ ลองส่งคำขอที่ปลอดภัยใหม่บนการเชื่อมต่อใหม่และอย่าปล่อยให้การเชื่อมต่อว่างนานเกินไป

## Connection reset by peer (ECONNRESET) แบบสั้นๆ

| คุณลักษณะ | ค่า |
| --- | --- |
| ข้อผิดพลาด | Connection reset by peer (ECONNRESET) |
| ประเภท | ข้อผิดพลาดซ็อกเก็ต |
| ส่งโดย | สแต็กเน็ตเวิร์ก หลังจากฝั่งตรงข้ามปิดการเชื่อมต่ออย่างกะทันหัน |
| กำหนดไว้ใน | TCP reset (RST segment): RFC 9293 |
| ลองใหม่อีกครั้งไหม? | ใช่ สำหรับคำขอที่ปลอดภัย บนการเชื่อมต่อใหม่ |
| ตรวจสอบก่อน | ดูว่าการรีเซ็ตเกิดขึ้นกับการเชื่อมต่อที่ใช้ซ้ำแบบว่างหรือการเชื่อมต่อใหม่ |

## Connection reset by peer (ECONNRESET) หมายความว่าอย่างไร?

TCP สามารถสิ้นสุดการเชื่อมต่อได้อย่างราบรื่นหรือด้วยการรีเซ็ต การรีเซ็ตจะบอกเครื่องของคุณว่าฝั่งตรงข้ามทิ้งการเชื่อมต่อ ทำให้ข้อมูลใด ๆ ที่ส่งไปเสียหาย Python จะยก `ConnectionResetError` ขึ้น; Node.js จะยก `ECONNRESET` หรือ 'socket hang up' ขึ้น

'peer' คือผู้ที่ซ็อกเก็ตของคุณติดต่อโดยตรง ซึ่งก็คือพร็อกซีเกตเวย์ การรีเซ็ตนี้อาจเกิดจากจุดอื่นในเส้นทางและถูกส่งต่อมา

## a connection reset เป็นอย่างไรใน Python, curl, Node.js และเบราว์เซอร์?

ข้อผิดพลาดเดียวกันนี้แสดงผลแตกต่างกันในแต่ละเครื่องมือ นี่คือข้อความที่ต้องค้นหาในบันทึกของคุณ:

- **Python:** `ConnectionResetError: [Errno 104] Connection reset by peer`, หรือ `[WinError 10054]` บน Windows
- **requests:** `ConnectionError(ProtocolError('Connection aborted.', ConnectionResetError(...)))`
- **Node.js:** `Error: socket hang up` หรือ `read ECONNRESET`
- **curl:** `curl: (56) Recv failure: Connection reset by peer`

## อะไรเป็นสาเหตุของ a connection reset?

โอกาสสูงสุดอันดับแรก:

- **การเชื่อมต่อ keep-alive ล้าสมัย.** การเชื่อมต่อรวม (pool) นั่งอยู่เฉย ๆ แล้วถูกปิดจากฝั่งตรงข้าม; คำขอถัดไปจะล้มเหลวทันที
- **จุดออกที่หยุดทำงาน** ซึ่งจะตัดการเชื่อมต่อทุกครั้งที่ใช้มัน
- **ไฟร์วอลล์เป้าหมาย** ที่รีเซ็ตการเชื่อมต่อที่ไม่ชอบ
- **การอัปโหลดหรือดาวน์โหลดนาน** ที่ถูกจำกัดด้วยเวลาว่าง (idle limit) บนเส้นทางใดเส้นทางหนึ่ง

## ฉันวินิจฉัย a connection reset ทีละขั้นตอนอย่างไร?

1. ตรวจสอบว่าการรีเซ็ตเกิดขึ้นกับคำขอแรกของการเชื่อมต่อหรือหลังจากใช้ซ้ำแบบว่าง
2. นับจำนวนรีเซ็ตต่อโฮสต์: โฮสต์เดียวแปลว่าเป้าหมาย; ทุกโฮสต์แปลว่าเส้นทางหรือพูล
3. สังเกตช่วงเวลา: การรีเซ็ตที่เกิดขึ้นหลังจากว่างเต็ม N วินาทีชี้ไปที่การจำกัด idle

*ทดสอบ URL ที่ล้มเหลวด้วย curl (พอร์ต HTTP, โหมดละเอียด)*

```bash
# 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:PASSWORD@gw.crawlrelay.com: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_URL
```

## ฉันจะแก้ไข a connection reset อย่างไร?

- **ลองใหม่กับคำขอที่ทำซ้ำได้** (GET, HEAD) บนการเชื่อมต่อใหม่ครั้งหนึ่ง
- **ลดเวลาการใช้ซ้ำว่าง**: ปิดการเชื่อมต่อรวมที่ว่างนานเกินไม่กี่วินาที หรือเปิดการเชื่อมต่อใหม่ตามคำขอเมื่อคุณต้องการ IP ใหม่
- **ยุติ session ที่ติดและรีเซ็ตบ่อย ๆ** และเริ่มต้น session ใหม่
- **ลดความเร็ว** บนโฮสต์ที่รีเซ็ตภายใต้ความเร็วสูง

*Python: ลองใหม่ด้วย Retry-After, การหน่วงเพิ่มขึ้นแบบเอ็กซ์โพเนนเชียล และ jitter*

```python
import random
import time

import requests

PROXY = "http://USERNAME:PASSWORD@gw.crawlrelay.com: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 ไหม?

ลองรีเซ็ตอีกครั้งหนึ่งสำหรับคำขอที่ปลอดภัยเช่น GET อย่าลองใหม่แบบไม่เลือกสำหรับคำขอ POST ที่เปลี่ยนข้อมูล เพราะคำขอแรกอาจได้ถูกประมวลผลแล้ว การเกิดรีเซ็ตหลายครั้งในโฮสต์เดียวหมายความว่าโฮสต์นั้นตัดการเชื่อมต่อคุณ; ควบคุมความเร็วที่นั่น

## Connection reset by peer (ECONNRESET) มีผลอย่างไรกับ CrawlRelay?

บน CrawlRelay การสลับเกิดขึ้นทุกครั้งที่มีการเชื่อมต่อใหม่ ลูกค้าที่รักษาการเชื่อมต่อหนึ่งไว้ จะได้จุดออกเดียวกันสำหรับคำขอทุกคำขอบนมัน ดังนั้นถ้าจุดออกหยุดทำงาน การเชื่อมต่อจะรีเซ็ต เปิดการเชื่อมต่อใหม่เพื่อรับจุดออกใหม่; [sessions guide](https://crawlrelay.com/th/docs/sessions/) แสดงรูปแบบต่าง ๆ

เกตเวย์: `gw.crawlrelay.com`, พอร์ต 7777 (HTTP, HTTPS ผ่าน CONNECT) และพอร์ต 7778 (SOCKS5). รูปแบบชื่อผู้ใช้: `USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}`. ที่เกี่ยวข้อง: [502 Bad Gateway](https://crawlrelay.com/th/docs/errors/502-bad-gateway/) · [Read timed out](https://crawlrelay.com/th/docs/errors/read-timeout/) · [Sessions guide](https://crawlrelay.com/th/docs/sessions/).

## Connection reset by peer (ECONNRESET): คำถามที่นักพัฒนาถาม

### ทำไมฉันจึงเจอ 'socket hang up' ใน Node.js กับพร็อกซี?

การเชื่อมต่อถูกปิดก่อนที่คำตอบจะมาถึง ด้วยพร็อกซี สาเหตุที่พบบ่อยคือซ็อกเก็ต keep-alive ที่ใช้ซ้ำแต่ล้าสมัย, จุดออกที่หยุดทำงาน หรือเป้าหมายที่ตัดการเชื่อมต่อ ลองคำขอ GET บนซ็อกเก็ตใหม่และจำกัดเวลาการว่างของซ็อกเก็ตในพูล

### การรีเซ็ตการเชื่อมต่อเป็นสัญญาณว่าฉันถูกบล็อกหรือไม่?

บางครั้ง ไฟร์วอลล์อาจรีเซ็ตการเชื่อมต่อจากไคลเอนต์ที่ปฏิเสธ แต่การรีเซ็ตก็เกิดขึ้นด้วยเหตุผลไร้อันตรายบนเครือข่าย residential ใด ๆ ดูรูปแบบ: รีเซ็ตจำกัดแค่โฮสต์เดียวและเพิ่มขึ้นตามอัตราคำขอของคุณชี้ว่าโฮสต์นั้นต่อต้าน

### ฉันควรปิดการใช้งาน keep-alive สำหรับการขูดข้อมูลหรือไม่?

ไม่ทั้งหมด keep-alive ช่วยประหยัดเวลาหากคุณส่งคำขอหลายคำไปยังโฮสต์เดิมผ่านจุดออกที่ติดอยู่ เมื่อคุณต้องการ IP ใหม่ทุกคำขอ การเชื่อมต่อใหม่ทุกคำขอเป็นทางเลือกที่สะอาดกว่า การใช้ทั้งสองแบบแบบไม่ระวังทำให้เกิดการรีเซ็ตการเชื่อมต่อที่ล้าสมัย

## ข้อผิดพลาดพร็อกซีอื่นๆ ในเอกสารอ้างอิงนี้

- [401 Unauthorized vs 407](https://crawlrelay.com/th/docs/errors/401-unauthorized/)
- [403 Forbidden](https://crawlrelay.com/th/docs/errors/403-forbidden/)
- [407 Proxy Authentication Required](https://crawlrelay.com/th/docs/errors/407-proxy-authentication-required/)
- [429 Too Many Requests](https://crawlrelay.com/th/docs/errors/429-too-many-requests/)
- [502 Bad Gateway](https://crawlrelay.com/th/docs/errors/502-bad-gateway/)
- [503 Service Unavailable](https://crawlrelay.com/th/docs/errors/503-service-unavailable/)
- [504 Gateway Timeout](https://crawlrelay.com/th/docs/errors/504-gateway-timeout/)
- [Cannot connect to proxy (ProxyError)](https://crawlrelay.com/th/docs/errors/cannot-connect-to-proxy/)
- [Connection reset by peer (ECONNRESET)](https://crawlrelay.com/th/docs/errors/connection-reset/)
- [ERR_PROXY_CONNECTION_FAILED](https://crawlrelay.com/th/docs/errors/err-proxy-connection-failed/)
- [ERR_TUNNEL_CONNECTION_FAILED](https://crawlrelay.com/th/docs/errors/err-tunnel-connection-failed/)
- [Read timed out (ReadTimeout)](https://crawlrelay.com/th/docs/errors/read-timeout/)
- [SOCKS5 proxy errors](https://crawlrelay.com/th/docs/errors/socks5-proxy-errors/)
- [SSL: CERTIFICATE_VERIFY_FAILED](https://crawlrelay.com/th/docs/errors/ssl-certificate-verify-failed/)
- [SSL: WRONG_VERSION_NUMBER](https://crawlrelay.com/th/docs/errors/ssl-wrong-version-number/)

**พร็อกซีเรซิเดนเชียลที่มีเอกสารอธิบายกรณีล้มเหลว** พร็อกซีเรซิเดนเชียล CrawlRelay จาก US$0.50/GB, ปริมาณข้อมูลที่ไม่หมดอายุ [ดูราคา](https://crawlrelay.com/th/pricing/) · [เริ่มต้นอย่างรวดเร็ว](https://crawlrelay.com/th/docs/)

---

CrawlRelay: CrawlRelay คือพร็อกซีเรซิเดนเชียลหมุนเวียนพร้อมพร็อกซีมือถือ 4G/5G สำหรับนักพัฒนา เหมาะกับสแครปเปอร์และระบบจัดการข้อมูล AI: เติมเงินจ่ายตามการใช้งานจาก US$0.50/GB จ่ายด้วยคริปโต ไม่ต้องอัปโหลดบัตรประชาชน ไม่ต้อง KYC — ไม่ต้องใช้บัตรประชาชน ไม่ต้องถ่ายเซลฟี่ ไม่ต้องใช้เอกสาร จ่ายด้วยคริปโต
