מה המשמעות של 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 מוצלחת ואחריה כשל TLS עשויות להציג connect=200 ו-http=000.
- תגובה מלאה של האתר, למשל 403, היא מקרה אחר: יש תגובת HTTP אמיתית שאפשר לבדוק.
קוד היציאה המדויק וההודעה מצמצמים את הסיבות האפשריות. בדקו אם הכשל אירע באיתור הפרוקסי, בהתחברות לפורט שלו, במשא ומתן על המנהרה או באימות היעד.
אל תצמצמו כל תוצאה לבדיקת סטטוס בלבד
סקריפט ששומר רק http_code משליך את שגיאת התעבורה. שמרו גם את תוצאת התהליך והודעת שגיאה שהוסרו ממנה פרטים רגישים. מנגד, curl יכול להשלים העברה בהצלחה גם כשהאתר מחזיר סטטוס שגיאה, אלא אם משתמשים באפשרות fail מתאימה. תגובת ה-HTTP ותוצאת ההרצה של הלקוח עונות על שאלות שונות.
אל תנסו לתקן 000 באמצעות כיבוי אימות TLS או הוספת כותרת אקראית. קודם זהו איזו פעולה לא הגיעה לתגובה סופית.