Socks5Proxy

วิธีใช้พร็อกซี cURL การตรวจสอบ HTTP และ SOCKS5 Proxy จากบรรทัดคำสั่ง

คู่มือนี้จะอธิบายวิธีการเชื่อมต่อ HTTP Proxy และ SOCKS5 Proxy ของ Socks5Proxy ด้วย cURL การรับรอง username และ password การวัดเวลาตอบสนอง และสคริปต์เชลล์สำหรับตรวจสอบรายการทั้งหมดในครั้งเดียว

เหตุใดการใช้ cURL เพื่อทดสอบพร็อกซีจึงเป็นสิ่งที่ดี?

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

ตัวอย่างใช้ IP 198.51.100.23 พอร์ต HTTP 8000 พอร์ต SOCKS5 1080 ชื่อผู้ใช้ spx_user และรหัสผ่าน spx_pass

How to connect to an HTTP proxy?

ใส่ที่อยู่ proxy ในตัวเลือก -x (หรือ --proxy) สามารถใส่ username และ password ในที่อยู่หรือแยกด้วยตัวเลือก -U เมื่อร้องขอที่อยู่ HTTPS cURL จะสร้าง tunnel ด้วย CONNECT และส่งคำขอที่เข้ารหัสภายใน

# user and password inside the proxy URL
curl -x http://spx_user:spx_pass@198.51.100.23:8000 https://api.ipify.org

# or with -U
curl -x http://198.51.100.23:8000 -U spx_user:spx_pass https://api.ipify.org

จะเชื่อมต่อ SOCKS5 Proxy อย่างไร

--socks5-hostname จะ resolve ชื่อโดเมนที่ฝั่ง proxy ทำให้คำขอ DNS ของเซิร์ฟเวอร์คุณไม่ปรากฏภายนอก และชื่อจะถูก resolve ตามประเทศของ proxy ส่วน --socks5 จะ resolve ชื่อที่เซิร์ฟเวอร์ของคุณก่อนส่งเฉพาะ IP ไปยัง proxy แนะนำให้ใช้ --socks5-hostname ในกรณีส่วนใหญ่

ใช้รูปแบบที่อยู่ socks5h:// กับ -x ก็ได้ผลลัพธ์เหมือนกัน

# DNS is resolved by the proxy
curl --socks5-hostname 198.51.100.23:1080 --proxy-user spx_user:spx_pass https://api.ipify.org

# same thing with a proxy URL
curl -x socks5h://spx_user:spx_pass@198.51.100.23:1080 https://api.ipify.org

วิธีดูเวลาตอบสนองและสถานะพร้อมกัน?

ใช้ตัวเลือก -w เพื่อแสดงเวลาเชื่อมต่อ, เวลาจนถึงไบต์แรก, เวลาทั้งหมด, และรหัสการตอบสนองในหนึ่งบรรทัด มีประโยชน์สำหรับการเปรียบเทียบความเร็ว proxy ระหว่างประเทศหรือแยกแยะว่าเว็บไซต์หรือ proxy ช้า

ใช้ -o /dev/null เพื่อทิ้งเนื้อหาและ -s เพื่อปิดการแสดงความคืบหน้า จะแสดงผลลัพธ์ที่สะอาดตา

curl -s -o /dev/null \
  -x http://spx_user:spx_pass@198.51.100.23:8000 \
  -w "code=%{http_code} connect=%{time_connect}s ttfb=%{time_starttransfer}s total=%{time_total}s\n" \
  https://example.com/

จะตรวจสอบรายการทั้งหมดพร้อมกันได้อย่างไร?

รับรายการด้วย API แล้วเรียก cURL ในแต่ละบรรทัดเพื่อตรวจสอบสถานะของทุกพร็อกซี่พร้อมกัน สคริปต์ด้านล่างรับรายการในรูปแบบ ip:port:user:pass แล้วพิมพ์ IP และเวลาที่ใช้ในแต่ละบรรทัด ใส่เวลาจำกัดเพื่อไม่ให้หยุดที่บรรทัดที่ไม่มีคำตอบ

#!/bin/sh
KEY="YOUR_API_KEY"
curl -s -H "Authorization: Bearer $KEY" \
  "https://socks5proxy.io/api/v1/proxies/download?format=ip:port:user:pass&protocol=http" > proxies.txt

