วิธีแก้ไข ERR_TUNNEL_CONNECTION_FAILED เมื่อใช้งานผ่านพร็อกซี

อัปเดตเมื่อ:

ในการโหลดหน้าเว็บ https:// ผ่านพร็อกซี เบราว์เซอร์จะส่งคำขอ CONNECT และรอให้พร็อกซีเปิดอุโมงค์เชื่อมต่อไปยังเว็บไซต์ ข้อผิดพลาด ERR_TUNNEL_CONNECTION_FAILED จะปรากฏขึ้นเมื่อพร็อกซีตอบกลับคำขอนั้นด้วยข้อผิดพลาดแทนที่จะยอมรับ แต่ประเด็นคือ Chrome ไม่ได้บอกว่าเป็นข้อผิดพลาดใด ดังนั้นขั้นตอนแรกคือการหาโค้ดข้อผิดพลาดที่แท้จริง

พร็อกซีที่ใช้งานร่วมกับ Puppeteer และ Playwright ได้อย่างสมบูรณ์แบบ

สองกรณีที่เราจำลองข้อผิดพลาดได้

ทั้งสองกรณีทดสอบกับพร็อกซีจำลอง โดยระบุที่อยู่ในคู่มือนี้เป็น 203.0.113.10:8080 และ user123:pass456 สำหรับหน้าต่าง Chrome ปกติ กรณี 407 จะไม่กลายเป็นข้อผิดพลาดของอุโมงค์ แต่ Chrome จะเปิดกล่องข้อความให้ลงชื่อเข้าใช้เพื่อกรอกชื่อผู้ใช้และรหัสผ่านของพร็อกซีแทน ดังนั้นข้อผิดพลาดของอุโมงค์ที่เกิดจาก 407 จึงมักพบในเครื่องมือ automation และในแอปที่ไม่สามารถแสดงหน้าต่างถามรหัสผ่านได้

พร็อกซีตอบกลับ CONNECT ด้วยChrome แสดงcurl แสดง
407 โดยไม่มีช่องทางให้กรอกรหัสผ่าน (headless Chrome)ERR_TUNNEL_CONNECTION_FAILEDcurl: (56) CONNECT tunnel failed, response 407
502 เนื่องจากพร็อกซีไม่สามารถเชื่อมต่อไปยังเว็บไซต์ได้ERR_TUNNEL_CONNECTION_FAILEDcurl: (56) CONNECT tunnel failed, response 502

สาเหตุที่พบบ่อยที่สุดตามลำดับ

  • สคริปต์ automation ไม่ได้ส่งข้อมูลยืนยันตัวตน แฟล็ก --proxy-server ของ Chrome รองรับเฉพาะ host และ port เท่านั้น ไม่รองรับ user:pass ทำให้ Puppeteer หรือ Selenium แบบ headless ได้รับรหัส 407 และแจ้งข้อผิดพลาดของอุโมงค์เชื่อมต่อ
  • แอปบนมือถือทำงานหลังพร็อกซี Wi-Fi ที่ต้องใช้รหัสผ่าน ตัวแอปไม่มีหน้าต่างเข้าสู่ระบบ ทำให้การเชื่อมต่อ HTTPS ใช้งานไม่ได้ แม้ว่าเบราว์เซอร์จะยังใช้งานได้ตามปกติ
  • พร็อกซีไม่สามารถเชื่อมต่อไปยังปลายทางได้ พร็อกซีจะตอบกลับ CONNECT ด้วย 502 สามารถดูรายละเอียดเชิงลึกได้ที่หน้า 502 Bad Gateway
  • ใช้งานไม่ได้เฉพาะบางเว็บไซต์ เว็บไซต์ปลายทางบล็อกการเชื่อมต่อหรือระบบล่ม ขณะที่เว็บไซต์อื่นยังใช้งานผ่านพร็อกซีเดียวกันได้ตามปกติ

ค้นหาโค้ดที่แท้จริงด้วยคำสั่ง curl เพียงคำสั่งเดียว

