ไม่ต้อง KYC — ไม่ต้องใช้บัตรประชาชน ไม่ต้องถ่ายเซลฟี่ ไม่ต้องเอกสาร จ่ายด้วยคริปโต: BTC, USDT, USDC, ETH, SOL, LTC
ภาษา: ไทย
เริ่มต้นเลย

ข้อมูลอ้างอิงข้อผิดพลาดพร็อกซี · ข้อผิดพลาดการเชื่อมต่อและ TLS

Read timed out ผ่าน proxy: สาเหตุและการตั้งเวลาที่สมเหตุสมผล

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

อัปเดตล่าสุด:

คำตอบด่วน

Read timed out (ReadTimeout) หมายความว่าอย่างไรกับพร็อกซี?

Read timed out หมายถึงไคลเอนต์ของคุณรอนานกว่าการตั้งเวลาหมดเวลาการอ่านสำหรับไบต์ถัดไปของคำตอบ ผ่าน residential proxy ของ CrawlRelay โดยปกติความล่าช้ามาจากเป้าหมายช้า หรือการเชื่อมต่อออกบ้านที่ช้า กำหนดเวลาหมดเวลาการเชื่อมต่อและอ่านแยกกัน ประมาณ 10 และ 30 ถึง 60 วินาทีสำหรับหน้า HTML และลองใหม่หนึ่งครั้งเมื่อหมดเวลาโดยใช้ exit ใหม่

Read timed out (ReadTimeout) แบบสั้นๆ

ข้อผิดพลาดRead timed out (ReadTimeout)
ประเภทไคลเอนต์หมดเวลารอ
ส่งโดยHTTP client ของคุณ เมื่อไม่มีข้อมูลมาถึงภายในเวลาที่กำหนดสำหรับอ่านข้อมูล
กำหนดไว้ในClient setting, no protocol status
ลองใหม่อีกครั้งไหม?ใช่ ครั้งหรือสองครั้งกับ exit ใหม่
ตรวจสอบก่อนเปรียบเทียบเวลาหมดเวลาการอ่านกับเวลาตอบสนองปกติของเป้าหมาย

Read timed out (ReadTimeout) หมายความว่าอย่างไร?

ไคลเอนต์มักมีตัวจับเวลาสองตัว connect timeout จำกัดเวลารอเปิดการเชื่อมต่อกับ proxy และ read timeout จำกัดเวลารอระหว่างไบต์หลังส่งคำขอแล้ว ดังนั้น read timeout หมายความว่าเชื่อมต่อสำเร็จแต่คำตอบช้า

ถ้าไม่ตั้งเวลาไว้ บางไคลเอนต์จะรอตลอดไป ใน requests ของ Python ไม่มีค่า timeout เริ่มต้น เลยอาจทำให้คำขอติดค้างจนกระทั่งกระบวนการหยุดตอบสนอง

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

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

  • Python requests: ReadTimeout: HTTPSConnectionPool(...): Read timed out. (read timeout=10)
  • httpx: httpx.ReadTimeout
  • Node.js: ETIMEDOUT, ESOCKETTIMEDOUT, หรือ AbortError จากตัวจับเวลาของคุณ
  • Playwright: TimeoutError: page.goto: Timeout 30000ms exceeded

อะไรเป็นสาเหตุของ a read timeout?

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

  • หน้าเป้าหมายที่ช้า เช่น ผลการค้นหาหรือหน้าที่มีไดนามิกหนัก
  • การเชื่อมต่อออกที่ช้า: ความเร็วอัพโหลดบ้าน, Wi-Fi หรือเซลล์มือถือที่แออัด
  • ดาวน์โหลดขนาดใหญ่ ที่อ่านเต็มหน่วยความจำในทีเดียวแทนการสตรีม
  • ตั้งเวลาหมดเวลาสั้นเกินไป สำหรับประเภทหน้า
  • หน้าเบราว์เซอร์ ที่รอ network idle บนเว็บไซต์ที่โหลดทรัคเกอร์ตลอดเวลา

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

  1. วัดเวลาคำขอโดยไม่มี proxy เพื่อเป็นข้อมูลพื้นฐาน
  2. บันทึกเวลาได้ไบต์แรกและเวลาทั้งหมดแยกกัน
  3. ตรวจสอบขนาดตอบสนองสำหรับ URL ที่ช้า
  4. ในเบราว์เซอร์ ตรวจสอบเงื่อนไข waitUntil ที่คุณใช้
ทดสอบ URL ที่ล้มเหลวด้วย curl (พอร์ต HTTP, โหมดละเอียด)
# 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_URL

