วิธีแก้ปัญหา 407 Proxy Authentication Required
อัปเดตเมื่อ:
ข้อผิดพลาด 407 ถือเป็นสัญญาณที่ดีกว่าที่คิด เพราะอุปกรณ์ของคุณเชื่อมต่อไปถึงพร็อกซีแล้วและเส้นทางเครือข่ายเปิดอยู่ ตัวพร็อกซีเพียงแค่แจ้งว่าไม่ได้รับชื่อผู้ใช้และรหัสผ่านที่ถูกต้อง ด้วยเหตุนี้ ปัญหา 407 เกือบทั้งหมดจึงแก้ได้ที่ข้อมูลเข้าสู่ระบบ ไม่ใช่ที่เราเตอร์หรือไฟร์วอลล์ของคุณ
สาเหตุของข้อผิดพลาด 407 เรียงตามโอกาสที่พบบ่อยที่สุด
- ชื่อผู้ใช้หรือรหัสผ่านผิด หรือไม่ได้ใส่ พิมพ์ผิดแม้แต่ตัวเดียว หรือเผลอคัดลอกเว้นวรรคท้ายข้อความติดมาด้วย นี่คือสาเหตุของรายงานปัญหา 407 ส่วนใหญ่
- วางข้อมูลผิดช่อง นำข้อความ
ip:port:user:passทั้งบรรทัดไปวางในช่อง Host หรือวางชื่อผู้ใช้ลงในช่องรหัสผ่าน โปรแกรมบางตัวจะแยกข้อมูลทั้งสี่ช่องให้โดยอัตโนมัติ แต่บางตัวไม่แยก - แอปพลิเคชันไม่เคยส่งข้อมูลเข้าสู่ระบบ การตั้งค่าพร็อกซีของระบบปฏิบัติการจะบันทึกเฉพาะที่อยู่และพอร์ตเท่านั้น แอปที่ไม่สามารถเปิดหน้าต่างถามรหัสผ่านจะเชื่อมต่อไปโดยไม่มี auth header และได้รับการตอบกลับเป็น 407
- มีอักขระพิเศษอยู่ใน URL ของพร็อกซี ในรูปแบบ
http://user:pass@host:portอักขระอย่างเช่น@,:หรือ#ในรหัสผ่านจะต้องแปลงเป็น percent-encoded (@กลายเป็น%40) ไม่เช่นนั้นข้อความจะถูกแยกผิดตำแหน่ง
ลักษณะจริงของข้อผิดพลาด 407
เราได้จำลองข้อผิดพลาดนี้บนพร็อกซีทดสอบ โดยแสดงผ่านที่อยู่สำหรับเอกสาร 203.0.113.10:8080 และจงใจใส่ข้อมูลที่ผิดเป็น user123:pass456 เมื่อทดสอบกับเว็บ HTTPS คำสั่ง curl -x http://user123:[email protected]:8080 https://example.com จะแสดงข้อความ curl: (56) CONNECT tunnel failed, response 407 แต่หากทดสอบกับเว็บ HTTP ทั่วไปพร้อมระบุ -w %{http_code} curl จะแสดงผลเพียง 407
เพิ่มออปชัน -v เพื่อดูว่ามีการส่งข้อมูลเข้าสู่ระบบไปหรือไม่ ข้อความติดตามจะแสดง > CONNECT example.com:443 HTTP/1.1 จากนั้นเป็น > Proxy-Authorization: Basic ... แล้วจึงตามด้วย 407 หากไม่มีบรรทัด Proxy-Authorization แสดงว่าไคลเอนต์ของคุณไม่เคยส่งข้อมูลเข้าสู่ระบบออกไปเลย
เครื่องมือตรวจสอบพร็อกซี ของ VinaProxy จะรายงานกรณีนี้ว่า auth failed (407) ส่วน Headless Chrome ซึ่งไม่มีหน้าต่างเข้าสู่ระบบจะแสดงเป็น ERR_TUNNEL_CONNECTION_FAILED ดูรายละเอียดได้ที่ หน้าข้อผิดพลาด tunnel
วิธีแก้ไขแยกตามสภาพแวดล้อมการใช้งาน
- Windows และ Chrome: Chrome จะทำงานตามการตั้งค่าพร็อกซีของ Windows (การตั้งค่า > เครือข่ายและอินเทอร์เน็ต > พร็อกซี) ซึ่งเก็บเฉพาะที่อยู่และพอร์ต เมื่อเปิดหน้าเว็บครั้งแรก Chrome จะเปิดหน้าต่างลงชื่อเข้าใช้เพื่อขอชื่อผู้ใช้และรหัสผ่านพร็อกซี หากคุณพิมพ์ผิดและหน้าต่างไม่แสดงขึ้นมาอีก ให้ปิดหน้าต่าง Chrome ทั้งหมดแล้วเปิดใหม่
- เบราว์เซอร์ Antidetect (AdsPower, GoLogin, GenLogin): ให้แยกช่อง Host, Port, Username และ Password ออกจากกัน ล้างข้อมูลในช่องรหัสผ่านออกให้หมดแล้ววางใหม่อีกครั้งแทนที่จะแก้ไขทีละตัว ดูคำแนะนำการตั้งค่าทีละช่องได้ที่ คู่มือการตั้งค่า GoLogin
- โทรศัพท์: iPhone มีสวิตช์ การตรวจสอบสิทธิ์ อยู่ที่ การตั้งค่า > Wi-Fi > (i) > กำหนดค่าพร็อกซี หากปิดทิ้งไว้จะทำให้เกิด 407 ส่วน Android มักรองรับเฉพาะโฮสต์และพอร์ตเท่านั้น แอปที่ต้องล็อกอินจึงอาจแสดงข้อผิดพลาดการเชื่อมต่อทั่วไปแทน
- curl: ส่ง
-U "user:pass"แยกต่างหากแทนการใส่รวมไว้ใน URL ซึ่งจะช่วยเลี่ยงปัญหาเรื่องอักขระพิเศษได้ - Python requests: กำหนดค่า
http://user:pass@host:portให้กับทั้งคีย์httpและhttpsในดิกชันนารีproxiesและเข้ารหัสรหัสผ่านที่มีอักขระพิเศษด้วยurllib.parse.quote
ข้อมูลเข้าสู่ระบบถูกต้องแต่ยังติด 407
ขั้นตอนถัดไปคือการตรวจสอบโปรโตคอล VinaProxy จำหน่ายพร็อกซี HTTP(S) ที่ล็อกอินด้วย user:pass และมี SOCKS5 ด้วยเช่นกัน ดังนั้นให้เลือกโปรโตคอลให้ตรงกับที่ระบุในคำสั่งซื้อบนแดชบอร์ด หากตัวตรวจสอบแจ้งว่า not socks5 แสดงว่าพอร์ตนั้นใช้งาน HTTP และไม่ควรตั้งค่าเป็น SOCKS5
ขั้นตอนทีละขั้น
- 1
คัดลอกบรรทัดพร็อกซีจากแดชบอร์ด
เปิดคำสั่งซื้อในแดชบอร์ด VinaProxy ของคุณ แล้วคัดลอกข้อความทั้งบรรทัดแทนการพิมพ์เอง
- 2
ตรวจสอบผ่านเครื่องมือตรวจพร็อกซี
วางข้อความลงใน เครื่องมือตรวจสอบพร็อกซี หากผลลัพธ์ขึ้น
auth failed (407)แสดงว่าเป็นปัญหาเรื่องข้อมูลเข้าสู่ระบบ ไม่ใช่ปัญหาเครือข่าย - 3
กรอกชื่อผู้ใช้และรหัสผ่านใหม่อีกครั้งให้ถูกต้อง
ล้างข้อมูลทั้งสองช่องในซอฟต์แวร์ของคุณให้ว่าง แล้ววางใหม่อีกครั้งโดยไม่ให้มีเว้นวรรคด้านหน้าหรือด้านหลัง
- 4
เลือกโปรโตคอลให้ตรงกับคำสั่งซื้อ
ตั้งค่าประเภทพร็อกซีเป็น HTTP หรือ SOCKS5 ให้ตรงกับที่ระบุไว้ในคำสั่งซื้อทุกประการ แล้วกดบันทึก
- 5
ตรวจสอบด้วย curl -v หากยังพบปัญหา
รันคำสั่ง
curl -vพร้อมค่าจริงของคุณ แล้วมองหาบรรทัดProxy-Authorizationก่อนที่จะเกิด 407
คำถามที่พบบ่อย
ข้อผิดพลาด 407 เกิดจากผู้ให้บริการอินเทอร์เน็ต (ISP) บล็อกพร็อกซีหรือไม่?
ไม่ใช่ ข้อผิดพลาด 407 ส่งมาจากตัวพร็อกซีเอง แสดงว่าการเชื่อมต่อไปถึงปลายทางแล้ว หากเส้นทางถูกบล็อกจะแสดงเป็นหมดเวลาการเชื่อมต่อ (timeout) หรือปฏิเสธการเชื่อมต่อแทน ดูเพิ่มเติมที่ พร็อกซีหมดเวลาเชื่อมต่อ
ทำไม Chrome ถึงถามข้อมูลล็อกอินพร็อกซีซ้ำๆ?
การใส่ข้อมูลผิดในแต่ละครั้งจะได้รับ 407 กลับมาอีก และทำให้ Chrome ถามซ้ำ ให้ตรวจสอบปุ่ม Caps Lock และตรวจสอบว่าระบบป้อนข้อความภาษาเวียดนามหรือภาษาอื่นๆ ไม่ได้ใส่เครื่องหมายวรรณยุกต์ลงไปในรหัสผ่าน
จะใส่รหัสผ่านที่มีเครื่องหมาย @ ลงใน URL ของพร็อกซีได้อย่างไร?
แปลงเป็นรหัส (encode): @ เป็น %40, : เป็น %3A, # เป็น %23 หากใช้ curl ออปชัน -U จะช่วยเลี่ยงการแปลงรหัสได้ทั้งหมด
Selenium หรือ Puppeteer แสดงข้อผิดพลาด tunnel แทนที่จะเป็น 407 เป็นปัญหาเดียวกันหรือไม่?
ส่วนใหญ่คือปัญหาเดียวกัน Headless Chrome ไม่สามารถแสดงหน้าต่างล็อกอินได้ ข้อผิดพลาด 407 จึงปรากฏเป็น ERR_TUNNEL_CONNECTION_FAILED ให้ระบุข้อมูลเข้าสู่ระบบผ่านกลไกการยืนยันตัวตนของไลบรารี ตามตัวอย่างใน คู่มือ Selenium
ไพรเวตพร็อกซีพร้อมข้อมูลเข้าสู่ระบบที่ชัดเจน
ทุกคำสั่งซื้อของ VinaProxy มาพร้อมบรรทัด ip:port:user:pass ที่พร้อมใช้งาน คัดลอกครั้งเดียวแล้วนำไปวางได้ทันทีทุกที่
ดูราคาพร็อกซี