กลับไปยังบล็อก

พร็อกซี SOCKS5 กับ HTTP ต่างกันอย่างไร ก่อนตั้งค่าในเบราว์เซอร์ลายนิ้วมือ

ตอนเลือกพร็อกซี คนส่วนใหญ่จะดูแค่ภูมิภาค แบนด์วิดท์กับราคา ไม่ค่อยหยุดดูช่องประเภทว่าเป็น HTTP หรือ SOCKS5 แต่ช่องนี้แหละที่กำหนดสามเรื่อง: คำขอ DNS ส่งออกจากฝั่งไหน ทราฟฟิก UDP ผ่านได้หรือไม่ และพร็อกซีจะแก้ไขส่วนหัวคำขอของคุณหรือเปล่า เรื่องพวกนี้แทบไม่รู้สึกตอนเล่นเน็ตทั่วไป แต่พอตั้งพร็อกซีเข้าไปในสภาพแวดล้อมของ MakoBrowser ซึ่งเป็นโปรแกรมเบราว์เซอร์ลายนิ้วมือ จะส่งผลต่อคุณภาพของสภาพแวดล้อมโดยตรง ข้างล่างนี้จะอธิบายก่อนว่าสองแบบต่างกันตรงไหน แล้วค่อยให้เกณฑ์การเลือกและวิธีตั้งค่าพร้อมตรวจสอบว่าใช้งานได้จริง

ความต่างพื้นฐานของสองแบบ: ตัวหนึ่งเข้าใจภาษาเว็บ อีกตัวแค่ขนส่ง

พร็อกซี HTTP ทำงานในชั้นแอปพลิเคชัน อ่านคำขอ HTTP ที่วิ่งผ่านได้ จึงมีความสามารถในการแก้ไข ส่วน SOCKS5 เป็นแค่ช่องทางส่งต่อทั่วไป ไม่สนใจว่าข้างในบรรจุอะไร

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

จุดยืนของ SOCKS5 ไม่เหมือนกัน RFC 1928 อธิบายว่าเป็น "ชั้นรองระหว่างชั้นแอปพลิเคชันกับชั้นส่งข้อมูล" และนิยามคำสั่งไว้สามแบบคือ CONNECT, BIND และ UDP ASSOCIATE แปลเป็นภาษาคน: มันไม่วิเคราะห์เนื้อหาทราฟฟิก แค่ส่งข้อมูลไปยังปลายทางตามเดิม และสิ่งที่ส่งไม่ใช่แค่ TCP

เมื่อเทียบในการใช้งานจริง ความต่างหลักมีไม่กี่ข้อ:

  • รองรับทราฟฟิกแบบไหน: พร็อกซี HTTP จัดการ HTTP กับ HTTPS ส่วน SOCKS5 ส่งต่อทราฟฟิก TCP ได้ทุกแบบ และรองรับ UDP แบบเนทีฟ
  • แก้ไขคำขอของคุณหรือไม่: พร็อกซี HTTP มองเห็นเนื้อหาคำขอในชั้น HTTP และบาง implementation ยังเติมส่วนหัวอย่าง Via หรือ X-Forwarded-For เข้าไป ส่วน SOCKS5 ไม่แก้เนื้อหาในชั้นแอปพลิเคชัน
  • วิธีการยืนยันตัวตน: พร็อกซี HTTP มักใช้ Basic authentication โดยข้อมูลรับรองเป็นแค่การเข้ารหัส base64 ความปลอดภัยจึงพึ่ง HTTPS ส่วน SOCKS5 มีการเจรจายืนยันตัวตนแยกต่างหาก โดย RFC 1929 นิยามวิธีใช้ชื่อผู้ใช้กับรหัสผ่านไว้โดยเฉพาะ
  • พอร์ตที่ใช้บ่อย: บริการ SOCKS แต่เดิมรันบนพอร์ต 1080 แต่ผู้ให้บริการให้พอร์ตไหนก็กรอกพอร์ตนั้น

