พร็อกซีฟรีมักล้มเหลวมากกว่าที่จะทำงานได้ รายการสาธารณะจะวนผ่านผู้สมัครนับหมื่นราย และงานของคุณคือค้นหาชุดย่อยเล็กๆ ที่ยังทำงานอยู่ เร็วพอ และไม่เป็นอันตราย การทดสอบห้าขั้นตอน แต่ละขั้นตอนมีต้นทุนต่ำ ดำเนินการตามลำดับ
การทดสอบที่ 1: การเข้าถึง TCP
curl --connect-timeout 5 --proxy http://1.2.3.4:8080 \
-s -o /dev/null -w "%{http_code}\n" \
https://api.ipify.org
รหัสออกที่ไม่ใช่ศูนย์หรือการตอบกลับที่ว่างเปล่าหมายถึงพร็อกซีตายแล้ว ประมาณ 60–80% ของรายการฟรีใดๆ จะล้มเหลวในการทดสอบนี้ ณ เวลาใดก็ตาม ให้ข้ามทันทีและไม่ต้องลองใหม่
การทดสอบที่ 2: การตรวจสอบ IP ทางออก
การเรียกเดียวกันจะส่งคืน IP สาธารณะที่คำขอออกมา หากเท่ากับ 1.2.3.4 — ที่อยู่ของพร็อกซี — แสดงว่าพร็อกซีกำลังส่งต่อทราฟฟิกอย่างถูกต้อง หากเท่ากับ IP ในเครื่องของคุณ แสดงว่าพร็อกซีเสียหรือโปร่งใส: มันยอมรับการเชื่อมต่อแต่ไม่ได้ส่งต่อผ่านตัวเองจริงๆ ให้ถือว่าล้มเหลวแม้ว่า TCP จะสำเร็จ
การทดสอบที่ 3: ความโปร่งใสของส่วนหัว
curl --proxy http://1.2.3.4:8080 https://httpbin.org/headers
การตอบกลับจะสะท้อนกลับส่วนหัวที่ปลายทางได้รับ มองหา X-Forwarded-For, Via หรือ Forwarded ที่มี IP จริงของคุณ หากพบ แสดงว่าพร็อกซีอยู่ในโหมดโปร่งใสหรือไม่ระบุชื่อแทนที่จะเป็นระดับสูง สำหรับ HTTPS ผ่าน CONNECT เรื่องนี้ไม่เกี่ยวข้อง — ปลายทางเห็นเพียงการจับมือ TLS ไม่มีส่วนหัวของแอปพลิเคชัน — แต่สำหรับ HTTP ธรรมดาจะกำหนดว่าพร็อกซีเหมาะสมกับวัตถุประสงค์หรือไม่
การทดสอบที่ 4: ความหน่วงภายใต้ภาระ
การวัดเวลาแบบครั้งเดียวมีสัญญาณรบกวน ส่งคำขอแบบอนุกรมสิบครั้งผ่านพร็อกซีและใช้ค่ามัธยฐาน เกินสองวินาทีไม่สามารถใช้งานได้สำหรับงานแบบโต้ตอบ ต่ำกว่า 500 มิลลิวินาทีเทียบเท่ากับไม่มีพร็อกซีเลย ระหว่างค่านั้น พร็อกซีเหมาะสำหรับการขูดข้อมูลแบบแบตช์แต่ไม่เหมาะสำหรับการท่องเว็บ
การทดสอบที่ 5: ความสมบูรณ์ของลายนิ้วมือ TLS
เชื่อมต่อผ่านพร็อกซีไปยังปลายทาง TLS ที่รู้จักและตรวจสอบว่าห่วงโซ่ใบรับรองตรงกับที่คุณได้รับโดยไม่มีพร็อกซี ความไม่ตรงกันหมายถึงพร็อกซีกำลังดักจับ TLS — กำลังทำงานเป็นคนกลางและการรับส่งข้อมูลที่ "เข้ารหัส" ของคุณไม่ได้ถูกเข้ารหัสจริงจากพร็อกซีเป็นต้นไป สิ่งนี้พบได้ยากในพร็อกซี SOCKS ที่กำหนดค่าอย่างถูกต้อง (ไม่สามารถเห็น TLS) แต่ปรากฏในพร็อกซี HTTPS ขององค์กรที่กำหนดค่าผิดและในโหนดสาธารณะที่เป็นอันตรายเป็นครั้งคราว openssl s_client -proxy 1.2.3.4:8080 -connect example.com:443 พิมพ์ห่วงโซ่ออกมา
ขั้นตอนการทำงานเชิงปฏิบัติ
ดึงรายการ กรองตามประเทศและโปรโตคอล กระจายการทดสอบทั้งห้าข้ามกลุ่มงานแบบขนานประมาณ 50 ตัว และเก็บผู้รอดชีวิต จากผู้สมัครดิบ 100 ราย การรันทั่วไปจะให้รายการที่ใช้งานได้ 5–15 รายการ อัตราการเสื่อมสภาพประมาณ 30–60 นาทีสำหรับ HTTP และ HTTPS นานกว่าเล็กน้อยสำหรับ SOCKS — กำหนดเวลาการรีเฟรชตามจังหวะนั้นและป้อนชุดที่รอดชีวิตเข้าสู่เครื่องมือขูดข้อมูลหรือการกำหนดค่าเบราว์เซอร์ของคุณ แคชผลการทดสอบตลอดอายุของหนึ่งชุดและทดสอบซ้ำในชุดถัดไป