รันคำสั่ง curl -v -x http://user123:[email protected]:8080 https://example.com โดยแทนที่ด้วยข้อมูลของคุณ สังเกตบรรทัดถัดจาก > CONNECT example.com:443 HTTP/1.1 หากได้ 407 ให้ทำตามคู่มือ 407 แต่ถ้าได้ 502 แสดงว่ามีปัญหาที่ปลายทางหรือเส้นทางเครือข่ายหลังพร็อกซี หากไม่สะดวกใช้เทอร์มินัล สามารถวางข้อมูลลงในเครื่องมือตรวจสอบพร็อกซี ซึ่งจะแสดงผล auth failed (407) หรือ HTTP 502 ในกรณีเดียวกันนี้

วิธีแก้ไขตามสภาพแวดล้อมการใช้งาน

  • Puppeteer: คงค่า --proxy-server=http://host:port ไว้ตอนเปิดเบราว์เซอร์ และเรียกใช้ page.authenticate({ username, password }) ก่อนนำทางไปยังหน้าเว็บ ดูตัวอย่างฉบับเต็มได้ที่คู่มือตั้งค่าพร็อกซี Puppeteer
  • Playwright: ส่งค่า proxy: { server, username, password } ตอนเปิดเบราว์เซอร์ แล้ว Playwright จะจัดการตอบกลับรหัส 407 ให้โดยอัตโนมัติ ดูเพิ่มเติมที่ Playwright
  • Selenium: Chrome ไม่รองรับการใส่ user:pass ผ่าน command line ดูแนวทางแก้ไขที่ใช้งานได้ในคู่มือ Selenium
  • Chrome บน Windows: หากกล่องข้อความลงชื่อเข้าใช้ไม่ปรากฏขึ้น ให้ตรวจสอบว่ามีส่วนขยายพร็อกซีบล็อกอยู่หรือไม่ จากนั้นลองเปิดใหม่อีกครั้งในหน้าต่างที่ไม่มีส่วนขยาย
  • โทรศัพท์มือถือ: สำหรับแอปที่ต้องใช้พร็อกซีที่มีการยืนยันตัวตน ให้ใช้แอปพร็อกซีที่รองรับ user:pass ตามที่อธิบายไว้ในคู่มือการตั้งค่า Android

ขั้นตอนทีละขั้น

  1. 1

    ตรวจสอบการตอบกลับของ CONNECT

    รัน curl -v -x พร้อมข้อมูลพร็อกซีของคุณ หรือวางลงในเครื่องมือตรวจสอบ เพื่อดูว่าพร็อกซีส่งคืนรหัส 407 หรือ 502

  2. 2

    สำหรับ 407: ระบุข้อมูลยืนยันตัวตนให้ถูกต้อง

    ในสคริปต์ ให้ใช้ฟังก์ชันยืนยันตัวตนของไลบรารีแทนการใส่ user:pass ลงใน --proxy-server

  3. 3

    สำหรับ 502: ลองเข้าเว็บไซต์อื่น

    ลองโหลดเว็บไซต์ขนาดใหญ่อย่าง example.com ผ่านพร็อกซีเดียวกัน หากเข้าได้ตามปกติ แสดงว่าปัญหาเกิดจากเว็บไซต์ปลายทางเดิม

  4. 4

    รันใหม่อีกครั้งและยืนยัน IP ขาออก

    เมื่ออุโมงค์เชื่อมต่อเปิดแล้ว ให้เข้าไปที่ my IP บนเบราว์เซอร์เดิมเพื่อยืนยันว่าการรับส่งข้อมูลผ่านพร็อกซีเรียบร้อยแล้ว

คำถามที่พบบ่อย

ทำไมหน้าเว็บแบบ http โหลดได้ แต่ https ถึงโหลดไม่ผ่าน?

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

อะไรคือสาเหตุของ ERR_TUNNEL_CONNECTION_FAILED บน Android?

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

สามารถใส่ user:pass ใน --proxy-server ได้หรือไม่?

ไม่ได้ Chrome จะละเว้นข้อมูลยืนยันตัวตนในแฟล็กดังกล่าว ซึ่งทำให้เกิดรหัส 407 และข้อผิดพลาดของอุโมงค์เชื่อมต่อ แนะนำให้ยืนยันตัวตนผ่าน Puppeteer, Playwright หรือใช้ส่วนขยายแทน

การเปลี่ยนไปใช้ SOCKS5 จะช่วยแก้ข้อผิดพลาดของอุโมงค์เชื่อมต่อได้หรือไม่?