ผู้ดูแลนั่งที่โต๊ะทำงานเพื่อตั้งค่าพร็อกซีให้หลายสภาพแวดล้อม โดยบนหน้าจอแสดงประเภทพร็อกซีและสถานะการตรวจสอบ

เมื่อตั้งเข้าโปรแกรมเบราว์เซอร์ลายนิ้วมือแล้ว สิ่งที่มักมีปัญหาจริงคือ DNS กับ UDP

พอเลือกประเภทพร็อกซีผิด สิ่งที่มักพังก่อนไม่ใช่ "เชื่อมต่อไม่ได้" แต่เป็นคำขอ DNS ที่แอบวิ่งผ่านเครือข่ายในเครื่อง

DNS ถูกแปลงที่ฝั่งไหน เป็นตัวกำหนดว่าจะรั่วหรือไม่

โดเมนจะถูกแปลงที่ฝั่งไหนขึ้นอยู่กับการตั้งค่าของไคลเอนต์ ไม่ใช่ชื่อประเภทพร็อกซี SOCKS5 รองรับการส่งโดเมนให้ฝั่งพร็อกซีจัดการโดยตรง โดยใน RFC 1928 มีการนิยามที่อยู่ชนิดโดเมนไว้ แต่ค่าเริ่มต้นของไคลเอนต์ไม่ได้ทำแบบนี้เสมอ อย่าง Firefox ต้องติ๊กถูกที่ "พร็อกซี DNS เมื่อใช้ SOCKS v5" การแปลงจึงจะวิ่งผ่านพร็อกซี ถ้าไม่ติ๊ก ไคลเอนต์จะแปลงโดเมนเป็น IP ในเครื่องก่อนแล้วค่อยส่งให้พร็อกซี คำขอ DNS ก็จะตกอยู่กับผู้ให้บริการในเครื่อง นี่คือต้นตอที่พบบ่อยที่สุดของการรั่วไหลของ DNS ผ่านพร็อกซี

พร็อกซี HTTP โดยทั่วไปจะส่งชื่อโฮสต์ให้พร็อกซีเป็นคนแปลง แต่ก็ใช่ว่าจะเป็นแบบนี้เสมอไป การเชื่อมต่อ WebRTC โดยตรง การ pre-resolve ของเบราว์เซอร์ และทราฟฟิกที่ไม่ได้วิ่งผ่านพร็อกซี ล้วนส่งคำขอแปลงกลับมาที่เครื่องได้ทั้งนั้น

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

การรองรับ UDP สำคัญตอนไหน

เมื่อเบราว์เซอร์เข้าเว็บที่รองรับ HTTP/3 มันจะลองใช้ QUIC ซึ่งอิงกับ UDP ถ้าพร็อกซีรองรับแค่ TCP ทราฟฟิกจะถอยกลับไปใช้ TCP อัตโนมัติ หน้าเว็บยังเปิดได้ตามปกติ ใช้งานประจำวันแทบไม่รู้สึกต่าง สิ่งที่ทำให้ต้องใช้ SOCKS5 จริง ๆ คือตอนที่ในสภาพแวดล้อมยังมีเครื่องมืออื่นที่พึ่งพา UDP อยู่

ถ้าทำแค่การดำเนินงานบนหน้าเว็บ UDP ไม่ใช่ตัวชี้ขาด แต่ถ้าในสภาพแวดล้อมมีเครื่องมือเสริมอื่น มันก็กลายเป็นตัวตัดสิน

ตารางเปรียบเทียบความต่างระหว่างพร็อกซี HTTP กับ SOCKS5: มองเห็นส่วนหัวคำขอ ใช้แค่ TCP กับไม่วิเคราะห์เนื้อหา รองรับ TCP และ UDP และแปลง DNS ได้จากระยะไกล

