
أداة سطر أوامر تغلف curl لتصور تحليلات زمنية لطلبات HTTP (DNS، TCP، TLS، معالجة الخادم) مع إخراج JSON منظم وفحص حدود SLO لتشخيص أداء الشبكة.

httpstat يصور إحصائيات curl(1) بطريقة جميلة وواضحة.
إنه نص برمجي بايثون ملف واحد🌟 ليس له أي تبعيات👏 ومتوافق مع بايثون 3🍻.
--format json / jsonl للاستهلاك الآلي بنظام إصدارات v1 مستقر--slo total=500,connect=100 يخرج برمز 4 عند المخالفة--save path.json لسير العمل متعددة الخطواتهناك ثلاث طرق للحصول على httpstat:
تنزيل البرنامج النصي مباشرة: wget https://raw.githubusercontent.com/reorx/httpstat/master/httpstat.py
عبر pip: pip install httpstat
عبر homebrew (macOS فقط): brew install httpstat
لمستخدمي Windows، يُقترح إصدار Go لـ @davecheney. → رابط التحميل
يأتي httpstat مع مهارة وكيل تعلم مساعدي البرمجة الذكيين (Claude Code, Cursor, إلخ) كيفية استخدام httpstat لتشخيص أداء HTTP — التثبيت التلقائي، تحديد الاختناقات، واقتراحات إصلاح قابلة للتنفيذ.
قم بتثبيت المهارة في مشروعك:
npx skills add reorx/httpstat
بمجرد التثبيت، سيقوم وكيلك تلقائيًا باستخدام httpstat عندما تطرح أسئلة مثل "لماذا هذه API بطيئة؟" أو "تصحيح زمن استجابة هذا النقطة النهائية".
ببساطة:
python httpstat.py httpbin.org/get
إذا تم التثبيت عبر pip أو brew، يمكنك استخدام httpstat كأمر:
httpstat httpbin.org/get
نظرًا لأن httpstat هو غلاف لـ cURL، يمكنك تمرير أي خيار يدعمه cURL بعد الرابط (باستثناء -w, -D, -o, -s, -S المستخدمة بالفعل بواسطة httpstat):
httpstat httpbin.org/post -X POST --data-urlencode "a=b" -v
استخدم --format (-f) للحصول على مخرجات قابلة للقراءة آليًا:
httpstat httpbin.org/get --format json
{
"schema_version": 1,
"url": "httpbin.org/get",
"ok": true,
"exit_code": 0,
"response": {
"status_line": "HTTP/2 200",
"status_code": 200,
"remote_ip": "...",
"remote_port": "443",
"headers": {"Content-Type": "application/json", "Server": "nginx", "...": "..."}
},
"timings_ms": {
"dns": 5, "connect": 10, "tls": 15,
"server": 50, "transfer": 20, "total": 100,
"namelookup": 5, "initial_connect": 15,
"pretransfer": 30, "starttransfer": 80
},
"speed": { "download_kbs": 1234.5, "upload_kbs": 0.0 },
"slo": null
}
استخدم --format jsonl للحصول على JSON مضغوط في سطر واحد (مفيد لخطوط السجلات).
تحقق من أوقات الاستجابة مقابل الحدود. يخرج برمز 4 عند المخالفة:
httpstat httpbin.org/get --slo total=500,connect=100,ttfb=200
المفاتيح المدعومة: total, connect, ttfb (الوقت حتى أول بايت), dns, tls.
في الوضع الجميل، يتم طباعة المخالفات باللون الأحمر في نهاية المخرجات.
في وضع JSON، تظهر المخالفات في حقل slo:
{
"slo": {
"pass": false,
"violations": [
{ "key": "total", "threshold_ms": 500, "actual_ms": 823 }
]
}
}
اكتب مخرجات JSON منظمة إلى ملف (يعمل مع أي --format):
httpstat httpbin.org/get --save result.json
httpstat httpbin.org/get --format json --save result.json
يحتوي httpstat على مجموعة من متغيرات البيئة للتحكم في سلوكه. إليك بعض الأمثلة على الاستخدام، يمكنك أيضًا تشغيل httpstat --help لرؤية الشرح الكامل.
HTTPSTAT_SHOW_BODY
اضبط على true لعرض جسم الاستجابة في المخرجات، لاحظ أن طول الجسم محدود بـ 1023 بايت، وسيتم اقتطاعه إذا تجاوز. القيمة الافتراضية هي false.
HTTPSTAT_SHOW_IP
افتراضيًا، يظهر httpstat عنوان IP/المنفذ عن بعد ومحلي. اضبط على false لتعطيل هذه الميزة. القيمة الافتراضية هي true.
HTTPSTAT_SHOW_SPEED
اضبط على true لعرض سرعة التحميل والرفع. القيمة الافتراضية هي false.
HTTPSTAT_SHOW_SPEED=true httpstat http://cachefly.cachefly.net/10mb.test
...
speed_download: 3193.3 KiB/s, speed_upload: 0.0 KiB/s
HTTPSTAT_SAVE_BODY
افتراضيًا، يخزن httpstat الجسم في ملف مؤقت، اضبط على لتعطيل هذه الميزة. القيمة الافتراضية هي .
للتسهيل، يمكنك تصدير هذه المتغيرات في ملف .zshrc أو .bashrc، مثال:
export HTTPSTAT_SHOW_IP=false
export HTTPSTAT_SHOW_SPEED=true
export HTTPSTAT_SAVE_BODY=false
فيما يلي بعض التطبيقات بعدة لغات:
هذا بديل Go لـ httpstat، وهو مكتوب بلغة Go نقية ولا يعتمد على برامج خارجية. اختره إذا كنت تحب التنفيذ الثنائي الصلب (في الواقع أنا أحب ذلك).
Go (مكتبة): tcnksm/go-httpstat
بالإضافة إلى كونه أداة سطر أوامر، يُستخدم هذا المشروع كمكتبة للمساعدة في تصحيح زمن استجابة طلبات HTTP في كود Go، مفيد جدًا ومدروس، راجع المزيد في هذا المقال
Bash: b4b4r07/httpstat
هذا هو بالضبط ما أردت فعله في البداية، لكنني استسلمت لعدم ثقتي في مهارتي في bash، عمل رائع!
Node: yosuke-furukawa/httpstat
تطبيق PHP بواسطة @talhasch
بعض كتل التعليمات البرمجية في httpstat منسوخة من مشاريعي الأخرى، ألقِ نظرة:
reorx/python-terminal-color مكتبة ملف واحد جاهزة لطباعة الألوان الطرفية.
reorx/getenv تعريف متغير البيئة مع النوع.
falsetrueHTTPSTAT_CURL_BIN
أشر إلى مسار ملف cURL الثنائي لاستخدامه. القيمة الافتراضية هي curl من $PATH للشيل الحالي.
هذا المثال يستخدم cURL المثبت عبر brew لإجراء طلب HTTP2:
HTTPSTAT_CURL_BIN=/usr/local/Cellar/curl/7.50.3/bin/curl httpstat https://http2.akamai.com/ --http2
HTTP/2 200
...
يجب تجميع cURL مع nghttp2 لتفعيل ميزة http2 (#12).
HTTPSTAT_METRICS_ONLY
إذا تم ضبطه على true، فسيقوم httpstat فقط بإخراج المقاييس بتنسيق json، وهذا مفيد إذا كنت تريد تحليل البيانات بدلاً من قراءتها.
ملاحظة: هذا مُحتفظ به للتوافق مع الإصدارات السابقة. يُفضل استخدام
--format jsonبدلاً من ذلك.
HTTPSTAT_DEBUG
اضبط على true لرؤية سجلات التصحيح. القيمة الافتراضية هي false.
NO_COLOR
عند ضبطه (على أي قيمة)، يعطل جميع المخرجات الملونة. انظر no-color.org للاتفاقية.
NO_COLOR=1 httpstat httpbin.org/get