ช่วยได้ก็ต่อเมื่อแพ็กเกจที่คุณสั่งซื้อเป็นแบบ SOCKS5 เท่านั้น โดย VinaProxy ให้บริการทั้ง HTTP(S) และ SOCKS5 โปรดเลือกโปรโตคอลตามที่แสดงในแดชบอร์ดคำสั่งซื้อของคุณ เนื่องจากการเลือกไม่ตรงกันจะทำให้เกิดข้อผิดพลาดอื่นแทน

พร็อกซีที่ใช้งานร่วมกับ Puppeteer และ Playwright ได้อย่างสมบูรณ์แบบ

พร็อกซีของ VinaProxy รองรับการเข้าสู่ระบบด้วย user:pass มาตรฐาน ซึ่งไลบรารี automation ยอดนิยมรองรับได้ทันทีโดยไม่ต้องตั้งค่าเพิ่มเติม

ดูราคา

บทความที่เกี่ยวข้อง

ข้อผิดพลาดของพร็อกซี
วิธีแก้ปัญหา 407 Proxy Authentication Required
ข้อผิดพลาด 407 Proxy Authentication Required หมายถึงพร็อกซีตอบรับแล้วแต่ปฏิเสธข้อมูลเข้าสู่ระบบของคุณ ดูตัวอย่างจริงจาก curl สาเหตุที่พบบ่อย และวิธีแก้ปัญหาแยกตามแอป
ข้อผิดพลาดของพร็อกซี
ข้อผิดพลาดพร็อกซี 502 Bad Gateway: วิธีตรวจสอบว่าต้นทางมาจากไหน
ข้อผิดพลาด 502 Bad Gateway ผ่านพร็อกซีหมายถึงเซิร์ฟเวอร์ตัวกลางไม่ได้รับคำตอบที่ถูกต้อง ดูวิธีตรวจสอบว่าปัญหาเกิดจากพร็อกซีหรือเว็บไซต์ พร้อมตัวอย่างเอาต์พุตจริงจาก curl
วิธีตั้งค่าพร็อกซี
วิธีตั้งค่าพร็อกซีพร้อมยืนยันตัวตนใน Puppeteer (Node.js)
วิธีกำหนดค่า HTTP(S) proxy พร้อมการยืนยันตัวตนใน Node.js Puppeteer ด้วยแฟล็ก --proxy-server และเมธอด await page.authenticate()
วิธีตั้งค่าพร็อกซี
วิธีตั้งค่าพร็อกซีใน Playwright (การยืนยันตัวตนระดับเบราว์เซอร์และราย Context)
กำหนดค่า HTTP(S) proxy พร้อมการยืนยันตัวตนใน Playwright สำหรับ Node.js และ Python ใช้งานหลาย IP แบบคงที่แยกจากกันบน BrowserContext
วิธีตั้งค่าพร็อกซี
วิธีตั้งค่าพร็อกซีที่มีการยืนยันตัวตนใน Selenium WebDriver
วิธีกำหนดค่าพร็อกซี HTTP(S) ที่มีชื่อผู้ใช้และรหัสผ่านใน Selenium WebDriver โดยใช้ selenium-wire หรือส่วนขยาย onAuthRequired ของ Chrome
เครื่องมือฟรี
เช็กพร็อกซี: ตรวจสอบพร็อกซีของคุณออนไลน์
เครื่องมือเช็กพร็อกซีฟรี: วางพร็อกซีได้สูงสุด 100 ตัวในรูปแบบ ip:port:user:pass แล้วตรวจสอบสถานะ IP ขาออก และความหน่วงออนไลน์ พร้อมคำอธิบายข้อผิดพลาดแต่ละแบบ
วิธีตั้งค่าพร็อกซี
คู่มือการกำหนดค่า Proxy ใน Google Chrome
กำหนดค่า VinaProxy HTTP(S) บน Google Chrome โดยไม่ต้องเปลี่ยน IP ของระบบปฏิบัติการทั้งเครื่อง โดยใช้ส่วนขยาย Chrome, แฟล็ก --proxy-server หรือโปรไฟล์แยกต่างหาก
วิธีตั้งค่าพร็อกซี
วิธีกำหนดค่าพร็อกซีบน Windows 10 & Windows 11
กำหนดค่าพร็อกซี HTTP(S) ของ VinaProxy บน Windows 10 และ Windows 11 โดยใช้การตั้งค่าระบบ WinINET, ตัวแปรสภาพแวดล้อม PowerShell หรือ netsh winhttp