ข้อผิดพลาดพร็อกซี 407, 502, 504 และ tunnel failed: การวินิจฉัยทีละขั้นตอนสำหรับผู้เริ่มต้น
บทความ
- บทนำ: สิ่งที่คุณจะได้รับจากคู่มือนี้
- การเตรียมการล่วงหน้า: เครื่องมือและการเข้าถึง
- แนวคิดพื้นฐาน: โครงสร้างของเลเยอร์พร็อกซีและที่มาของรหัส
- ขั้นตอนที่ 1: ระบุว่าใครกันแน่ที่ส่งข้อผิดพลาด
- ขั้นตอนที่ 2: แก้ไขข้อผิดพลาด 407 proxy authentication required
- ขั้นตอนที่ 3: จัดการกับข้อผิดพลาด 502 bad gateway จากพร็อกซี
- ขั้นตอนที่ 4: ทำงานกับรหัส 504 gateway timeout
- ขั้นตอนที่ 5: แก้ไขข้อผิดพลาด tunnel failed
- ขั้นตอนที่ 6: ตั้งค่าการตอบสนองที่ถูกต้องของซอฟต์แวร์ต่อแต่ละรหัส
- การตรวจสอบผลลัพธ์: เช็กลิสต์และการทดสอบ
- ข้อผิดพลาดทั่วไปและวิธีแก้
- ความสามารถเพิ่มเติมสำหรับผู้ใช้ขั้นสูง
- Faq: คำถามที่พบบ่อยเกี่ยวกับการวินิจฉัย
- บทสรุป
บทนำ: สิ่งที่คุณจะได้รับจากคู่มือนี้
ถ้าคุณทำงานกับพร็อกซีมือถือ ไม่ช้าก็เร็วคุณจะเห็นข้อความในบันทึกของตัวเก็บข้อมูล ในคอนโซลของเบราว์เซอร์ต้านการตรวจจับ หรือในหน้าต่างบัญชีโฆษณาโดยตรงว่า «407 Proxy Authentication Required», «502 Bad Gateway», «504 Gateway Timeout» หรือข้อความสั้นๆ ที่น่ากลัวอย่าง «tunnel failed» ข้อผิดพลาดพร็อกซีเซิร์ฟเวอร์ในตอนนั้นดูเหมือนกล่องดำ: ไม่รู้ว่าพร็อกซีเอง ซอฟต์แวร์ของคุณ เว็บไซต์เป้าหมาย หรือแค่รหัสผ่านที่ล้าสมัยเป็นตัวการ คู่มือนี้เปลี่ยนกล่องดำให้เป็นแผนการดำเนินการที่เข้าใจได้
เราจำกัดหัวข้ออย่างตั้งใจ: วิเคราะห์เฉพาะรหัสและข้อความที่เลเยอร์พร็อกซีส่งกลับมา ส่วนการหมดเวลาระดับการเชื่อมต่อ (เมื่อไม่มีการตอบกลับเลยและไคลเอนต์ตัดการรอเอง) มีการวิเคราะห์แยกต่างหากในบล็อก และเราไม่ทำซ้ำที่นี่ ถ้าในบันทึกของคุณมีรหัสหรือวลีเกี่ยวกับทันเนลแสดงว่าคุณมาถูกที่แล้ว
สิ่งที่คุณจะได้รับในที่สุด
- เข้าใจความหมายของข้อผิดพลาดทั้งสี่และเกิดที่จุดใดในห่วงโซ่ «ซอฟต์แวร์ของคุณ — พร็อกซี — เว็บไซต์เป้าหมาย»
- เรียนรู้ที่จะระบุต้นตอของปัญหาได้ในสองถึงสามนาทีด้วยยูทิลิตี curl ที่มีอยู่ในทุกระบบ
- ได้ลำดับการดำเนินการพร้อมใช้สำหรับ 407, 502, 504 และ tunnel failed ซึ่งทำตามเป็นเช็กลิสต์ได้
- ตั้งค่าซอฟต์แวร์ของคุณให้ตอบสนองต่อแต่ละรหัสอย่างถูกต้อง: ข้อผิดพลาดบางอย่างต้องลองใหม่ บางอย่างลองใหม่ก็ไร้ประโยชน์
- สร้างบันทึกเหตุการณ์ส่วนตัวที่จะประหยัดเวลาหลายชั่วโมงเมื่อเกิดปัญหาครั้งต่อไป
คู่มือนี้เหมาะกับใคร
คู่มือนี้เขียนขึ้นสำหรับนักการตลาด นักทำ arbitrage เจ้าของทีมเล็กๆ และนักพัฒนาที่ใช้พร็อกซีมือถือแต่ไม่จำเป็นต้องเป็นวิศวกรเครือข่าย ส่วนหลักออกแบบสำหรับผู้เริ่มต้น: ทุกคำสั่งอธิบายไว้ ทุกการกระทำเขียนไว้อย่างละเอียด สำหรับผู้ที่เขียนสคริปต์เองและต้องการเจาะลึก ในตอนท้ายมีบล็อกขั้นสูงแยกต่างหาก
สิ่งที่ต้องรู้ล่วงหน้า
เพียงแค่เปิดเทอร์มินัลหรือคอมมานด์ไลน์ได้ คัดลอกข้อความลงไปและอ่านผลลัพธ์ได้ ความเข้าใจว่า IP address และพอร์ตคืออะไรจะช่วยได้ แต่เราจะเตือนสั้นๆ เช่นกัน ไม่จำเป็นต้องมีประสบการณ์เขียนโปรแกรม
ใช้เวลานานเท่าไร
การอ่านทั้งหมดและการวินิจฉัยครั้งแรกจะใช้เวลา 60 ถึง 120 นาที ถ้าตอนนี้คุณมีข้อผิดพลาดเฉพาะที่เร่งด่วน ให้ข้ามไปยังขั้นตอนที่ต้องการ: แต่ละข้อผิดพลาดใช้เวลา 15-25 นาทีรวมการตรวจสอบ
การเตรียมการล่วงหน้า: เครื่องมือและการเข้าถึง
การวินิจฉัยข้อผิดพลาดในเลเยอร์พร็อกซีไม่ต้องติดตั้งโปรแกรมหนักๆ เกือบทุกอย่างมีอยู่ในระบบปฏิบัติการของคุณแล้ว แต่ก็ควรเตรียมตัวล่วงหน้าเพื่อไม่ต้องมองหารหัสผ่านหรือนึกว่าไฟล์คอนฟิกอยู่ที่ไหนเมื่อเกิดปัญหา
เครื่องมือที่จำเป็น
- เทอร์มินัลหรือคอมมานด์ไลน์ ใน Windows 10 และ 11 เปิดเมนู «Start» พิมพ์ «cmd» หรือ «PowerShell» แล้วกด Enter ใน macOS เปิด «Applications» จากนั้น «Utilities» จากนั้น «Terminal» ใน Linux เทอร์มินัลมักเรียกด้วย Ctrl+Alt+T
- ยูทิลิตี curl มีมาในตัวตั้งแต่ Windows เวอร์ชัน 10 (บิลด์ 1803) ใน macOS และในดิสทริบิวชัน Linux ส่วนใหญ่ ตรวจสอบ: พิมพ์ในเทอร์มินัล
curl --versionแล้วกด Enter ควรมีบรรทัดที่มีหมายเลขเวอร์ชัน เช่น «curl 8.x.x» ถ้าแทนที่จะเป็นเช่นนั้นมีข้อความว่าหาคำสั่งไม่พบ ให้ติดตั้ง curl ผ่านตัวจัดการแพ็กเกจของระบบ - เบราว์เซอร์ทั่วไป ที่มีเครื่องมือนักพัฒนา ใช้เบราว์เซอร์สมัยใหม่ใดก็ได้ที่เปิดแผงด้วยปุ่ม F12 และมีแท็บ «Network»
- โปรแกรมแก้ไขข้อความ สำหรับบันทึกเหตุการณ์ Notepad ก็พอ แต่ใช้โปรแกรมที่มีการไฮไลต์จะสะดวกกว่าเพื่อเห็นโครงสร้างของบันทึก
- ซอฟต์แวร์ที่คุณใช้งาน: เบราว์เซอร์ต้านการตรวจจับ ตัวเก็บข้อมูล ตัวจัดการบัญชีโฆษณา หรือสคริปต์ของคุณเอง เราต้องการเข้าถึงการตั้งค่าพร็อกซีและบันทึกของมัน
สิทธิ์การเข้าถึงที่จำเป็น
- เข้าใช้บัญชีผู้ให้บริการพร็อกซี สำหรับผู้ใช้ mobileproxy.space นี่คือหน้าจัดการช่องสัญญาณของคุณที่แสดงโฮสต์ พอร์ต ล็อกอิน รหัสผ่าน ประเภทการยืนยันตัวตน และลิงก์เปลี่ยน IP
- ข้อมูลพร็อกซีอย่างน้อยหนึ่งตัวที่ใช้ได้: ที่อยู่ (โฮสต์), พอร์ต, ล็อกอินและรหัสผ่าน หรือ IP ที่ยืนยันแล้วสำหรับการยืนยันตัวตนตามที่อยู่
- เข้าใจว่าคุณใช้โปรโตคอลใด: HTTP(S)-พร็อกซี หรือ SOCKS5 ข้อมูลนี้ก็แสดงในบัญชีเช่นกัน
ข้อกำหนดของระบบ
ระบบปฏิบัติการใดก็ได้ที่ออกในช่วงแปดปีที่ผ่านมา การเชื่อมต่ออินเทอร์เน็ตที่เข้าถึงโฮสต์พร็อกซีได้ ไม่ต้องมีอะไรเพิ่มเติม
สำรองข้อมูล
ก่อนเปลี่ยนการตั้งค่าพร็อกซีในซอฟต์แวร์ที่ใช้งาน ให้บันทึกสถานะปัจจุบัน ใช้เวลาห้านาทีและช่วยหลีกเลี่ยงสถานการณ์ที่คุณ «รักษา» ข้อผิดพลาดแล้วสูญเสียการตั้งค่าที่ใช้งานได้ของสิบบัญชีไปพร้อมกัน
- ในเบราว์เซอร์ต้านการตรวจจับ ส่งออกรายการโปรไฟล์พร้อมการตั้งค่าพร็อกซี ปกติฟังก์ชันส่งออกอยู่ในเมนูโปรไฟล์และสร้างไฟล์ CSV หรือ JSON
- ในตัวเก็บข้อมูลหรือสคริปต์ คัดลอกไฟล์คอนฟิกไปยังโฟลเดอร์แยกต่างหากที่ชื่อมีวันที่ เช่น «config_backup_2026-03-14»
- จากบัญชี คัดลอกข้อมูลของทุกช่องสัญญาณลงในไฟล์ข้อความ เก็บไฟล์นี้ไว้ที่ที่คนอื่นเข้าไม่ถึง
- บันทึกว่า IP ของคอมพิวเตอร์หรือเซิร์ฟเวอร์ของคุณตอนนี้คืออะไร จะต้องใช้ถ้าคุณใช้การยืนยันตัวตนตาม IP address
เคล็ดลับ: สร้างไฟล์ข้อความ «บันทึกพร็อกซี» หนึ่งไฟล์และบันทึกทุกข้อผิดพลาดในรูปแบบ «วันที่, เวลา, รหัส, โฮสต์พร็อกซี, เว็บไซต์เป้าหมาย, สิ่งที่ทำ, สิ่งที่ช่วยได้» ผ่านไปหนึ่งเดือนคุณจะมีฐานความรู้ส่วนตัวที่มีประโยชน์มากกว่าบทความใดๆ
การตรวจสอบ: เทอร์มินัลเปิดได้ คำสั่ง curl แสดงเวอร์ชัน คุณเข้าใช้บัญชีและเห็นข้อมูลพร็อกซีอย่างน้อยหนึ่งตัว ไฟล์สำรองคอนฟิกอยู่ในโฟลเดอร์แยกต่างหาก ไปต่อได้
แนวคิดพื้นฐาน: โครงสร้างของเลเยอร์พร็อกซีและที่มาของรหัส
เพื่อแก้ไขข้อผิดพลาดพร็อกซีเซิร์ฟเวอร์อย่างมีเหตุผล ไม่ใช่ลองผิดลองถูก ต้องเข้าใจเส้นทางของคำขอ ซึ่งประกอบด้วยสามช่วง และข้อผิดพลาดทั้งสี่ของเราอยู่ในแต่ละช่วง
สามช่วงของเส้นทางคำขอ
- ไคลเอนต์ — พร็อกซี เบราว์เซอร์ ตัวเก็บข้อมูล หรือสคริปต์ของคุณเชื่อมต่อกับโฮสต์และพอร์ตพร็อกซี ในช่วงนี้จะตรวจสอบการยืนยันตัวตน ข้อผิดพลาด 407 และบางกรณีของ tunnel failed เกิดที่นี่
- พร็อกซี — เครือข่ายมือถือ — เว็บไซต์เป้าหมาย พร็อกซีเซิร์ฟเวอร์เมื่อได้รับคำขอของคุณ จะเปิดการเชื่อมต่อในนามของตัวเองผ่านโมเด็มที่มีซิมการ์ดของผู้ให้บริการไปยังเว็บไซต์ที่ต้องการ 502 และ 504 เกิดที่นี่
- เว็บไซต์เป้าหมาย — เส้นทางกลับ การตอบกลับของเว็บไซต์เดินกลับผ่านโหนดเดิม ถ้าเว็บไซต์ส่งรหัสของตัวเอง เช่น 403 หรือ 429 นั่นไม่ใช่ข้อผิดพลาดของเลเยอร์พร็อกซี และสำคัญคือต้องแยกแยะให้ออก
คลาสของรหัสในภาษาง่ายๆ
รหัสตอบกลับคือตัวเลขสามหลักที่เซิร์ฟเวอร์ส่งมาเป็นบรรทัดแรกของการตอบกลับ ตัวเลขตัวแรกบอกคลาส รหัส 4xx หมายถึง «ปัญหาอยู่ฝั่งคุณ แก้ไขคำขอ» รหัส 5xx หมายถึง «ปัญหาอยู่ฝั่งเซิร์ฟเวอร์หรือหลังจากนั้น» สำหรับเลเยอร์พร็อกซีทำงานดังนี้:
- 407 Proxy Authentication Required — พร็อกซีบอกว่า: «ฉันไม่รู้ว่าคุณเป็นใคร หรือข้อมูลของคุณไม่ถูกต้อง» คลาส 4xx: ต้องแก้ที่ฝั่งคุณ
- 502 Bad Gateway — พร็อกซีบอกว่า: «ฉันพยายามเชื่อมต่อไปข้างหน้าแล้ว แต่ได้รับการตัดขาดหรือข้อมูลขยะแทนการตอบกลับ» คลาส 5xx: ปัญหาอยู่หลังพร็อกซีหรือในพร็อกซีเอง
- 504 Gateway Timeout — พร็อกซีบอกว่า: «ฉันรอการตอบกลับจากโหนดถัดไปตามเวลาที่กำหนดแล้วไม่ได้รับ» นี่ก็เป็น 5xx เช่นกัน
รหัส 504 ต่างจากการหมดเวลาเครือข่ายอย่างไร
นี่คือความแตกต่างสำคัญสำหรับบทความทั้งหมด เมื่อคุณเห็นรหัส 504 หมายความว่าพร็อกซีเซิร์ฟเวอร์ยังมีชีวิต รับคำขอของคุณ รอการตอบกลับของเว็บไซต์เอง และรายงานความล้มเหลวให้คุณทราบ การเชื่อมต่อระหว่างคุณกับพร็อกซีในตอนนั้นทำงานได้อย่างสมบูรณ์ แต่เมื่อไคลเอนต์ของคุณเขียนว่า «connection timed out» หรือ «operation timed out» โดยไม่มีรหัส หมายความว่าไม่มีการตอบกลับเลย และการตัดขาดเกิดจากซอฟต์แวร์ของคุณ อย่างแรกคือหัวข้อของคู่มือนี้ อย่างที่สองเป็นหัวข้ออื่นที่วิเคราะห์ในเนื้อหาที่เกี่ยวข้องของบล็อก วิธีสังเกตง่ายๆ: ถ้ามีตัวเลขสามหลักในการตอบกลับ อ่านต่อที่นี่
ทันเนลคืออะไรและทำไมมัน «ล้มเหลว»
เมื่อคุณเปิดเว็บไซต์ผ่าน HTTPS ผ่าน HTTP-พร็อกซี เบราว์เซอร์จะส่งคำสั่งพิเศษ CONNECT พร้อมที่อยู่และพอร์ตปลายทางไปยังพร็อกซีก่อน พร็อกซีเปิดการเชื่อมต่อกับเว็บไซต์และตอบ «200 Connection established» หลังจากนั้นสตรีมที่เข้ารหัสจะผ่านพร็อกซี ซึ่งพร็อกซีจะไม่อ่าน การเชื่อมต่อนี้เรียกว่า ทันเนล ถ้าพร็อกซีตอบคำสั่ง CONNECT ด้วยอย่างอื่นที่ไม่ใช่ 200 ไคลเอนต์จะเขียน «tunnel failed» และมักระบุรหัสที่ได้รับ ดังนั้น tunnel failed ไม่ใช่ข้อผิดพลาดอิสระ แต่เป็นตัวห่อหุ้มรหัสใดรหัสหนึ่ง
สองวิธีในการยืนยันตัวตน
- ล็อกอินและรหัสผ่าน ไคลเอนต์ส่งในส่วนหัว Proxy-Authorization วิธีที่พบบ่อยที่สุดและเป็นต้นเหตุที่พบบ่อยที่สุดของ 407
- การยืนยันตาม IP คุณระบุที่อยู่ของคอมพิวเตอร์หรือเซิร์ฟเวอร์ล่วงหน้าในบัญชี และพร็อกซีจะปล่อยทุกคำขอจากที่อยู่นั้นโดยไม่ต้องใช้รหัสผ่าน สะดวก แต่พังเมื่อ IP ของคุณเปลี่ยน
ส่วนหัวบริการที่บอกผู้ส่งคำตอบได้
พร็อกซิมักเพิ่มส่วนหัว Via, Proxy-Agent หรือ X-Proxy ในการตอบกลับ เว็บไซต์เป้าหมายไม่ใส่สิ่งเหล่านี้ ถ้าในการตอบกลับที่มีรหัส 502 มีส่วนหัว Proxy-Agent คุณรู้แน่ว่าพร็อกซีเป็นผู้ตอบ ถ้าไม่มีส่วนหัวแต่มี Server ที่มีชื่อเว็บเซิร์ฟเวอร์ของเว็บไซต์ นั่นคือคำตอบของเว็บไซต์เอง เราจะใช้สัญญาณนี้อย่างจริงจัง
เคล็ดลับ: จำกฎช่วยจำ: «4 — หาที่ฝั่งคุณ, 5 — หาหลังพร็อกซี, ทันเนล — ดูว่ามีตัวเลขอะไรอยู่ข้างๆ» ช่วยแก้ปัญหาได้ครึ่งหนึ่งโดยไม่ต้องอ่านต่อ
ขั้นตอนที่ 1: ระบุว่าใครกันแน่ที่ส่งข้อผิดพลาด
เป้าหมายของขั้นตอนนี้: ระบุอย่างแม่นยำในไม่กี่นาทีว่าพร็อกซีเซิร์ฟเวอร์ เว็บไซต์เป้าหมาย หรือซอฟต์แวร์ของคุณเองเป็นผู้ตอบ และบันทึกข้อความตอบกลับทั้งหมดสำหรับการทำงานต่อไป
คำแนะนำ
- เปิดบัญชีและคัดลอกข้อมูลพร็อกซีที่มีปัญหา: โฮสต์, พอร์ต, ล็อกอิน, รหัสผ่าน ในตัวอย่างจะถือว่าโฮสต์คือ proxy.example.net, พอร์ต 8080, ล็อกอิน user1, รหัสผ่าน pass1 ใช้ค่าของคุณแทน
- เปิดเทอร์มินัล
- พิมพ์คำสั่งโดยเปลี่ยนข้อมูลและที่อยู่เป้าหมายเป็นของคุณ แล้วกด Enter:
curl -v -x http://user1:pass1@proxy.example.net:8080 https://example.com/คีย์ -v เปิดเอาต์พุตแบบละเอียด คีย์ -x กำหนดพร็อกซี - รอคำสั่งเสร็จ ปกติใช้เวลาหนึ่งถึงสามวินาที ถ้าคำสั่ง «ค้าง» เกิน 30 วินาที กด Ctrl+C: น่าจะเป็นการหมดเวลาเครือข่าย ไม่ใช่รหัส และไม่ใช่หัวข้อของเรา
- หาในเอาต์พุตบรรทัดที่ขึ้นต้นด้วยเครื่องหมาย «มากกว่า» (คือสิ่งที่ curl ส่ง) และเครื่องหมาย «น้อยกว่า» (คือสิ่งที่ได้รับการตอบกลับ) บรรทัดแรกของการตอบกลับจะเป็น «HTTP/1.1 407 Proxy Authentication Required» หรือ «HTTP/1.1 200 Connection established»
- ดูบรรทัดที่มีคำว่า CONNECT ถ้าทันทีหลังจากนั้นมีรหัสที่ไม่ใช่ 200 หมายความว่าพร็อกซีส่งข้อผิดพลาดในขั้นทันเนล ถ้า CONNECT ได้ 200 แต่รหัสข้อผิดพลาดมาทีหลัง หลังบรรทัด TLS handshake หมายความว่าเว็บไซต์เป้าหมายเป็นผู้ตอบ
- หาส่วนหัวของการตอบกลับ การมี Proxy-Agent, Via หรือส่วนหัวบริการที่คล้ายกันชี้ชัดว่าเป็นพร็อกซี ส่วนหัว Server ที่มีชื่อเว็บเซิร์ฟเวอร์และส่วนหัว Set-Cookie ชี้ว่าเป็นเว็บไซต์เป้าหมาย
- ทำคำสั่งเดิมซ้ำโดยไม่มีคีย์ -x คือเชื่อมต่อตรง:
curl -v https://example.com/ถ้าเว็บไซต์ตอบ 200 แต่ผ่านพร็อกซีได้ 5xx ปัญหาอยู่ในช่วงหลังพร็อกซี - ทำคำสั่งซ้ำผ่านพร็อกซีแต่ไปยังเว็บไซต์อื่น เช่น ไปยังแหล่งข้อมูลขนาดใหญ่ที่เสถียร ถ้าเว็บไซต์ที่สองเปิดได้ ปัญหาเกี่ยวข้องกับทิศทางเฉพาะ ไม่ใช่พร็อกซีโดยรวม
- คัดลอกเอาต์พุตทั้งหมดลงในบันทึกพร็อกซีพร้อมวันที่และเวลา จะต้องใช้ในขั้นตอนต่อไป
เส้นทางทางเลือกผ่านเบราว์เซอร์
ถ้าไม่สะดวกใช้เทอร์มินัล เปิดเบราว์เซอร์ที่ตั้งค่าพร็อกซีแล้ว กด F12 ไปที่แท็บ «Network» ติ๊ก «Preserve log» รีเฟรชหน้า ในรายการคำขอ หาบรรทัดที่มีรหัสสีแดง คลิกที่มันและดูบล็อก «Response Headers» ในแท็บ «Headers» ตรรกะเดียวกัน: หาส่วนหัวบริการของพร็อกซี ข้อเสียคือเบราว์เซอร์มักซ่อนรายละเอียดของขั้น CONNECT ดังนั้นสำหรับ tunnel failed เทอร์มินัลดีกว่า
ข้อควรระวัง: คำสั่งที่มีคีย์ -v แสดงล็อกอินและรหัสผ่านพร็อกซีในลักษณะเปิดเผย อย่าวางเอาต์พุตนี้ในแชทสาธารณะ ตั๋วสนับสนุน และภาพหน้าจอโดยไม่แทนที่รหัสผ่านด้วยเครื่องหมายดาว
เคล็ดลับ: เพิ่มคีย์ -sS พร้อมกับ -o และระบุอุปกรณ์ว่างเพื่อไม่ให้หน้าจอเต็มไปด้วยเนื้อหาการตอบกลับ: curl -sS -v -o /dev/null -x http://user1:pass1@proxy.example.net:8080 https://example.com/ ใน Windows ใช้ NUL แทน /dev/null
ผลลัพธ์ที่คาดหวัง
ในบันทึกมีรายการที่มีการตอบกลับทั้งหมด และคุณสามารถพูดได้อย่างมั่นใจหนึ่งในสาม: «พร็อกซีตอบในขั้นการยืนยันตัวตน», «พร็อกซีตอบในขั้นการเข้าถึงเว็บไซต์» หรือ «เว็บไซต์เองเป็นผู้ตอบ» สิ่งนี้นำคุณไปสู่ขั้นตอนที่ 2, 3-4 หรือนอกเหนือจากบทความนี้
ปัญหาที่อาจเกิดขึ้น
- คำสั่งเขียน «Could not resolve proxy» พิมพ์โฮสต์ผิด ตรวจสอบกับบัญชีทีละตัวอักษร
- คำสั่งเขียน «Failed to connect to proxy» พอร์ตปิดหรือไม่ถูกต้อง นี่เป็นปัญหาการขนส่ง ไม่ใช่รหัส ตรวจสอบพอร์ตและลองช่องสัญญาณอื่น
- เอาต์พุตขาดตอนที่บรรทัด TLS โดยไม่มีรหัส หมายความว่าทันเนลถูกสร้างแล้ว แต่เว็บไซต์ไม่ตอบในเวลาที่ไคลเอนต์ของคุณกำหนด อย่าสับสนกับ 504: ไม่มีรหัสหมายความว่าไม่ใช่กรณีของเรา
การตรวจสอบ: คุณสามารถบอกผู้ส่งคำตอบและรหัสหรือวลีที่แน่นอนได้ และบรรทัดเอาต์พุต curl บันทึกไว้ในบันทึก
ขั้นตอนที่ 2: แก้ไขข้อผิดพลาด 407 Proxy Authentication Required
เป้าหมายของขั้นตอนนี้: ทำให้พร็อกซีตอบ «200 Connection established» ต่อคำสั่ง CONNECT ไม่ใช่ 407 และเข้าใจสาเหตุเพื่อไม่ให้ข้อผิดพลาดกลับมา
ทำไม 407 จึงเกิด
พร็อกซีไม่ยอมรับข้อมูลรับรองของคุณ สาเหตุมักมีหกประการ และเราจะตรวจสอบตามลำดับความซับซ้อนจากน้อยไปมาก: พิมพ์ผิด, อักขระพิเศษในรหัสผ่าน, IP ของคุณเปลี่ยนเมื่อใช้การยืนยันตามที่อยู่, ช่องสัญญาณหมดอายุ, ซอฟต์แวร์ไม่ส่งข้อมูลเลย, แคชข้อมูลเก่าในเบราว์เซอร์
คำแนะนำ
- เปิดบัญชีและหาช่องสัญญาณที่มีปัญหา ตรวจสอบว่าวันหมดอายุยังไม่ผ่านและสถานะใช้งานอยู่ ถ้าหมดอายุแล้ว ให้ต่ออายุและทำคำขอซ้ำในหนึ่งนาที ในกรณีนี้ไม่ต้องไปต่อ
- ตรวจสอบว่าช่องสัญญาณเปิดใช้การยืนยันตัวตนประเภทใด: ล็อกอินและรหัสผ่าน หรือตาม IP address แผงควบคุมหลายแห่งอนุญาตให้เปิดทั้งสองพร้อมกัน
- ถ้าเปิดการยืนยันตาม IP ให้หาที่อยู่ภายนอกปัจจุบันของคอมพิวเตอร์หรือเซิร์ฟเวอร์ของคุณ เปิดในเบราว์เซอร์โดยไม่มีพร็อกซีไปยังบริการที่แสดง IP ของคุณ แล้วเปรียบเทียบกับที่อยู่ที่บันทึกในบัญชี ผู้ให้บริการอินเทอร์เน็ตบ้านและมือถือมักเปลี่ยนที่อยู่หลังรีสตาร์ทเราเตอร์ ถ้าที่อยู่ไม่ตรงกัน ให้อัปเดตในบัญชีและรอหนึ่งถึงสองนาที: การเปลี่ยนแปลงไม่ได้มีผลทันที
- ถ้าใช้ล็อกอินและรหัสผ่าน ให้คัดลอกจากบัญชีใหม่ อย่าพิมพ์ซ้ำด้วยมือ วางในคำสั่ง curl จากขั้นตอนที่ 1 แล้วรัน ครึ่งหนึ่งของกรณี 407 จบที่นี่
- ดูที่รหัสผ่าน ถ้ามีอักขระ @, :, /, #, ?, % หรือช่องว่าง ต้องเข้ารหัสเมื่อส่งในสตริงที่อยู่ เครื่องหมาย @ กลายเป็น %40, ทวิภาคเป็น %3A, เครื่องหมายเลขเป็น %23, เครื่องหมายเปอร์เซ็นต์เป็น %25 ตัวอย่างเช่น รหัสผ่าน p@ss:1 เขียนใน URL เป็น p%40ss%3A1 เพื่อไม่ต้องเข้ารหัส ให้ส่งข้อมูลด้วยคีย์แยก:
curl -v -x proxy.example.net:8080 --proxy-user user1:p@ss:1 https://example.com/ที่นี่ curl จัดการอักขระเอง - ถ้า curl ผ่าน แต่ซอฟต์แวร์ที่ใช้งานยังได้ 407 ปัญหาอยู่ที่ซอฟต์แวร์ เปิดการตั้งค่าพร็อกซี ตรวจสอบว่าล็อกอินและรหัสผ่านป้อนในช่องแยก ไม่ได้ต่อกับที่อยู่ ถ้าโปรแกรมไม่ต้องการแบบนั้น ตรวจสอบว่าไม่มีช่องว่างที่ท้ายรหัสผ่าน: มักเกิดจากการคัดลอก
- ในเบราว์เซอร์ต้านการตรวจจับ เปิดการตั้งค่าของโปรไฟล์เฉพาะ ไม่ใช่การตั้งค่าทั่วไป ผู้ใช้หลายคนเปลี่ยนรหัสผ่านในรายการพร็อกซีทั่วไป แต่โปรไฟล์ยังเก็บสำเนาเก่า บันทึกพร็อกซีใหม่ในโปรไฟล์และรีสตาร์ทโปรไฟล์
- ถ้าเบราว์เซอร์จดจำข้อมูลเก่าและไม่ถามข้อมูลใหม่ ให้ล้างรหัสผ่านที่บันทึกไว้สำหรับโฮสต์นี้ในการตั้งค่าเบราว์เซอร์ หรือสร้างโปรไฟล์ใหม่สำหรับทดสอบ
- สังเกตส่วนหัว Proxy-Authenticate ในการตอบกลับ 407 ถ้าเขียนว่า «Basic» พร็อกซีต้องการคู่ล็อกอิน-รหัสผ่านธรรมดา ถ้าระบุสกีมาอื่น ซอฟต์แวร์ของคุณต้องรองรับ สำหรับพร็อกซีมือถือมักใช้ Basic และความไม่ตรงกันหมายถึงข้อผิดพลาดในการตั้งค่าประเภทพร็อกซี
- ทำคำขอ curl ซ้ำและยืนยันว่าตอนนี้ CONNECT ได้ 200
ข้อควรระวัง: อย่าพยายาม «แก้» 407 ด้วยการส่งคำขอซ้ำจำนวนมาก พร็อกซีเซิร์ฟเวอร์บางตัวบล็อกที่อยู่ชั่วคราวหลังการยืนยันตัวตนผิดหลายครั้ง และคุณจะได้ปัญหาเพิ่มเติมซ้อนกับปัญหาเดิม ตรวจสอบหนึ่งครั้ง แก้หนึ่งอย่าง ตรวจสอบหนึ่งครั้ง
เคล็ดลับ: ถ้าคุณมีหลายสิบช่องสัญญาณ ให้เก็บในตารางที่ล็อกอินและรหัสผ่านอยู่ในคอลัมน์แยก และมีคอลัมน์ที่มีรหัสผ่านที่เข้ารหัสสำหรับ URL แล้วคุณจะไม่มีทางสลับว่าต้องใส่อะไรที่ไหน
ผลลัพธ์ที่คาดหวัง
ในเอาต์พุต curl บรรทัดตอบกลับต่อ CONNECT กลายเป็น «HTTP/1.1 200 Connection established» เว็บไซต์ส่งเนื้อหา ในซอฟต์แวร์ที่ใช้งานคำขอผ่าน ในบันทึกสาเหตุถูกบันทึก: พิมพ์ผิด, การเข้ารหัส, IP เปลี่ยน, หมดอายุ หรือแคช
ปัญหาที่อาจเกิดขึ้น
- รหัส 407 มาสองครั้ง: ครั้งแรกที่ CONNECT ครั้งที่สองในทันเนล นี่เป็นสัญญาณว่าซอฟต์แวร์ส่งข้อมูลเฉพาะขั้นใดขั้นหนึ่ง อัปเดตโปรแกรมหรือเปิดตัวเลือกการส่งการยืนยันตัวตนใน CONNECT
- บัญชีบอกว่าเพิ่ม IP แล้ว แต่ 407 ยังอยู่ คุณอาจทำงานผ่านเครือข่ายองค์กรหรือเซิร์ฟเวอร์ที่มีหลายที่อยู่ขาออก ตรวจสอบที่อยู่จากเครื่องที่ส่งคำขอจริงๆ
- ใช้ได้กับคุณ แต่ใช้ไม่ได้กับเพื่อนร่วมงานที่ใช้ข้อมูลเดียวกัน เมื่อใช้การยืนยันตาม IP นี่เป็นเรื่องปกติ: เพื่อนร่วมงานมีที่อยู่ต่างกัน เปลี่ยนไปใช้ล็อกอินและรหัสผ่าน หรือเพิ่ม IP ที่สอง
การตรวจสอบ: คำขอสามครั้งติดต่อกันผ่าน curl และผ่านซอฟต์แวร์ที่ใช้งานผ่านโดยไม่มี 407 สาเหตุบันทึกในบันทึกแล้ว
ขั้นตอนที่ 3: จัดการกับข้อผิดพลาด 502 Bad Gateway จากพร็อกซี
เป้าหมายของขั้นตอนนี้: แยกความล้มเหลวชั่วคราวในขณะเปลี่ยน IP ออกจากปัญหาถาวรกับทิศทางหรือช่องสัญญาณ และเลือกการตอบสนองที่ถูกต้องสำหรับแต่ละกรณี
ทำไมพร็อกซีส่ง 502
พร็อกซีรับคำขอของคุณ พยายามเปิดการเชื่อมต่อไปข้างหน้าแล้วได้รับการตัดขาด การปฏิเสธ หรือคำตอบที่อ่านไม่ได้ สำหรับพร็อกซีมือถือ สาเหตุทั่วไปคือ: โมเด็มกำลังสลับ IP address หรือลงทะเบียนใหม่ในเครือข่ายผู้ให้บริการ; เว็บไซต์เป้าหมายตัดการเชื่อมต่อ; ฝั่งพร็อกซีไม่สามารถแก้ชื่อโดเมนของเว็บไซต์ได้; ช่องสัญญาณมีภาระมากเกินไปจากจำนวนสตรีมพร้อมกันมากเกินไป; เว็บไซต์ไม่พร้อมใช้งานสำหรับทุกคน
คำแนะนำ
- บันทึกเวลาที่ 502 ปรากฏอย่างแม่นยำพร้อมวินาที สิ่งนี้สำคัญสำหรับข้อถัดไป
- เปิดประวัติการเปลี่ยน IP ของช่องสัญญาณนี้ในบัญชี หรือนึกว่าคุณเปิดการหมุนอัตโนมัติตามกำหนดเวลาหรือไม่ ถ้าการหมุนทำงานในวินาทีเดียวกับข้อผิดพลาด คุณเจอพฤติกรรมปกติ: ในระหว่างการสลับที่อยู่ คำขอจะได้ 502 สองถึงสิบวินาที วิธีแก้คือทำคำขอซ้ำหลังหยุดพัก
- รอสิบวินาทีและทำคำสั่ง curl จากขั้นตอนที่ 1 ซ้ำ ถ้าคำตอบกลายเป็น 200 บันทึกในบันทึก «502 ในขณะหมุน» และไปตั้งค่าการลองใหม่ในขั้นตอนที่ 6
- ถ้า 502 เกิดซ้ำอย่างต่อเนื่อง ให้ตรวจสอบเว็บไซต์อื่นผ่านพร็อกซีเดิม ถ้าเปิดได้ ปัญหาอยู่ที่ทิศทาง ถ้าเปิดไม่ได้ ปัญหาอยู่ที่ช่องสัญญาณ
- สำหรับปัญหาทิศทาง: เปิดเว็บไซต์เป้าหมายโดยตรงโดยไม่มีพร็อกซี ถ้าเข้าถึงโดยตรงไม่ได้หรือส่ง 5xx พร็อกซีไม่ใช่ตัวการ: เว็บไซต์ล่ม ถ้าโดยตรงทำงานได้ เว็บไซต์อาจตัดการเชื่อมต่อจากที่อยู่ของผู้ให้บริการรายนี้ เปลี่ยน IP ผ่านลิงก์ในบัญชีและทำซ้ำ ถ้าไม่ช่วย ให้ลองช่องสัญญาณของผู้ให้บริการหรือภูมิภาคอื่น
- สำหรับปัญหาช่องสัญญาณ: ตรวจสอบสถานะอุปกรณ์ในบัญชี ผู้ให้บริการหลายรายมีตัวบ่งชี้สถานะโมเด็ม สถานะสีแดงหรือเหลืองหมายความว่าช่องสัญญาณกำลังกู้คืน และเหลือแค่รอหรือสลับไปใช้สำรอง
- ตรวจสอบภาระ ดูในซอฟต์แวร์ของคุณว่ามีกี่สตรีมพร้อมกันที่ผ่านช่องสัญญาณนี้ ช่องสัญญาณมือถือมีแบนด์วิดท์จำกัด และเมื่อมีการเชื่อมต่อแบบขนานหลายสิบ พร็อกซีจะเริ่มปฏิเสธคำขอบางส่วนด้วย 502 ลดการทำงานแบบขนานลงครึ่งหนึ่งและทดสอบซ้ำ
- ตรวจสอบว่าเกี่ยวกับ DNS หรือไม่ ทำคำขอไปยังเว็บไซต์ด้วย IP address แทนโดเมน ถ้าเว็บไซต์อนุญาต หรือเปลี่ยนไปใช้สกีมา socks5h ที่พร็อกซีแก้ชื่อ และเปรียบเทียบผล ถ้าด้วยชื่อได้ 502 แต่ด้วย IP ทำงานได้ ปัญหาอยู่ที่การแก้ชื่อฝั่งพร็อกซี แจ้งผู้ให้บริการชื่อโดเมนที่แน่นอน
- ถ้าไม่มีอะไรช่วยได้ใน 15 นาที ให้รวบรวมเอาต์พุต curl -v เวลา โฮสต์ช่องสัญญาณ โดเมนเป้าหมาย และส่งไปยังฝ่ายสนับสนุนของผู้ให้บริการ ข้อมูลที่รวบรวมอย่างถูกต้องลดเวลาการแก้จากหนึ่งวันเหลือหนึ่งชั่วโมง
เคล็ดลับ: เมื่อทำงานกับการหมุนตามกำหนดเวลา ให้ซิงค์การหยุดพักในซอฟต์แวร์กับช่วงเวลาการเปลี่ยน IP ล่วงหน้า ถ้าที่อยู่เปลี่ยนทุก 5 นาที ให้ตัวเก็บข้อมูลหยุดพัก 15 วินาทีตอนต้นของทุกช่วงห้านาที จำนวน 502 จะลดลงเกือบเป็นศูนย์โดยไม่ต้องเขียนโค้ดซับซ้อนแม้แต่บรรทัดเดียว
ผลลัพธ์ที่คาดหวัง
คุณรู้แน่ว่า 502 ของคุณอยู่ในหมวดใด: ขณะหมุน, ทิศทางเฉพาะ, ช่องสัญญาณมีภาระมากเกินไป, อุปกรณ์ล้มเหลว หรือเว็บไซต์ไม่พร้อมใช้งาน สำหรับสามอย่างแรกคุณมีวิธีแก้ สำหรับสองอย่างหลังคือความเข้าใจว่าต้องรออะไรและต้องเขียนถึงใคร
ปัญหาที่อาจเกิดขึ้น
- 502 มาสำหรับไฟล์ขนาดใหญ่เท่านั้น เว็บไซต์ปิดการเชื่อมต่อเนื่องจากความเร็วการส่งช้า ลดขนาดข้อมูลที่ขอ หรือใช้ช่องสัญญาณที่มีความครอบคลุมดีกว่า
- 502 มาจากเว็บไซต์ ไม่ใช่พร็อกซี ตรวจสอบส่วนหัว: ถ้ามี Server ของเว็บไซต์และไม่มี Proxy-Agent นี่คือความล้มเหลวภายในของเว็บไซต์ ทำซ้ำภายหลัง
- 502 สลับกับ 200 โดยไม่มีตรรกะที่ชัดเจน สัญญาณคลาสสิกของช่องสัญญาณมีภาระมากเกินไป ลดการทำงานแบบขนานจนได้ผลลัพธ์ที่เสถียร
การตรวจสอบ: คำขอสิบครั้งติดต่อกันโดยหยุดพักสองวินาทีผ่านช่องสัญญาณที่มีปัญหากับเว็บไซต์ที่เสถียรส่งกลับ 200 หรือคุณมีตั๋วสนับสนุนพร้อมข้อมูลทั้งหมด
ขั้นตอนที่ 4: ทำงานกับรหัส 504 Gateway Timeout
เป้าหมายของขั้นตอนนี้: เข้าใจว่าส่วนใดหลังพร็อกซีที่สูญเสียเวลา และลดสัดส่วน 504 ให้อยู่ในระดับที่ยอมรับได้ โดยไม่สับสนรหัสกับการหมดเวลาของไคลเอนต์
504 จากพร็อกซีหมายถึงอะไรกันแน่
พร็อกซีเซิร์ฟเวอร์มีขีดจำกัดการรอการตอบกลับจากเว็บไซต์ภายใน เมื่อเว็บไซต์ไม่ทันตอบในขีดจำกัดนั้น พร็อกซีหยุดรอและรายงานรหัส 504 ให้คุณอย่างซื่อสัตย์ ไคลเอนต์ของคุณไม่ได้ตัดการเชื่อมต่อ การตอบกลับมาแล้ว นี่คือเหตุผลที่สำคัญว่าขีดจำกัดการรอในซอฟต์แวร์ของคุณต้องมากกว่าขีดจำกัดของพร็อกซี: ไม่เช่นนั้นคุณจะเห็นการหมดเวลาเครือข่ายโดยไม่มีรหัสและไม่เข้าใจว่าเกิดอะไรขึ้น
คำแนะนำ
- ตรวจสอบขีดจำกัดการรอในซอฟต์แวร์ของคุณ ในโปรแกรมส่วนใหญ่เรียกว่า timeout, «เวลารอการตอบกลับ» หรือ «Read timeout» ถ้าน้อยกว่า 30 วินาที ให้ตั้ง 60 ชั่วคราว นี่เป็นขั้นตอนวินิจฉัย: คุณต้องรอให้ได้รหัสจากพร็อกซี
- วัดเวลาถึงการตอบกลับผ่านพร็อกซี ทำ:
curl -sS -o /dev/null -w "%{http_code} %{time_connect} %{time_starttransfer} %{time_total}" -x http://user1:pass1@proxy.example.net:8080 https://example.com/คีย์ -w แสดงตัวเลขสี่ตัว: รหัส, เวลาถึงการเชื่อมต่อ, เวลาถึงไบต์แรก และเวลารวมเป็นวินาที - ทำคำสั่งเดิมโดยไม่มีคีย์ -x เปรียบเทียบเวลาถึงไบต์แรก ถ้าโดยตรงเว็บไซต์ตอบใน 0.4 วินาที แต่ผ่านพร็อกซี 8 วินาที ความล่าช้าในช่วง «พร็อกซี — เว็บไซต์» สูง และ 504 จะปรากฏเมื่อเครือข่ายมือถือสั่นคลอน
- ตรวจสอบว่า 504 ปรากฏในคำขอใด ทำคำขอด้วยวิธี HEAD ซึ่งไม่โหลดเนื้อหาหน้า:
curl -I -x http://user1:pass1@proxy.example.net:8080 https://example.com/ถ้า HEAD ผ่าน แต่ GET หน้าที่ได้ 504 ปัญหาอยู่ที่ขนาดหรือการสร้างหน้าที่ช้า ไม่ใช่การเชื่อมต่อเอง - เปลี่ยน IP ของช่องสัญญาณผ่านลิงก์ในบัญชี เครือข่ายมือถือไม่สม่ำเสมอ: ที่อยู่หนึ่งอาจเชื่อมต่อกับสถานีฐานที่มีภาระมาก อีกที่หนึ่งไปยังสถานีว่าง ทำการวัดซ้ำ ถ้าเวลาลดลงหลายเท่า ให้เพิ่มกฎในซอฟต์แวร์: เมื่อ 504 ให้เปลี่ยน IP ก่อน แล้วทำคำขอซ้ำ
- ตรวจสอบความหนักของหน้าเป้าหมาย เว็บไซต์บางแห่งส่งการตอบกลับหลังจากการดำเนินการฝั่งเซิร์ฟเวอร์ที่ใช้เวลานาน ถ้าเป้าหมายของคุณคือข้อมูลเฉพาะ ลองเข้าถึงที่อยู่ที่เบากว่าบนเว็บไซต์เดียวกัน: API, เวอร์ชันมือถือ, หน้าที่ไม่มีพารามิเตอร์การเรียงลำดับ
- ถ้า 504 มาสำหรับโดเมนเดียวและผ่านช่องสัญญาณของผู้ให้บริการรายเดียวเท่านั้น บันทึกในบันทึกและกระจายงานกับโดเมนนี้ไปยังช่องสัญญาณของผู้ให้บริการรายอื่น
- คืนขีดจำกัดการรอในซอฟต์แวร์เป็นค่าที่ใช้งาน แต่ตอนนี้อย่างมีจิตสำนึก: ต้องมากกว่าเวลาตอบกลับทั่วไปผ่านพร็อกซีเล็กน้อยและน้อยกว่าที่คุณพร้อมรอในงาน สำหรับสถานการณ์ส่วนใหญ่คือ 30-45 วินาที
ข้อควรระวัง: อย่าตั้งขีดจำกัดการรอในซอฟต์แวร์เป็นหลายนาที «เผื่อไว้» และอย่าปล่อยไว้อย่างนั้นตลอดไป หนึ่งสตรีมที่ค้างจะบล็อกที่ในคิว และสตรีมที่ค้างสิบตัวจะสร้างภาพลวงตาว่าพร็อกซีไม่ทำงาน ทั้งที่ปัญหาอยู่ที่เว็บไซต์ช้าหนึ่งแห่ง
เคล็ดลับ: เพิ่มคอลัมน์ «เวลาถึงไบต์แรก» ในบันทึกซอฟต์แวร์ของคุณ จากมันเห็นได้ว่าช่องสัญญาณเสื่อมลงทีละน้อยหรือล้มลงทันที การเพิ่มขึ้นทีละน้อยหมายถึงภาระมากเกินไปหรือความครอบคลุมแย่ การล้มลงทันทีมักชี้ไปที่การหมุนหรือความล้มเหลวของผู้ให้บริการ
ผลลัพธ์ที่คาดหวัง
คุณรู้เวลาตอบกลับทั่วไปผ่านแต่ละช่องสัญญาณ ตั้งขีดจำกัดในซอฟต์แวร์สูงกว่าขีดจำกัดของพร็อกซี และ 504 กลายเป็นเหตุการณ์ที่หายากซึ่งมีการตอบสนองอัตโนมัติ
ปัญหาที่อาจเกิดขึ้น
- คุณเพิ่มขีดจำกัด แต่แทนที่จะได้ 504 กลับได้การหมดเวลาเครือข่าย หมายความว่าพร็อกซีรอนานกว่าที่คุณคิด หรือการเชื่อมต่อกับพร็อกซีเองไม่เสถียร นี่อยู่นอกเหนือรหัสแล้ว ดูเนื้อหาที่เกี่ยวข้องเกี่ยวกับการหมดเวลา
- 504 เฉพาะบางชั่วโมง ช่วงพีคตอนเย็นของเครือข่ายมือถือ ย้ายงานหนักไปกลางคืนหรือเช้า
- 504 ในคำขอแรกไปยังเว็บไซต์ใหม่ แล้วหลังจากนั้นเร็ว การแก้ชื่อครั้งแรกและการสร้างการเชื่อมต่อฝั่งพร็อกซี เพิ่มคำขออุ่นเครื่องหนึ่งครั้งก่อนชุดหลัก
การตรวจสอบ: ชุดคำขอ 20 ครั้งไปยังเว็บไซต์ที่ใช้งานได้แสดงเวลาถึงไบต์แรกในช่วงที่คาดเดาได้และมี 504 ไม่เกินหนึ่งถึงสองครั้ง และซอฟต์แวร์เมื่อได้ 504 จะเปลี่ยน IP และทำคำขอซ้ำ
ขั้นตอนที่ 5: แก้ไขข้อผิดพลาด tunnel failed
เป้าหมายของขั้นตอนนี้: เรียนรู้ที่จะอ่านตัวเลขข้างๆ วลี tunnel failed จับคู่กับสาเหตุจริง และแก้ไขการตั้งค่าโปรโตคอล พอร์ต และประเภทพร็อกซี
หน้าตาเป็นอย่างไรและหมายถึงอะไร
ใน curl ข้อความปรากฏว่า: «CONNECT tunnel failed, response 407» ในเบราว์เซอร์และโซลูชันต้านการตรวจจับอาจเป็นวลี «Proxy tunnel failed», «Unable to establish tunnel» หรือ «Tunnel connection failed» ร่วมกันคือ: ไคลเอนต์ส่งคำสั่ง CONNECT แต่พร็อกซีตอบอย่างอื่นที่ไม่ใช่ 200 ตัวเลขข้างๆ คือรหัสนั้น และการทำงานกับมันลดลงมาที่ขั้นตอนก่อนหน้าบวกกับกรณีพิเศษบางอย่างที่ปรากฏเฉพาะในขั้นทันเนล
คำแนะนำ
- รัน curl ด้วยคีย์ -v ไปยังที่อยู่ HTTPS และหาบรรทัดที่มี tunnel failed บันทึกตัวเลขหลังคำว่า response
- ถ้าเป็น 407 ให้กลับไปขั้นตอนที่ 2 ต่างกันเพียงอย่างเดียว: ตรวจสอบว่าซอฟต์แวร์ส่งการยืนยันตัวตนในขั้น CONNECT ในโปรแกรมบางเวอร์ชันเก่า ตัวเลือก «การยืนยันตัวตนพร็อกซี» มีผลเฉพาะคำขอ HTTP แต่ทันเนลออกไปโดยไม่มีรหัสผ่าน
- ถ้าเป็น 502 หรือ 504 ให้กลับไปขั้นตอนที่ 3 และ 4 พร็อกซีไม่สามารถเปิดการเชื่อมต่อกับพอร์ต 443 ของเว็บไซต์หรือไม่ได้รับคำตอบ
- ถ้าเป็น 403 พร็อกซีปฏิเสธเปิดทันเนลไปยังพอร์ตหรือโฮสต์ที่ระบุ ตรวจสอบว่าคุณเชื่อมต่อกับพอร์ตใด พร็อกซีมือถือมักอนุญาตทันเนลไปยัง 443 และพอร์ตทั่วไปบางพอร์ต ถ้าบริการของคุณใช้พอร์ตที่ไม่ได้มาตรฐาน ให้สอบถามในบัญชีหรือกับผู้ให้บริการว่าอนุญาตหรือไม่
- ถ้าเป็น 400 พร็อกซีไม่เข้าใจคำสั่ง สาเหตุที่พบบ่อยที่สุดคือคุณระบุ SOCKS5-พร็อกซีเป็น HTTP หรือกลับกัน เปิดบัญชีและดูว่ามีโปรโตคอลและพอร์ตใดที่ออกให้ ผู้ให้บริการหลายรายมีพอร์ตต่างกันสำหรับ HTTP และ SOCKS5 ของช่องสัญญาณเดียวกัน
- แก้ไขสกีมาในคำสั่ง สำหรับ SOCKS5 ใช้:
curl -v -x socks5h://user1:pass1@proxy.example.net:1080 https://example.com/ตัวอักษร h ใน socks5h หมายความว่าพร็อกซีแก้ชื่อโดเมน ไม่ใช่คอมพิวเตอร์ของคุณ สำหรับพร็อกซีมือถือเป็นตัวเลือกที่ดีกว่า - ถ้าคุณใช้เบราว์เซอร์ต้านการตรวจจับ เปิดการตั้งค่าพร็อกซีของโปรไฟล์และหารายการแบบเลื่อนลงประเภท: HTTP, HTTPS, SOCKS5 เลือกที่ระบุในบัญชีและตรวจสอบพอร์ต หลังบันทึก ให้รีสตาร์ทโปรไฟล์ทั้งหมด ไม่ใช่แค่รีเฟรชแท็บ
- ถ้าไม่มีตัวเลขข้างๆ tunnel failed และมีแค่วลี ให้เปิดการบันทึกแบบละเอียดในซอฟต์แวร์หรือทำซ้ำสถานการณ์ผ่าน curl เพื่อให้ได้รหัส
- ตรวจสอบว่าซอฟต์แวร์ของคุณพยายามสร้างการเชื่อมต่อ TLS กับพร็อกซีเองหรือไม่ โปรแกรมบางตัวเมื่อเลือกประเภท «HTTPS» จะเข้ารหัสไม่เพียงแค่ทราฟฟิกไปยังเว็บไซต์ แต่รวมถึงการเชื่อมต่อกับพร็อกซีด้วย ถ้าพร็อกซีไม่รองรับ คุณจะได้ tunnel failed หรือข้อผิดพลาด handshake เปลี่ยนเป็นประเภท «HTTP» สำหรับการเชื่อมต่อกับพร็อกซี: ทราฟฟิกไปยังเว็บไซต์ยังคงเข้ารหัสภายในทันเนล
- ทดสอบซ้ำและยืนยันว่า CONNECT ได้ 200 และหน้าโหลดได้
เคล็ดลับ: ทำคำขอทดสอบสั้นๆ สองครั้งเป็นส่วนหนึ่งของกิจวัตรประจำวัน: หนึ่งไปยังที่อยู่ผ่าน HTTP อีกอันไปยังที่อยู่เดียวกันผ่าน HTTPS ถ้าอันแรกผ่านแต่อันที่สองล้มเหลวด้วย tunnel failed คุณเข้าใจในวินาทีเดียวว่าปัญหาอยู่ที่ทันเนล ไม่ใช่การยืนยันตัวตนหรือช่องสัญญาณ
ผลลัพธ์ที่คาดหวัง
วลี tunnel failed หายไปจากบันทึก สำหรับแต่ละช่องสัญญาณมีการบันทึกประเภทและพอร์ตที่ถูกต้อง และในซอฟต์แวร์ไม่มีการเปิดการเข้ารหัสเพิ่มเติมสำหรับการเชื่อมต่อกับพร็อกซี
ปัญหาที่อาจเกิดขึ้น
- ทันเนลสร้างขึ้น แต่จากนั้นมีข้อผิดพลาดใบรับรอง นี่ไม่ใช่เลเยอร์พร็อกซี: เว็บไซต์หรือชุดใบรับรองของระบบคุณ ตรวจสอบวันที่และเวลาบนคอมพิวเตอร์
- ทำงานใน curl แต่ไม่ทำงานในซอฟต์แวร์ด้วยข้อมูลเดียวกัน ซอฟต์แวร์ใช้สกีมาอื่นหรือเพิ่มคำนำหน้าของตัวเอง ศึกษาเอกสารเกี่ยวกับรูปแบบสตริงพร็อกซี
- tunnel failed เฉพาะเว็บไซต์เดียว เว็บไซต์ใช้พอร์ตที่ไม่ได้มาตรฐาน กลับไปที่หัวข้อเกี่ยวกับ 403
การตรวจสอบ: คำขอ HTTPS ผ่าน curl และผ่านซอฟต์แวร์ที่ใช้งานให้ 200 ที่ CONNECT ประเภทและพอร์ตของทุกช่องสัญญาณบันทึกในตารางแล้ว
ขั้นตอนที่ 6: ตั้งค่าการตอบสนองที่ถูกต้องของซอฟต์แวร์ต่อแต่ละรหัส
เป้าหมายของขั้นตอนนี้: ทำให้ข้อผิดพลาดพร็อกซีเซิร์ฟเวอร์จัดการโดยอัตโนมัติ: บางอย่างทำซ้ำพร้อมหยุดพัก บางอย่างส่งสัญญาณเตือนทันที และคุณได้บันทึกที่เข้าใจได้ ไม่ใช่กระแสบรรทัดสีแดง
หลักการ: ไม่ใช่ทุกข้อผิดพลาดเหมือนกัน
การทำคำขอซ้ำเมื่อ 407 ไร้ประโยชน์: รหัสผ่านจะไม่ถูกต้องเพียงเพราะลองใหม่ การทำซ้ำเมื่อ 502 ในขณะหมุนจำเป็น: ห้าวินาทีต่อมาทุกอย่างจะทำงาน การทำซ้ำเมื่อ 504 ดีกว่าหลังเปลี่ยน IP กฎสามข้อนี้เป็นพื้นฐานของการจัดการข้อผิดพลาดที่ดี
คำแนะนำสำหรับซอฟต์แวร์สำเร็จรูป
- เปิดการตั้งค่าของตัวเก็บข้อมูลหรือตัวจัดการบัญชีและหาส่วนที่รับผิดชอบการลองใหม่ อาจชื่อ «Retries», «ความพยายามซ้ำ», «การจัดการข้อผิดพลาด»
- ตั้งจำนวนครั้งลองใหม่สำหรับ 5xx เป็น 3 และหยุดพักเริ่มต้นระหว่างเป็น 5 วินาทีเพิ่มเป็นสองเท่า: 5, 10, 20 วินาที การเพิ่มการหยุดพักแบบนี้เรียกว่า exponential backoff และไม่ให้ซอฟต์แวร์ของคุณซ้ำเติมช่องสัญญาณที่มีภาระมากเกินไป
- ถ้าซอฟต์แวร์อนุญาตให้ระบุรายการรหัสสำหรับลองใหม่ ให้ระบุ 502 และ 504 อย่าใส่ 407
- หาการตั้งค่าการดำเนินการเมื่อ 407 ถ้าไม่มี ให้ตั้งจำนวนครั้งลองใหม่ในส่วนทั่วไปให้น้อยที่สุดและเปิดการแจ้งเตือนคำขอที่ล้มเหลว เป้าหมายของคุณคือเห็น 407 ในไม่กี่นาที ไม่ใช่หลังหยุดทำงานหนึ่งวัน
- หาช่องสำหรับลิงก์เปลี่ยน IP ถ้ามี วางลิงก์จากบัญชีสำหรับช่องสัญญาณที่เกี่ยวข้องและเปิดตัวเลือก «เปลี่ยน IP เมื่อเกิดข้อผิดพลาด» หรือ «หมุนเมื่อล้มเหลว»
- จำกัดจำนวนสตรีมพร้อมกันต่อหนึ่งช่องสัญญาณมือถือ เริ่มจาก 3-5 และเพิ่มขึ้นจนสัดส่วน 502 ต่ำกว่าหนึ่งเปอร์เซ็นต์
- เปิดบันทึกแบบละเอียดพร้อมบันทึกรหัสตอบกลับและส่วนหัว ตรวจสอบว่าในบันทึกเห็นความแตกต่างระหว่างรหัสจากพร็อกซีและรหัสจากเว็บไซต์: โปรแกรมหลายตัวแสดงในคอลัมน์แยก «Proxy status»
- บันทึกการตั้งค่า รีสตาร์ทซอฟต์แวร์ และทำชุดทดสอบ 50 คำขอ
คำแนะนำสำหรับสคริปต์ของคุณเอง
ถ้าคุณเขียนโค้ด ตรรกะเดียวกัน ใน pseudocode ด้วย Python กับไลบรารี requests มีหน้าตาดังนี้:
proxies = {"http": "socks5h://user1:pass1@proxy.example.net:1080", "https": "socks5h://user1:pass1@proxy.example.net:1080"} for attempt in range(3): r = session.get(url, proxies=proxies, timeout=45) if r.status_code == 407: alert("auth failed") break if r.status_code in (502, 504): rotate_ip() sleep(5 * 2 ** attempt) continue breakสังเกตสามจุด หนึ่ง: เมื่อ 407 เราออกจากลูปทันทีและส่งการแจ้งเตือน สอง: เมื่อ 502 และ 504 เราเปลี่ยน IP ก่อน แล้วรอการหยุดพักที่เพิ่มขึ้น สาม: ค่า timeout เลือกให้รอจนได้รหัสจากพร็อกซี ไม่ตัดการเชื่อมต่อก่อน
ข้อควรระวัง: ในไลบรารีบางตัว ข้อผิดพลาดในขั้น CONNECT มาไม่ใช่เป็นการตอบกลับที่มีรหัส แต่เป็นข้อยกเว้นที่มีข้อความรวม tunnel failed และตัวเลข จับข้อยกเว้นเช่นนี้แยกและแยกรหัสจากข้อความ ไม่เช่นนั้นตรรกะการลองใหม่ของคุณจะไม่ทำงาน
เคล็ดลับ: นับสัดส่วนรหัสต่อช่องสัญญาณต่อวันและแสดงในตารางง่ายๆ ช่องสัญญาณที่มี 5xx สูงกว่าตัวอื่นอย่างต่อเนื่อง ควรตรวจสอบก่อน แม้ในทางเทคนิคมันจะทำงานอยู่
ผลลัพธ์ที่คาดหวัง
ซอฟต์แวร์ทำคำขอซ้ำอัตโนมัติเมื่อ 502 และ 504 ด้วยการหยุดพักที่เพิ่มขึ้นและเปลี่ยน IP แจ้งทันทีเมื่อ 407 จำกัดจำนวนสตรีม และเก็บบันทึกที่แยกรหัสพร็อกซีและเว็บไซต์
ปัญหาที่อาจเกิดขึ้น
- ซอฟต์แวร์ลองใหม่แม้ 407 ทำให้พร็อกซีบล็อกที่อยู่ชั่วคราว ปิดการลองใหม่สำหรับ 4xx ทั้งหมดหรือลดจำนวนครั้งลองใหม่ทั้งหมดเหลือหนึ่ง
- หลังเปิดการหมุนเมื่อเกิดข้อผิดพลาด IP เปลี่ยนบ่อยเกินไป กำหนดช่วงเวลาขั้นต่ำระหว่างการเปลี่ยน เช่น 60 วินาที เพื่อไม่ให้ชุด 502 หนึ่งชุดทำให้เกิดการหมุนห้าครั้งติดต่อกัน
- บันทึกขยายเป็นกิกะไบต์ เขียนส่วนหัวเฉพาะการตอบกลับที่มีรหัสข้อผิดพลาด สำหรับ 200 บันทึกหนึ่งบรรทัด
การตรวจสอบ: ชุดทดสอบ 50 คำขอเสร็จสิ้นโดยไม่ต้องแทรกแซงด้วยมือ ในบันทึกเห็นการลองใหม่พร้อมหยุดพัก 5, 10, 20 วินาทีสำหรับ 5xx และเมื่อใส่รหัสผ่านผิด ซอฟต์แวร์หยุดและแสดงการแจ้งเตือน 407
การตรวจสอบผลลัพธ์: เช็กลิสต์และการทดสอบ
ไล่ตามรายการและทำเครื่องหมายทุกข้อ ถ้าอย่างน้อยหนึ่งข้อไม่สำเร็จ ให้กลับไปยังขั้นตอนที่เกี่ยวข้อง
เช็กลิสต์
- คำสั่ง curl ด้วยคีย์ -v ทำงานได้ และคุณหาบรรทัดตอบกลับต่อ CONNECT และส่วนหัวบริการของพร็อกซีในเอาต์พุตได้
- สำหรับแต่ละช่องสัญญาณ ในตารางบันทึกโฮสต์ พอร์ต ประเภทโปรโตคอล วิธียืนยันตัวตน และรหัสผ่านที่เข้ารหัส
- เมื่อใช้การยืนยันตาม IP ที่อยู่ปัจจุบันของเครื่องคุณตรงกับที่อยู่ในบัญชี
- คำขอ HTTPS ผ่านแต่ละช่องสัญญาณได้ 200 ที่ CONNECT
- วัดเวลาถึงไบต์แรกทั่วไปผ่านแต่ละช่องสัญญาณ และขีดจำกัดการรอในซอฟต์แวร์สูงกว่าด้วยส่วนต่าง
- ในซอฟต์แวร์ตั้งค่าการลองใหม่เฉพาะ 502 และ 504 ด้วยหยุดพัก 5, 10, 20 วินาทีและเปลี่ยน IP ก่อนลองใหม่
- เมื่อ 407 ซอฟต์แวร์หยุดและแจ้งเตือน
- จำนวนสตรีมต่อช่องสัญญาณถูกจำกัด และสัดส่วน 5xx ในชุดทดสอบต่ำกว่าหนึ่งเปอร์เซ็นต์
- บันทึกเหตุการณ์ถูกเก็บและมีอย่างน้อยหนึ่งรายการที่วิเคราะห์ครบถ้วน
วิธีทดสอบ
- ใส่รหัสผ่านผิดโดยตั้งใจและรันคำขอหนึ่งครั้ง คาดหวัง: 407 ใน curl และการแจ้งเตือนในซอฟต์แวร์โดยไม่มีการลองใหม่หลายครั้ง
- คืนรหัสผ่านที่ถูกต้องและรัน 30 คำขอไปยังเว็บไซต์ที่เสถียรโดยหยุดพักหนึ่งวินาที คาดหวัง: ทั้งหมด 200 หรือไม่เกินหนึ่ง 5xx ที่ลองใหม่สำเร็จ
- ระหว่างชุด กดลิงก์เปลี่ยน IP ในบัญชี คาดหวัง: 502 หนึ่งถึงสองครั้งในบันทึก จากนั้นลองใหม่อัตโนมัติและชุดดำเนินต่อ
- ระบุประเภท SOCKS5 ในการตั้งค่าสำหรับช่องสัญญาณที่ออกเป็น HTTP และทำคำขอ คาดหวัง: tunnel failed หรือข้อผิดพลาดโปรโตคอลที่คุณรู้จักในวินาทีเดียว คืนประเภทที่ถูกต้อง
ตัวชี้วัดความสำเร็จ
สัดส่วนข้อผิดพลาดในเลเยอร์พร็อกซีในชุดการทำงานไม่เกินหนึ่งถึงสองเปอร์เซ็นต์ ทุกข้อผิดพลาดจำแนกตามรหัส และไม่มีข้อใดต้องแทรกแซงด้วยมือ ยกเว้น 407 เวลาตอบสนองต่อ 407 คือเป็นนาที ไม่ใช่เป็นชั่วโมง
ข้อผิดพลาดทั่วไปและวิธีแก้
ปัญหา: 407 หลังรีสตาร์ทเราเตอร์ทุกครั้ง
สาเหตุ: การยืนยันตาม IP แต่ผู้ให้บริการให้ที่อยู่แบบไดนามิก
วิธีแก้: เปลี่ยนไปใช้การยืนยันด้วยล็อกอินและรหัสผ่าน หรือเปิดทั้งสองวิธีพร้อมกัน ถ้าต้องใช้ IP จริงๆ ให้ขอที่อยู่แบบคงที่จากผู้ให้บริการ
ปัญหา: รหัสผ่านถูก แต่ 407 ในเบราว์เซอร์ ทั้งที่ curl ผ่าน
สาเหตุ: เบราว์เซอร์หรือโปรไฟล์เบราว์เซอร์ต้านการตรวจจับเก็บข้อมูลเก่าไว้ในแคช
วิธีแก้: บันทึกพร็อกซีใหม่ในการตั้งค่าของโปรไฟล์เฉพาะและรีสตาร์ทโปรไฟล์ ถ้าจำเป็นให้ล้างรหัสผ่านที่บันทึกไว้สำหรับโฮสต์พร็อกซี
ปัญหา: 502 ทุก N นาทีพอดี
สาเหตุ: ตรงกับช่วงเวลาการหมุน IP อัตโนมัติ
วิธีแก้: ซิงค์การหยุดพักของซอฟต์แวร์กับตารางการหมุน หรือเปลี่ยนไปใช้การเปลี่ยน IP ผ่านลิงก์ในจังหวะที่สะดวกระหว่างงาน
ปัญหา: 502 เมื่อมีสตรีมมาก เมื่อน้อยทุกอย่างดี
สาเหตุ: ช่องสัญญาณมือถือมีภาระมากเกินไป
วิธีแก้: ลดการทำงานแบบขนานเหลือ 3-5 สตรีมต่อช่องสัญญาณและกระจายภาระไปหลายช่องสัญญาณ
ปัญหา: 504 เฉพาะเว็บไซต์เดียว เว็บอื่นเร็ว
สาเหตุ: เว็บไซต์สร้างหน้าช้า或จำกัดที่อยู่ของผู้ให้บริการมือถือ
วิธีแก้: ใช้ที่อยู่ที่เบากว่าของเว็บไซต์ เปลี่ยน IP ก่อนลองใหม่ ถ้าปัญหาต่อเนื่อง ให้ย้ายงานกับเว็บไซต์นี้ไปยังช่องสัญญาณของผู้ให้บริการรายอื่น
ปัญหา: แทนที่จะได้ 504 กลับได้รับการตัดขาดโดยไม่มีรหัส
สาเหตุ: ขีดจำกัดการรอในซอฟต์แวร์น้อยกว่าขีดจำกัดภายในของพร็อกซี
วิธีแก้: เพิ่มขีดจำกัดในซอฟต์แวร์เป็นค่าที่คุณทันได้รับรหัส ปกติ 30-60 วินาที
ปัญหา: tunnel failed, response 400
สาเหตุ: ระบุพอร์ต SOCKS5 เป็น HTTP-พร็อกซีหรือกลับกัน
วิธีแก้: ตรวจสอบประเภทและพอร์ตกับบัญชี สำหรับ SOCKS5 ใช้สกีมา socks5h สำหรับ HTTP ใช้ http
ปัญหา: tunnel failed, response 403 ไปยังพอร์ตที่ไม่ได้มาตรฐาน
สาเหตุ: พร็อกซีไม่อนุญาตทันเนลไปยังพอร์ตนั้น
วิธีแก้: สอบถามรายการพอร์ตที่อนุญาตจากผู้ให้บริการและถ้าเป็นไปได้ให้กำหนดบริการเป้าหมายใหม่เป็นพอร์ต 443
ปัญหา: รหัส 502 หรือ 504 มาพร้อมส่วนหัว Server ของเว็บไซต์
สาเหตุ: นี่คือคำตอบของเว็บไซต์เอง ไม่ใช่เลเยอร์พร็อกซี: เว็บไซต์มีปัญหากับบริการภายในของตัวเอง
วิธีแก้: รอและทำซ้ำภายหลัง การเปลี่ยนพร็อกซีไม่ช่วย
ความสามารถเพิ่มเติมสำหรับผู้ใช้ขั้นสูง
ถ้าคุณเชี่ยวชาญการวินิจฉัยพื้นฐานแล้ว เทคนิคต่อไปนี้จะทำให้การทำงานกับข้อผิดพลาดในเลเยอร์พร็อกซีเกือบเป็นอัตโนมัติ
การส่งส่วนหัวการยืนยันตัวตนด้วยมือ
บางครั้งมีประโยชน์ในการตรวจสอบว่าพร็อกซีตอบสนองต่อส่วนหัวเฉพาะอย่างไร เข้ารหัสคู่ล็อกอิน:รหัสผ่านเป็น Base64 ด้วยเครื่องมือในเครื่อง แล้วส่งส่วนหัวเอง: curl -v -x proxy.example.net:8080 -H "Proxy-Authorization: Basic dXNlcjE6cGFzczE=" http://example.com/ วิธีนี้ใช้ได้กับคำขอ HTTP ปกติและช่วยให้เข้าใจว่าพร็อกซีรับข้อมูลหรือไม่ โดยไม่ขึ้นกับว่าซอฟต์แวร์ของคุณสร้างมันอย่างไร สำหรับ CONNECT ใช้คีย์ --proxy-header แทน -H
การแก้ชื่อฝั่งพร็อกซี
สกีมา socks5h และ HTTP-ทันเนลส่งชื่อโดเมนไปยังพร็อกซีเซิร์ฟเวอร์ ไม่ได้แก้ในเครื่อง สิ่งนี้ให้ข้อได้เปรียบสองอย่าง: เว็บไซต์เห็นคำขอที่ออกมาจากเครือข่ายมือถือทั้งหมด และคุณหลีกเลี่ยงความไม่ตรงกันเมื่อ DNS ในเครื่องให้ที่อยู่หนึ่ง แต่เครือข่ายผู้ให้บริการให้อีกที่อยู่ ถ้าคุณเห็น 502 เฉพาะเมื่อแก้ชื่อในเครื่อง การเปลี่ยนเป็น socks5h มักแก้ปัญหาได้โดยไม่ต้องติดต่อผู้ให้บริการ
ระบบอัตโนมัติผ่าน API ของผู้ให้บริการ
mobileproxy.space มีอินเทอร์เฟซโปรแกรมสำหรับเปลี่ยน IP และรับสถานะช่องสัญญาณ ฝังการเรียกเปลี่ยน IP ในตัวจัดการ 504 และการตรวจสอบสถานะช่องสัญญาณในตัวจัดการ 502 ที่ต่อเนื่อง แล้วสคริปต์จะตัดสินใจเองว่าจะทำคำขอซ้ำผ่านช่องสัญญาณเดิมหรือสลับไปใช้สำรอง อัลกอริทึมง่ายๆ: 502 สามครั้งติดต่อกันในหนึ่งนาที — ขอสถานะ ถ้าช่องสัญญาณปกติ เปลี่ยน IP ถ้าไม่ปกติ ทำเครื่องหมายช่องสัญญาณใช้ไม่ได้ห้านาทีและไปยังช่องถัดไป
การแยกเมตริกพร็อกซีและเว็บไซต์
สร้างเมตริกแยกสองตัวในระบบมอนิเตอร์ริ่ง: รหัสที่มาพร้อมส่วนหัวพร็อกซี และรหัสที่มาโดยไม่มี เมตริกแรกบอกสุขภาพของโครงสร้างพร็อกซีของคุณ เมตริกที่สองบอกพฤติกรรมของเว็บไซต์เป้าหมาย ตราบใดที่ยังผสมกัน คุณจะมองหาข้อผิดพลาดพร็อกซีเซิร์ฟเวอร์ในที่ที่ไม่มี และกลับกัน
พูลช่องสัญญาณแบบมีน้ำหนัก
กำหนดน้ำหนักให้แต่ละช่องสัญญาณ ลดลงทุกครั้งที่ได้ 5xx และค่อยๆ ฟื้นคืนเมื่อเวลาผ่านไป กระจายคำขอตามสัดส่วนน้ำหนัก วิธีนี้ย้ายภาระจากผู้ให้บริการหรือภูมิภาคที่มีปัญหาโดยอัตโนมัติและคืนเมื่อช่องสัญญาณฟื้นคืน โดยไม่ต้องสลับด้วยมือแม้แต่ครั้งเดียว
การส่งออก HAR จากเบราว์เซอร์
สำหรับกรณีซับซ้อนในเบราว์เซอร์ต้านการตรวจจับ เปิดแท็บ Network ทำซ้ำข้อผิดพลาดและเลือก «Save all as HAR» ไฟล์มีส่วนหัวทั้งหมดของคำขอและการตอบกลับ รวมถึงขั้นตอนที่มองไม่เห็นในบันทึกปกติของโปรแกรม ก่อนส่งให้ฝ่ายสนับสนุน ให้ลบข้อมูล Proxy-Authorization และคุกกี้ออกจากไฟล์
การปรับขีดจำกัดการรอให้เหมาะสม
รวบรวมสถิติเวลาถึงไบต์แรกต่อช่องสัญญาณและทิศทางเป็นเวลาหนึ่งสัปดาห์ ตั้งขีดจำกัดการรอในซอฟต์แวร์ที่ระดับเปอร์เซ็นไทล์ 95 บวก 10 วินาที ขีดจำกัดนี้ไม่ค่อยตัดคำขอที่ยังมีชีวิตและปล่อยสตรีมอย่างรวดเร็วเมื่อเกิดการค้างจริง
FAQ: คำถามที่พบบ่อยเกี่ยวกับการวินิจฉัย
จะรู้ได้อย่างไรว่า 502 มาจากพร็อกซี ไม่ใช่เว็บไซต์?
ดูที่ส่วนหัวของการตอบกลับ ถ้ามี Proxy-Agent, Via หรือส่วนหัวบริการอื่นของพร็อกซีและไม่มี Set-Cookie และ Server ของเว็บไซต์ คำตอบมาจากพร็อกซี เพิ่มเติม: ถ้ารหัสมาในคำตอบต่อ CONNECT ทันที มันคือพร็อกซีแน่นอน
ควรทำคำขอซ้ำเมื่อ 407 ไหม?
ไม่ ข้อมูลรับรองจะไม่ถูกต้องเพียงเพราะลองใหม่ และชุดความพยายามผิดอาจนำไปสู่การบล็อกที่อยู่ของคุณชั่วคราวฝั่งพร็อกซี แก้ไขข้อมูลและลองหนึ่งครั้ง
ทำไมใน curl ทุกอย่างทำงาน แต่ในซอฟต์แวร์ของฉันไม่?
ส่วนใหญ่ซอฟต์แวร์สร้างสตริงพร็อกซีต่างออกไป ไม่เข้ารหัสอักขระพิเศษในรหัสผ่าน ใช้ประเภทโปรโตคอลอื่น หรือไม่ส่งการยืนยันตัวตนที่ CONNECT เปรียบเทียบสตริงที่แน่นอนจากการตั้งค่าซอฟต์แวร์กับคำสั่ง curl ที่ทำงานได้ทีละตัวอักษร
จะเขียนรหัสผ่านที่มีอักขระพิเศษอย่างไรให้ถูกต้อง?
ในสตริงที่อยู่ ให้เข้ารหัส: @ เป็น %40, : เป็น %3A, # เป็น %23, % เป็น %25, ช่องว่างเป็น %20 ในช่องล็อกอินและรหัสผ่านแยก ให้ป้อนรหัสผ่านตามที่เป็น ไม่ต้องเข้ารหัส
504 ต่างจากการหมดเวลาที่เขียนในบทความอื่นอย่างไร?
504 คือรหัสที่พร็อกซีส่งกลับเอง หลังรอขีดจำกัดการรอของเว็บไซต์ การหมดเวลาโดยไม่มีรหัสหมายความว่าการเชื่อมต่อถูกตัดโดยไคลเอนต์ของคุณ โดยไม่ได้รับอะไร ทั้งสองรักษาต่างกัน จึงแยกไว้ในเนื้อหาต่างกัน
สามารถส่งกี่สตรีมผ่านหนึ่งช่องสัญญาณมือถือ?
ไม่มีตัวเลขสากล เริ่มจาก 3-5 และเพิ่มขึ้นจนสัดส่วน 502 ต่ำกว่าหนึ่งเปอร์เซ็นต์ สำหรับหน้าที่หนัก จำนวนจะน้อยลง สำหรับคำขอ API ที่เบา จำนวนจะมากขึ้น
ต้องเปลี่ยน IP ทุกครั้งที่เกิดข้อผิดพลาดไหม?
เมื่อ 504 และ 502 ที่ต่อเนื่อง — ใช่ นี่คือการกระทำแรก เมื่อ 407 — ไม่ การเปลี่ยน IP ไม่มีผลต่อการยืนยันตัวตน กำหนดช่วงเวลาขั้นต่ำระหว่างการเปลี่ยนเพื่อไม่ให้ชุดข้อผิดพลาดทำให้เกิดการหมุนถล่ม
ส่งอะไรให้ฝ่ายสนับสนุนเพื่อแก้ปัญหาเร็วขึ้น?
เอาต์พุต curl -v ทั้งหมดที่แทนรหัสผ่านด้วยเครื่องหมายดาว เวลาที่แน่นอนพร้อมวินาทีและเขตเวลา โฮสต์และพอร์ตช่องสัญญาณ โดเมนเป้าหมาย ประเภทการยืนยันตัวตน และผลของคำขอตรงโดยไม่มีพร็อกซี ด้วยชุดนี้ฝ่ายสนับสนุนมักตอบในข้อความแรก
ใช้ HTTPS สำหรับเชื่อมต่อกับพร็อกซีเองได้ไหม?
เฉพาะถ้าผู้ให้บริการรองรับอย่างชัดเจน ในกรณีส่วนใหญ่สำหรับพร็อกซีมือถือ การเชื่อมต่อกับพร็อกซีใช้ HTTP ปกติหรือ SOCKS5 และการเข้ารหัสทราฟฟิกไปยังเว็บไซต์มาจากทันเนล การเปิดการเข้ารหัสเพิ่มเติมกับพร็อกซีให้ tunnel failed หรือข้อผิดพลาด handshake
บทสรุป
คุณเดินทางจากบรรทัดสีแดงที่ไม่เข้าใจในบันทึกไปสู่ระบบการวินิจฉัยที่สมบูรณ์ ตอนนี้คุณระบุได้ว่าใครเป็นผู้ส่งคำตอบ อ่าน 407 เป็นสัญญาณให้ตรวจสอบข้อมูลรับรองและวิธียืนยันตัวตน 502 เป็นสัญญาณของความล้มเหลวหลังพร็อกซีหรือในขณะหมุน 504 เป็นรายงานซื่อสัตย์ของพร็อกซีเกี่ยวกับเว็บไซต์ที่ช้า และ tunnel failed เป็นตัวห่อหุ้มรหัสใดรหัสหนึ่งพร้อมเบาะแสเป็นตัวเลข ซอฟต์แวร์ของคุณไม่ลองใหม่อย่างไร้ความหมายและไม่ยอมแพ้เมื่อเกิดเหตุชั่วคราวอีกต่อไป
ทำอะไรต่อไป
- เก็บบันทึกเหตุการณ์อย่างน้อยหนึ่งเดือน ภายในสองสัปดาห์คุณจะสังเกตรูปแบบที่เกิดซ้ำและกำจัดสาเหตุของมัน
- ทบทวนสัดส่วนรหัสต่อช่องสัญญาณทุกสัปดาห์และกระจายภาระใหม่
- ทำให้การเปลี่ยน IP และการตรวจสอบสถานะเป็นอัตโนมัติผ่าน API ของผู้ให้บริการ เพื่อให้ 5xx ที่เป็นกิจวัตรแก้ได้โดยไม่ต้องมีคุณ
- ศึกษาเนื้อหาที่เกี่ยวข้องในบล็อกเกี่ยวกับการหมดเวลาเครือข่ายและพฤติกรรมของเว็บไซต์เป้าหมาย เพื่อปิดสองช่วงที่เหลือของเส้นทางคำขอ
จะพัฒนาไปไหนต่อ
ระดับถัดไปคือการสร้างพูลช่องสัญญาณของคุณเองที่มีน้ำหนักและมอนิเตอร์ริ่ง ที่ข้อผิดพลาดพร็อกซีเซิร์ฟเวอร์ไม่ใช่เหตุให้ตื่นตระหนก แต่เป็นจุดในกราฟที่ระบบจัดการเอง เครื่องมือทั้งหมดสำหรับสิ่งนี้คุณมีแล้ว: ความเข้าใจรหัส, curl, บัญชีผู้ให้บริการ และนิสัยการบันทึก ขอให้ทำงานราบรื่นและได้ 200 ที่เสถียร