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

ข้อมูลอ้างอิงข้อผิดพลาดพร็อกซี · รหัสสถานะ HTTP

502 Bad Gateway ผ่านพร็อกซี: ความหมายและวิธีแก้ไข

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

อัปเดตล่าสุด: · 3 เวลาที่ใช้ในการอ่าน (นาที)

คำตอบด่วน

502 Bad Gateway หมายความว่าอย่างไรกับพร็อกซี?

502 Bad Gateway หมายถึงเกตเวย์หรือพร็อกซีได้รับคำตอบไม่ถูกต้อง หรือไม่มีเลย จากเซิร์ฟเวอร์ถัดไปในเส้นทาง ผ่านพร็อกซี residential ของ CrawlRelay โดยทั่วไป 502 หมายถึงการเชื่อมต่อ exit หรือตัวเป้าหมายล้มเหลวก่อนเสร็จคำขอ ลองใหม่หนึ่งครั้งบนการเชื่อมต่อใหม่ หาก 502 ยังเกิดขึ้นที่ไซต์เดียว แสดงว่าเป็นปัญหาไซต์ ถ้าเกิดกับทุกไซต์ ให้ตรวจสอบการตั้งค่าของคุณ

502 Bad Gateway แบบสั้นๆ

ข้อผิดพลาด502 Bad Gateway
ประเภทรหัสสถานะ HTTP (5xx, เซิร์ฟเวอร์ผิดพลาด)
ส่งโดยเกตเวย์พร็อกซีหรือพร็อกซีย้อนกลับหน้าปลายทาง
กำหนดไว้ในRFC 9110, section 15.6.3
ลองใหม่อีกครั้งไหม?ใช่ เมื่อเชื่อมหรือเซสชันใหม่
ตรวจสอบก่อนลองใหม่หนึ่งครั้งบน IP ใหม่ หากยังเกิดขึ้น ทดสอบเป้าหมายโดยไม่ใช้พร็อกซี

502 Bad Gateway หมายความว่าอย่างไร?

RFC 9110 บรรยาย 502 ว่าเป็นวิธีของเกตเวย์ในการบอกว่าเซิร์ฟเวอร์ตอบไม่ดี ในเส้นสแครปมีอย่างน้อยสองเกตเวย์: พร็อกซี และมักเป็น CDN หรือ load balancer หน้าเว็บไซต์ อย่างใดอย่างหนึ่งอาจสร้าง 502 และเนื้อหาการตอบกลับมักบอกว่าอันไหน

เครือข่าย residential เพิ่มลิงก์อีกหนึ่ง ชั้น exit เป็นการเชื่อมต่อจากครัวเรือนจริง และอุปกรณ์อาจออกจากเครือข่ายกลางคำขอ ทำให้เกตเวย์ไม่มีคำตอบที่ถูกต้องส่งกลับ

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

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

  • Python requests: status_code == 502 หรือ ProxyError('Unable to connect to proxy', OSError('Tunnel connection failed: 502 Bad Gateway')) สำหรับเป้าหมาย HTTPS
  • curl: curl: (56) CONNECT tunnel failed, response 502
  • เบราว์เซอร์: net::ERR_TUNNEL_CONNECTION_FAILED สำหรับ HTTPS หรือหน้าแสดงข้อผิดพลาดปกติ HTTP
  • Scrapy: ลองใหม่อัตโนมัติ เพราะ 502 อยู่ใน RETRY_HTTP_CODES

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

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

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

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

  1. ลองใหม่คำขอบนการเชื่อมต่อใหม่ 502 ครั้งเดียวที่หายไปคือ exit หลุด
  2. อ่านเนื้อหาและ header ตอบกลับ หน้า error ของ CDN จะบอกชื่อ CDN; ข้อความพร็อกซีสั้นบอกเกตเวย์
  3. ทดสอบเป้าหมายจากการเชื่อมต่อของคุณเองโดยไม่ใช้พร็อกซี
  4. ขยายเป้าหมายจากเมืองไปประเทศและเปรียบเทียบอัตราความล้มเหลว