สถานการณ์แบบไหนควรใช้ SOCKS5 แบบไหน HTTP ก็พอ

การเลือกไม่ต้องดูว่าอันไหน "ขั้นสูงกว่า" ให้ดูแค่โครงสร้างทราฟฟิกของคุณกับประเภทที่ผู้ให้บริการมีให้

มีเกณฑ์ไม่กี่ข้อที่เทียบกันได้ตรง ๆ:

  1. ผู้ให้บริการมีแค่ประเภท HTTP และสถานการณ์เป็นแค่ทราฟฟิกเว็บผ่านเบราว์เซอร์: ใช้พร็อกซี HTTP ไปเลย เพียงพอมาก
  2. ในสภาพแวดล้อมนอกจากเบราว์เซอร์ยังมีเครื่องมือที่พึ่ง UDP หรืออยากลดจุดเปิดเผยของ DNS: ให้เลือก SOCKS5 ก่อน
  3. ต้องให้พร็อกซีทำแคช กรองเนื้อหา หรือตรวจสอบการเข้าถึง: พร็อกซี HTTP เหมาะกว่า เพราะคุณค่าของมันอยู่ที่การอ่านเนื้อหาคำขอได้
  4. แค่เปิดหลายบัญชีเพื่อทำโซเชียลหรือดูแลร้านค้า: ทั้งสองประเภทตอบโจทย์ได้ ความต่างจริง ๆ ไม่ได้อยู่ที่โปรโตคอล

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

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

ตั้งค่าพร็อกซีในโปรแกรมเบราว์เซอร์ลายนิ้วมือ: ตั้งแต่กรอกประเภทจนยืนยันว่าใช้งานได้

การตั้งค่าเองมีแค่ไม่กี่ขั้น แต่ถ้าลำดับผิดจะต้องทำซ้ำไปมา เริ่มจากทดสอบให้ผ่านก่อนนอกสภาพแวดล้อม แล้วค่อยเข้าไปตั้งค่าในสภาพแวดล้อม และสุดท้ายตรวจซ้ำในเบราว์เซอร์

  1. ยืนยันก่อนว่าพร็อกซีใช้ได้จริง หลังได้โฮสต์ พอร์ต ประเภท และข้อมูลรับรองมาแล้ว ให้ทดสอบการเชื่อมต่อนอกสภาพแวดล้อมก่อนหนึ่งครั้ง วิธีนี้จะช่วยแยกว่าเป็น "พร็อกซีใช้ไม่ได้" หรือ "การตั้งค่าสภาพแวดล้อมมีปัญหา"

  2. เปิดการตั้งค่าพร็อกซีของสภาพแวดล้อม แล้วเลือกประเภท ประเภทต้องตรงกับที่ผู้ให้บริการให้มา ถ้าเอาพร็อกซี SOCKS5 ไปกรอกเป็น HTTP จะเชื่อมต่อไม่ได้ทันที แถมข้อความ error มักคลุมเครือ ทำให้เข้าใจผิดว่าเป็นปัญหาของสภาพแวดล้อม

    การผูกและการตรวจสอบพร็อกซีของสภาพแวดล้อมในโปรแกรมเบราว์เซอร์ลายนิ้วมือ MakoBrowser

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

    แผงตั้งค่าพร็อกซีของสภาพแวดล้อมในโปรแกรมเบราว์เซอร์ลายนิ้วมือ MakoBrowser

  4. หลังบันทึก ให้รันการตรวจสอบพร็อกซีภายในสภาพแวดล้อมหนึ่งครั้ง เพื่อยืนยันว่า IP ขาออก ประเทศ และภูมิภาคเป็นไปตามที่คาดไว้

  5. หลังเปิดสภาพแวดล้อม ให้ตรวจซ้ำอีกครั้งในเบราว์เซอร์ เน้นดูสามอย่าง: IP ขาออก ตำแหน่งที่แปลง DNS และ WebRTC

  6. ตรึงให้คงที่ หนึ่งบัญชีควรคู่กับหนึ่งทางออกแบบตายตัว อย่าเปลี่ยนโหนดบ่อย ๆ เพื่อให้ "ดูปลอดภัยกว่า" เพราะการสลับไปมาแบบนั้นเองก็เป็นสัญญาณผิดปกติอย่างหนึ่ง