ฉันจะแก้ไข a read timeout อย่างไร?

  • ตั้งเวลาทั้งสองตัว: connect ประมาณ 10 วินาที, read 30 ถึง 60 วินาทีสำหรับ HTML, มากกว่านั้นสำหรับไฟล์ใหญ่
  • สตรีมข้อมูลใหญ่ และเขียนเป็นชิ้นลงดิสก์
  • ใช้ domcontentloaded แทน network idle ใน Playwright เมื่อคุณต้องการแค่ HTML
  • บล็อกทรัพยากรหนัก ที่ไม่จำเป็นในเบราว์เซอร์ เช่น วิดีโอ
  • ลองใหม่บน exit ใหม่ครั้งหนึ่ง แล้วโยก URL ไปคิวช้า
Python httpx: กำหนดเวลาเชื่อมต่อ, อ่าน, เขียน และพูลอย่างชัดเจน
import httpx

proxy = "http://USERNAME:[email protected]:7777"
timeout = httpx.Timeout(connect=10.0, read=30.0, write=10.0, pool=10.0)

with httpx.Client(proxy=proxy, timeout=timeout) as client:
    try:
        r = client.get("https://api.ipify.org")
        print(r.status_code, r.text)
    except httpx.TimeoutException as exc:
        print("timed out:", type(exc).__name__)  # ConnectTimeout, ReadTimeout...

ฉันควรลองใหม่หลังจาก a read timeout ไหม?

ลองใหม่ read timeout หนึ่งหรือสองครั้งบน exit ใหม่ หาก URL เดิมหมดเวลาบ่อย ให้ตั้งเวลาหมดเวลานานขึ้นโดยแยกเข้าคิวช้าแทนการเพิ่มเวลาหมดเวลาทั้งหมด ระวังผลกระทบข้างเคียงจากคำขอซ้ำ ให้ retry เฉพาะคำขอที่ปลอดภัยที่จะส่งซ้ำ เช่น GET

Read timed out (ReadTimeout) มีผลอย่างไรกับ CrawlRelay?

การเชื่อมต่อ CrawlRelay ใหม่โดยไม่มี session ID จะใช้ residential exit ที่แตกต่างกัน ดังนั้นการลองใหม่จะทดสอบการเชื่อมต่อบ้านที่แตกต่างกันด้วย เก็บ session ที่ติดอยู่ (sticky sessions) ให้สั้นสำหรับเป้าหมายที่ช้า: ถ้า exit ช้า คำขอทุกคำใน session จะช้าไปด้วย

เกตเวย์: gw.crawlrelay.com, พอร์ต 7777 (HTTP, HTTPS ผ่าน CONNECT) และพอร์ต 7778 (SOCKS5). รูปแบบชื่อผู้ใช้: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. ที่เกี่ยวข้อง: 504 Gateway Timeout · Connection reset · Concurrency guide.

Read timed out (ReadTimeout): คำถามที่นักพัฒนาถาม

ควรตั้งเวลาหมดเวลาเท่าไรสำหรับสแครปโดยใช้ proxy?

เริ่มต้นที่ประมาณ 10 วินาทีสำหรับการเชื่อมต่อและ 30 วินาทีสำหรับการอ่านข้อมูลบนหน้า HTML แล้วปรับตามการวัดของคุณ JSON API มักเร็วกว่า หน้าไฟล์ใหญ่และหน้าการค้นหาช้าต้องเพิ่มเวลา ตั้งเวลาหมดเวลาชัดเจน: Python requests ไม่มีค่า timeout เริ่มต้น

เวลาหมดเวลาส่งผลต่อปริมาณทราฟฟิกไหม?

เฉพาะข้อมูลไบต์ที่ส่งก่อนเวลาหมดเวลาเท่านั้น คำขอที่หมดเวลาระหว่างรอไบต์แรกแทบไม่ได้ย้ายข้อมูลเลย โหลดไฟล์ใหญ่ที่หมดเวลาไปกลางทางย่อมย้ายข้อมูลบางส่วนได้ สตรีมไฟล์ใหญ่และต่อจากตำแหน่งที่ถูกหยุดได้ถ้าเป็นไปได้

ทำไมเวลาหมดเวลามักเกิดเป็นช่วง?

บ่อยครั้งเนื่องจากเป้าหมายทำงานช้าลงเมื่อมีโหลด บางครั้งเป็นเพราะโหลดของคุณเอง การเกิดขึ้นพร้อมกันหลายจุดออก (exits) ชี้ไปที่เป้าหมาย; เวลาไทม์เอาต์เดี่ยว ๆ ชี้ไปที่จุดออกช้าเพียงจุดเดียว ลดความพร้อมทำงานพร้อมกันบนโฮสต์เมื่อตอนที่เกิดโหลดขึ้นพร้อมกัน

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

รหัสสถานะ HTTP

ข้อผิดพลาดของเบราว์เซอร์และไคลเอนต์

ข้อผิดพลาดการเชื่อมต่อและ TLS

พร็อกซีเรซิเดนเชียลที่มีเอกสารอธิบายกรณีล้มเหลว

พร็อกซีเรซิเดนเชียล CrawlRelay จาก US$0.50/GB, ปริมาณข้อมูลที่ไม่หมดอายุ

จาก US$0.50/GB · ไม่ต้อง KYC

เริ่มต้นเลย