ทดสอบ 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 502 อย่างไร?

  • ลองใหม่ด้วย session ID ใหม่ หรือไม่ใช้เลย เพื่อให้ออกจากทาง exit อื่น
  • ตั้ง timeout ที่เหมาะสม เพื่อให้ exit ที่ล้มหรือไม่ตอบล้มเหลวเร็ว ไม่ค้าง
  • บันทึก 502 ต่อโฮสต์ และหยุดโฮสต์ที่อัตรา 502 พุ่งสูง: อาจล่ม
Python: ลองใหม่ด้วย Retry-After, การหน่วงเพิ่มขึ้นแบบเอ็กซ์โพเนนเชียล และ jitter
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 502 ไหม?

ใช่ ลอง 502 ใหม่ แต่เปลี่ยน exit และจำกัดจำนวน ลอง 2-3 ครั้งพร้อมหน่วงเวลาสั้นๆ ก็พอแล้ว 502 ที่ยังเกิดกับหลาย exit หมายถึงปัญหาเป้าหมาย และการลองใหม่มากกว่านี้ไม่ช่วย ให้ติดตามอัตราต่อโฮสต์เพื่อไม่ให้ไซต์ล่มตัวเดียวเต็มคิวลองใหม่ของคุณ

502 Bad Gateway มีผลอย่างไรกับ CrawlRelay?

กับ CrawlRelay ละทิ้งหรือสร้าง session ID ใหม่เพื่อให้ออกทาง residential IP ต่างกัน เซสชันคงที่ผูกคุณกับ exit เดียว ดังนั้น 502 ในเซสชันคงที่ควรจบเซสชันนั้นในโค้ดของคุณ คำแนะนำเซสชัน อธิบายวิธีหมุนเซสชันอย่างสะอาด

เกตเวย์: 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 · 503 Service Unavailable.

502 Bad Gateway: คำถามที่นักพัฒนาถาม

502 เป็นความผิดของ proxy หรือเว็บไซต์กันแน่?

ทั้งสองอย่าง อ่านข้อมูลในส่วนของเนื้อหาตอบกลับ: หน้า error ของ CDN จะระบุชื่อ CDN ที่ชี้ไปยังเว็บไซต์ 502 ที่เกิดขึ้นกับทุกเว็บไซต์ที่คุณลอง แสดงว่าเป็นปัญหาของ proxy หรือการตั้งค่าของคุณ ในขณะที่ 502 ที่เกิดกับเว็บไซต์เดียวแสดงว่าเป็นที่เว็บไซต์นั้น ทดสอบ URL เดิมโดยไม่ใช้ proxy เพื่อความแน่ใจ

ทำไมข้อผิดพลาด 502 ถึงพบได้บ่อยกับ residential proxy?

Residential exit คือการเชื่อมต่อจากบ้านจริง ๆ ซึ่งอุปกรณ์อาจออฟไลน์ เปลี่ยนเครือข่าย หรือสัญญาณหายไป คำขอที่อยู่ระหว่างส่งเมื่อเหตุการณ์เหล่านี้เกิดขึ้นจะจบด้วย 502 หรือ reset ตัว scraper ที่ดีควรถือว่าเป็นเรื่องปกติและลองใหม่ด้วย exit ใหม่ โดยตั้งขีดจำกัดเล็กน้อย

ควรเปลี่ยนไปใช้ sticky sessions เพื่อลด 502 หรือไม่?

ไม่ใช่ Sticky session จะทำให้คุณใช้ทางออกเดียว ถ้าทางออกนั้นล้มเหลว คำขอทั้งหมดใน session นั้นก็จะล้มเหลวตาม ใช้การเชื่อมต่อแบบหมุนเวียนสำหรับหน้าเว็บอิสระ และ sticky session สำหรับขั้นตอนหลายชั้นเท่านั้น จบ sticky session หลังเกิด 502 แล้วเริ่มใหม่

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

รหัสสถานะ HTTP

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

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

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

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

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

เริ่มต้นเลย