ماذا تعني HTTP 000 عند اختبار بروكسي باستخدام curl؟
000 ليست حالة HTTP أرسلها الموقع. اقرأ رمز خروج curl ورسالة الخطأ إلى جانب حقل HTTP الظاهر في النتيجة.
عندما يعرض اختبار curl القيمة 000 لحالة HTTP، فهذا يعني أنه لم يحصل على رمز استجابة HTTP نهائي يمكن الإبلاغ عنه. لم يرسل الموقع حالة HTTP فعلية اسمها 000.
سجّل الخطأ أيضًا
يطبع هذا المثال لصدفة POSIX حقل HTTP النهائي وحقل CONNECT ورمز خروج عملية curl:
curl --proxy http://203.0.113.10:8080 --noproxy '' --connect-timeout 5 --max-time 15 --silent --show-error --output /dev/null --write-out 'http=%{http_code} connect=%{http_connect}\n' https://example.com/
result=$?
printf 'curl_exit=%s\n' "$result"
استبدل نقطة الاتصال في المثال ببروكسي HTTP الذي تستخدمه أو بمرشح من قائمة بروكسيات HTTP. أبقِ show-error مفعّلًا؛ فرسالة الخطأ غالبًا هي الجزء الأكثر فائدة. يكون حقل CONNECT ذا صلة عند استخدام نفق، وليس حالة نهائية ثانية من الموقع.
اقرأ القيم معًا
- قد يؤدي فشل الاتصال بالبروكسي إلى بقاء حقل HTTP عند 000.
- قد يحدث الشيء نفسه عند انتهاء المهلة قبل تلقي استجابة.
- قد تظهر connect=200 وhttp=000 إذا نجحت استجابة CONNECT ثم حدث فشل في TLS.
- أما استجابة الموقع المكتملة، مثل 403، فهي حالة مختلفة: توجد استجابة HTTP فعلية يمكن فحصها.
يساعد رمز الخروج الدقيق والرسالة في تضييق نطاق السبب. تحقّق مما إذا كان الفشل قد وقع عند العثور على البروكسي، أو الاتصال بمنفذه، أو التفاوض على النفق، أو التحقق من الوجهة.
لا تختزل كل نتيجة في فحص الحالة وحده
البرنامج النصي الذي يحفظ http_code فقط يهمل خطأ النقل. احفظ معه نتيجة العملية ورسالة خطأ أُزيلت منها البيانات الحساسة. وفي المقابل، قد يُتم curl النقل بنجاح رغم أن الموقع يعيد حالة خطأ، ما لم تستخدم خيار fail مناسبًا. تجيب استجابة HTTP ونتيجة تنفيذ العميل عن سؤالين مختلفين.
لا تحاول إصلاح 000 بتعطيل التحقق من TLS أو إضافة ترويسة عشوائية. حدّد أولًا العملية التي لم تصل إلى استجابة نهائية.