Socks5Proxy

طريقة استخدام cURL مع البروكسي، التحقق من اتصال HTTP وSOCKS5 من سطر الأوامر

يشرح هذا الدليل كيفية الاتصال ببروكسي HTTP وSOCKS5 من Socks5Proxy باستخدام cURL، والمصادقة باسم المستخدم وكلمة المرور، وقياس وقت الاستجابة، ونص shell للتحقق من القائمة بأكملها مرة واحدة.

لماذا يُفضل استخدام cURL لاختبار البروكسي؟

cURL متوفر في معظم الخوادم والبيئات، مما يجعله أسرع طريقة للتحقق من عمل البروكسي.

يستخدم المثال عنوان IP 198.51.100.23 ومنفذ HTTP 8000 ومنفذ SOCKS5 1080 واسم المستخدم spx_user وكلمة المرور spx_pass.

كيفية الاتصال بـ HTTP بروكسي؟

ضع عنوان البروكسي في خيار -x (أو --proxy). يمكنك إدخال اسم المستخدم وكلمة المرور داخل العنوان أو استخدام خيار -U لإدخالهما بشكل منفصل. عند طلب عنوان HTTPS، يقوم cURL بإنشاء نفق باستخدام 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؟

--socks5-hostname يقوم بالتحقق من اسم النطاق من خلال البروكسي. لن تظهر طلبات DNS من خادمك للخارج، وسيتم التحقق من الأسماء بناءً على الدولة التي يوجد بها البروكسي. --socks5 يقوم بالتحقق من الأسماء على خادمك ثم يرسل فقط IP إلى البروكسي. في معظم الحالات، نوصي باستخدام --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 يسمح لك بطباعة وقت الاتصال، الوقت حتى أول بايت، الوقت الكامل، ورمز الاستجابة في سطر واحد. هذا مفيد لمقارنة سرعة البروكسي في دول مختلفة، أو لتحديد ما إذا كان الموقع البطيء أو البروكسي هو السبب.

استخدم -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؟

نعم. يمكنك التحقق من الرصيد، والحصول على قائمة الخطط النشطة، وقائمة البروكسي باستخدام رأس Authorization: Bearer واحد. يمكن استخدام أدوات مثل jq لتصفية الأعمدة المطلوبة من الردود JSON.

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 والعديد من أدوات سطر الأوامر تقرأ المتغيرات البيئية http_proxy، https_proxy، وall_proxy. عند تحديدها في shell، تستخدم جميع الأدوات مثل cURL، wget، وpip نفس البروكسي. لاستخدام 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"

كيفية مقارنة نتائج HTTP بروكسي و SOCKS5 بروكسي؟

يمكنك مقارنة أوقات الاستجابة وعناوين 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

كيف يمكن للخادم التحقق من IPs المصادقة؟

القيمة التي يتم تسجيلها لتفويض IP هي عنوان IPv4 العام الذي يستخدمه خادمك للاتصال بالإنترنت. يمكنك التحقق من هذه القيمة فورًا عن طريق تشغيل curl -4 https://api.ipify.org بدون بروكسي. قم بتسجيل هذه القيمة في قسم تفويض IP في لوحة التحكم، وسيتم الاتصال من هذا الخادم بدون اسم مستخدم أو كلمة مرور.

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

هل يمكن لبروكسي رؤية محتوى مواقع HTTPS؟

عند طلب عنوان HTTPS عبر HTTP بروكسي، يقوم cURL أولاً بإنشاء نفق CONNECT إلى الخادم الهدف، ثم ينشئ اتصالاً مشفرًا مباشرًا مع الخادم الهدف داخل النفق. البروكسي يعرف فقط إلى أي خادم يتم الاتصال، بينما المحتوى المشفر لا يمكن رؤيته. استخدام الخيار -v يعرض مرحلة CONNECT وعملية الاتصال المشفر بعدها بشكل متسلسل.

SOCKS5 مماثل. ينقل البروكسي الاتصال كما هو، والتشفير يتم بين cURL والخادم المستهدف. لذلك، من الآمن عدم استخدام خيار التحقق من الشهادة (-k) لأن شهادة الخادم المستهدف تظل قيد التحقق حتى عبر البروكسي.

عند استخدام --socks5-hostname، يتم التحقق من اسم النطاق الذي تحاول الاتصال به أيضًا من خلال البروكسي، ولن يظهر في سجل طلبات 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 أو Connection timed out يحدث بسبب منفذ غير متطابق أو جدار حماية في الخادم يمنع الاتصال الخارج. استخدم منفذ HTTP لعنوان HTTP ومنفذ SOCKS5 لعنوان SOCKS5، وتأكد من أن المنفذ الخارجي مفتوح. إضافة الخيار -v يعرض عملية الاتصال خطوة بخطوة لتسهيل تحديد السبب.

طريقة استخدام cURL مع البروكسي، التحقق من اتصال SOCKS5 | Socks5Proxy