while IFS=: read -r ip port user pass; do
  out=$(curl -s -m 15 -x "http://$user:$pass@$ip:$port" -w " %{time_total}s" https://api.ipify.org)
  echo "$ip:$port $out"
done < proxies.txt

เรียก API ด้วย cURL ได้ไหม

ใช่ การตรวจสอบยอดคงเหลือ รายการแผนที่ใช้งานอยู่ และรายการ proxy ทั้งหมดสามารถเรียกได้ด้วย header Authorization: Bearer เพียงอันเดียว สามารถใช้เครื่องมือเช่น jq เพื่อเลือกเฉพาะคอลัมน์ที่ต้องการจาก JSON response

curl -H "Authorization: Bearer YOUR_API_KEY" https://socks5proxy.io/api/v1/account
curl -H "Authorization: Bearer YOUR_API_KEY" "https://socks5proxy.io/api/v1/proxies?country=us&protocol=socks5"

สามารถกำหนดพร็อกซีด้วยตัวแปรสภาพแวดล้อมได้หรือไม่

ใช่ cURL และเครื่องมือ command line จำนวนมากอ่านตัวแปรสภาพแวดล้อม http_proxy, https_proxy, all_proxy กำหนดค่าใน shell ครั้งเดียว เครื่องมือเช่น cURL, wget, pip ที่รันใน shell นั้นจะใช้ proxy เดียวกัน สำหรับ SOCKS5 เพิ่มที่อยู่ socks5h:// ใน all_proxy

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

export https_proxy="http://spx_user:spx_pass@198.51.100.23:8000"
export http_proxy="$https_proxy"
export no_proxy="localhost,127.0.0.1"
curl https://api.ipify.org

# SOCKS5 for every tool that reads all_proxy
export all_proxy="socks5h://spx_user:spx_pass@198.51.100.23:1080"

How to compare HTTP proxy and SOCKS5 proxy results?

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

IP การตอบสนองควรจะเหมือนกันทั้งสองวิธี หากต่างกัน แสดงว่าคุณใช้พอร์ตจากรายการอื่นโดยไม่ได้ตั้งใจ โปรดตรวจสอบรายการอีกครั้ง

for p in "http://spx_user:spx_pass@198.51.100.23:8000" "socks5h://spx_user:spx_pass@198.51.100.23:1080"; do
  curl -s -m 15 -x "$p" -w "  %{time_total}s\n" https://api.ipify.org
done

เซิร์ฟเวอร์ตรวจสอบ IP สำหรับ IP authorization อย่างไร?

ค่าที่จะลงทะเบียนสำหรับการรับรอง IP คือ IPv4 สาธารณะที่เซิร์ฟเวอร์ของคุณใช้เพื่อเชื่อมต่ออินเทอร์เน็ต คุณสามารถตรวจสอบค่านี้ได้ทันทีโดยรันคำสั่ง curl -4 https://api.ipify.org โดยไม่ใช้พร็อกซี เมื่อลงทะเบียนค่านี้ในช่องการรับรอง IP ในแดชบอร์ด คุณสามารถเชื่อมต่อได้โดยไม่ต้องใช้ชื่อผู้ใช้และรหัสผ่านจากเซิร์ฟเวอร์นั้น

curl -4 -s https://api.ipify.org

สามารถใช้พร็อกซีเพื่อดูเนื้อหาบนเว็บไซต์ HTTPS ได้หรือไม่?

When requesting HTTPS addresses with an HTTP proxy, cURL first creates a CONNECT tunnel to the target server, then establishes an encrypted connection directly with the target server within the tunnel. The proxy only knows which server to connect to, and the content is encrypted and unreadable. Running with the -v option shows the CONNECT stage and subsequent encrypted connection process.

SOCKS5 ก็เหมือนกัน พร็อกซีจะส่งผ่านการเชื่อมต่อตามปกติ และการเข้ารหัสจะเกิดขึ้นระหว่าง cURL และเซิร์ฟเวอร์เป้าหมาย ดังนั้นจึงไม่แนะนำให้ใช้ตัวเลือกตรวจสอบใบรับรอง (-k) เนื่องจากใบรับรองของเซิร์ฟเวอร์เป้าหมายจะถูกตรวจสอบตามปกติแม้ว่าจะใช้พร็อกซี

การใช้ --socks5-hostname ชื่อโดเมนที่ต้องการเชื่อมต่อจะถูก resolve โดย proxy ทำให้ไม่เหลือบันทึกคำขอ DNS จากเซิร์ฟเวอร์ของคุณ

curl -v -o /dev/null -x http://spx_user:spx_pass@198.51.100.23:8000 https://example.com/ 2>&1 | grep -E "CONNECT|HTTP/|SSL connection"

คุณจะอ่านข้อผิดพลาดของ cURL อย่างไร?

Received HTTP code 407 from proxy after CONNECT คือข้อผิดพลาดในการยืนยันตัวตน กรุณาตรวจสอบชื่อผู้ใช้และรหัสผ่าน หรือเซิร์ฟเวอร์ IP ที่ลงทะเบียนในการยืนยัน IP หากรหัสผ่านมี @ หรือ : อย่าใส่ในที่อยู่ แต่ให้ใช้ -U หรือ --proxy-user แทน

Failed to connect or Connection timed out occurs when the port is incorrect or your server's firewall blocks outgoing connections. Use HTTP ports for HTTP addresses and SOCKS5 ports for SOCKS5, and ensure outgoing ports are open. The -v option shows the connection process step-by-step, making it easier to identify the cause.

วิธีใช้พร็อกซี cURL การตรวจสอบการเชื่อมต่อ -x และ SOCKS5 | Socks5Proxy