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

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

SSL CERTIFICATE_VERIFY_FAILED ผ่าน proxy

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

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

คำตอบด่วน

SSL: CERTIFICATE_VERIFY_FAILED หมายความว่าอย่างไรกับพร็อกซี?

CERTIFICATE_VERIFY_FAILED หมายถึงไคลเอนต์ของคุณไม่สามารถตรวจสอบใบรับรอง TLS ของเว็บไซต์ได้ ผ่าน CONNECT proxy เช่นเกตเวย์ของ CrawlRelay, TLS ทำงานแบบ end to end ดังนั้น proxy จึงไม่ใช่สาเหตุ ตรวจสอบฝั่งคุณ: CA bundle ที่ล้าสมัย, โปรแกรมแอนตี้ไวรัสหรือตัวกรองไฟร์วอลล์ที่ตรวจสอบ HTTPS, หรือนาฬิการะบบผิดพลาด อย่าซ่อมด้วย verify=False ในสภาพแวดล้อมจริง

SSL: CERTIFICATE_VERIFY_FAILED แบบสั้นๆ

ข้อผิดพลาดSSL: CERTIFICATE_VERIFY_FAILED
ประเภทข้อผิดพลาดใบรับรอง TLS ในไคลเอนต์
ส่งโดยไลบรารี TLS ของคุณ เมื่อไม่สามารถตรวจสอบใบรับรองของเว็บไซต์ได้
กำหนดไว้ในX.509 path validation: RFC 5280; TLS 1.3: RFC 8446
ลองใหม่อีกครั้งไหม?ไม่ใช่ ให้แก้ไข trust store หรือเครือข่าย
ตรวจสอบก่อนทดสอบ URL เดียวกันโดยไม่มี proxy บนเครื่องเดียวกัน

SSL: CERTIFICATE_VERIFY_FAILED หมายความว่าอย่างไร?

ในระหว่างการจับมือ TLS เว็บไซต์จะส่งใบรับรองแบบมีโซ่ ไคลเอนต์ของคุณตรวจสอบกับรายชื่อหน่วยงานที่เชื่อถือได้ (trust store) และตรวจสอบชื่อกับวันหมดอายุ หากตรวจสอบไม่ผ่านข้อใดข้อหนึ่งจะหยุด

สำหรับ CONNECT tunnel proxy จะส่งผ่านการจับมืออย่างไม่ถูกแตะต้อง ใบรับรองที่คุณเห็นจึงเป็นของเว็บไซต์โดยตรง สิ่งที่แทรกใบรับรองของตัวเอง เช่น ซอฟต์แวร์ตรวจสอบ หรือ trust store ที่ล้าสมัยบนเครื่องของคุณ คือสาเหตุทั่วไป

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

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

  • Python: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate
  • Node.js: UNABLE_TO_GET_ISSUER_CERT_LOCALLY หรือ SELF_SIGNED_CERT_IN_CHAIN
  • curl: curl: (60) SSL certificate problem: unable to get local issuer certificate
  • เบราว์เซอร์: NET::ERR_CERT_AUTHORITY_INVALID

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

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

  • CA bundle ที่ล้าสมัย เช่น แพ็กเกจ certifi เก่าใน Python
  • การตรวจสอบ HTTPS โดยโปรแกรมแอนตี้ไวรัส, ไฟร์วอลล์องค์กร หรือ debugging proxy ที่แสดงใบรับรองของตัวเอง
  • นาฬิการะบบผิดพลาด ที่ทำให้ใบรับรองที่ถูกต้องดูเหมือนหมดอายุหรือยังไม่ถึงวันใช้ได้
  • เว็บไซต์ที่มีโซ่ใบรับรองขาด เช่น ขาดใบรับรองกลาง
  • อิมเมจคอนเทนเนอร์ ที่ไม่มีแพ็กเกจใบรับรอง CA ของระบบ

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

  1. รันคำขอเดียวกันโดยไม่ใช้ proxy ถ้ายังล้มเหลว แปลว่า proxy ไม่ได้เกี่ยว
  2. แสดงผู้อนุมัติใบรับรองด้วย openssl s_client หรือ curl -v: ถ้าชื่อผู้อนุมัติสัมพันธ์กับแอนตี้ไวรัสหรือไฟร์วอลล์ แปลว่ามีการแทรกแซง
  3. ตรวจสอบวันเวลาระบบ
  4. อัปเดต CA bundle แล้วทดสอบใหม่
ทดสอบ 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

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

  • อัปเดต certifi (pip install -U certifi) หรือแพ็กเกจ CA ของระบบ
  • เพิ่มใบรับรองตรวจสอบของบริษัท ลงใน trust store หากเครือข่ายของคุณตรวจสอบ HTTPS หรือรัน scraper นอกเครือข่ายนั้น
  • แก้ไขนาฬิกา ด้วยการซิงค์เวลาเครือข่าย
  • ติดตั้งใบรับรอง CA ในอิมเมจคอนเทนเนอร์แบบบาง เช่น แพ็กเกจ ca-certificates
  • อย่าปิดการตรวจสอบ ในโค้ดที่ส่งข้อมูลเข้าสู่ระบบหรือเก็บข้อมูลที่สำคัญ

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

อย่าลองใหม่: trust store เดิมจะล้มเหลวเหมือนเดิม แก้ไข trust store, นาฬิกา หรือเส้นทางเครือข่ายก่อนแล้วจึงรันใหม่

SSL: CERTIFICATE_VERIFY_FAILED มีผลอย่างไรกับ CrawlRelay?

พอร์ต HTTP ของ CrawlRelay ส่งผ่าน HTTPS ด้วย CONNECT ดังนั้นใบรับรองที่ไคลเอนต์ตรวจจึงเป็นของเว็บไซต์ หากข้อผิดพลาดปรากฏเฉพาะผ่านเกตเวย์นี้และไม่เกิดโดยตรง ติดต่อฝ่ายสนับสนุนพร้อมชื่อโฮสต์เป้าหมายและข้อความผิดพลาดเต็มเพื่อให้เราตรวจสอบฝั่งออกออก

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

SSL: CERTIFICATE_VERIFY_FAILED: คำถามที่นักพัฒนาถาม

proxy ทำให้เกิดข้อผิดพลาด SSL certificate ได้ไหม?

proxy ที่แทรกใบรับรองได้ เพราะมันแสดงใบรับรองของตัวเอง แต่ CONNECT tunnel proxy ไม่ได้ เพราะแค่ส่งข้อมูลที่เข้ารหัสและไม่เห็นเนื้อหาการจับมือ TLS รันคำขอเดียวกันโดยไม่ใช้ proxy หากยังผิดพลาดแปลว่าปัญหาอยู่ที่เครื่องหรือเครือข่ายของคุณ

ใช้ verify=False ปลอดภัยไหมสำหรับการสแครป?

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

ทำไมถึงล้มเหลวบน Docker แต่ทำงานบนแล็ปท็อปของฉัน?

อิมเมจคอนเทนเนอร์ขนาดเล็กมักไม่มาพร้อมใบรับรอง CA ทำให้ไม่สามารถตรวจสอบใบรับรองได้ ติดตั้งแพ็กเกจ CA ของระบบในอิมเมจ หรือใช้ certifi bundle ใน Python ตรวจสอบด้วยว่านาฬิกาคอนเทนเนอร์ถูกต้อง

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

รหัสสถานะ HTTP

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

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

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

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

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

เริ่มต้นเลย