ขั้นที่ 4 กับขั้นที่ 5 ตรวจคนละเรื่องกัน การตรวจในสภาพแวดล้อมยืนยันว่าสายพร็อกซีเชื่อมต่อได้หรือไม่ ส่วนการตรวจซ้ำในเบราว์เซอร์ยืนยันว่าทราฟฟิกไม่ได้รั่วออกไปทางอื่น ถ้าทำแค่ขั้นแรก จะพลาดทั้ง DNS และ WebRTC ได้ง่าย

สามอย่างที่ต้องตรวจให้ครบหลังตั้งค่าเสร็จ

ตั้งพร็อกซีแล้วไม่ได้แปลว่าใช้งานได้ ต้องยืนยันแยกกันทั้งสามอย่าง: IP ขาออก ตำแหน่งที่แปลง DNS และ WebRTC

  • IP ขาออกกับภูมิภาค: เข้าเว็บตรวจสอบ IP ที่ไหนก็ได้ ยืนยันว่าแสดง IP ของพร็อกซีไม่ใช่ IP ของเครื่อง และภูมิภาคตรงกับที่ผู้ให้บริการระบุ
  • ตำแหน่งที่แปลง DNS: ใช้หน้าตรวจสอบการรั่วไหลของ DNS ดูว่าที่ตั้งของเซิร์ฟเวอร์ที่ใช้แปลงอยู่ที่ไหน ข้อนี้ในสถานการณ์ SOCKS5 ก็เป็นจุดสำคัญเช่นกัน เพราะตำแหน่งที่แปลงขึ้นอยู่กับการตั้งค่าไคลเอนต์ จะคิดเอาเองไม่ได้
  • WebRTC: ตรวจว่าเบราว์เซอร์เผย IP จริงผ่าน WebRTC หรือไม่ ปัญหานี้พบบ่อยในเบราว์เซอร์ทั่วไปที่แก้แค่พร็อกซีแต่ไม่ได้ทำการแยกสภาพแวดล้อม

ยังมีอีกจุดที่มองข้ามง่าย: เขตเวลา ภาษา และภูมิภาคของระบบต้องสอดคล้องกับภูมิภาคของทางออก ถ้าตั้งพร็อกซีเป็นโซนอเมริกา แต่เขตเวลายังเป็น UTC+8 ความขัดแย้งแบบนี้ถูกสังเกตเห็นได้ง่ายกว่าเลือกประเภทโปรโตคอลผิดเสียอีก

การจัดพารามิเตอร์ลายนิ้วมือของ MakoBrowser ให้สอดคล้องกับ IP ของพร็อกซี

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

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

พร็อกซี SOCKS5 กับ HTTP อันไหนเร็วกว่า

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

โปรแกรมเบราว์เซอร์ลายนิ้วมือต้องใช้ SOCKS5 ไหม

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

กรอกพร็อกซีแล้ว ทำไมยังแสดง IP จริง

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

พร็อกซี HTTP เข้าเว็บ HTTPS ได้ไหม

ได้ เบราว์เซอร์จะสร้างอุโมงค์บนพร็อกซีก่อนผ่านเมธอด CONNECT ทราฟฟิกในอุโมงค์ถูกเข้ารหัส พร็อกซีจึงมองไม่เห็นเนื้อหาหน้าจริง ๆ นี่คือวิธีมาตรฐานที่พร็อกซี HTTP จัดการ HTTPS

ประเภทพร็อกซีส่งผลต่อความปลอดภัยของบัญชีไหม

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