آزمایش پروکسی HTTP با curl
با یک آزمایش curl محدود به زمان، اتصال پروکسی، تونل HTTPS، وضعیت پاسخ و قواعد عبور مستقیم را بررسی کنید، بیآنکه پروکسی سراسری دستگاه را تغییر دهید.
127.0.0.1:8080 را با یک نقطهٔ اتصال از سرویس خود یا فهرست پروکسیهای HTTP جایگزین کنید و این فرمان را برای یک مقصد HTTPS بیخطر اجرا کنید:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/نشانی loopback به شنوندهای روی دستگاه خودتان اشاره دارد. این فرمان آن را صریح انتخاب میکند، فهرست دورزدن پروکسی در curl را برای همین فراخوانی خالی میکند و پنج ثانیه برای برقراری اتصال و پانزده ثانیه در مجموع مهلت میدهد. تنظیمات پروکسی مرورگر و سیستم را تغییر نمیدهد.
اگر پوستهٔ شما curl را نام مستعار برنامهای دیگر قرار میدهد، از فایل اجرایی واقعی curl استفاده کنید؛ curl --version ساخت مورد استفاده را مشخص میکند. اگر خود شنونده TLS میخواهد، طرح URL پروکسی را مطابق مستنداتش به کار ببرید.
چهار نتیجه را بخوانید، نه فقط یک علامت موفقیت
- اتصال به پروکسی انتخابشده: نشانی و درگاه در دسترساند.
- پذیرفتهشدن CONNECT: پروکسی تونلی به مقصد HTTPS باز کرده است.
- تأیید گواهی مقصد: TLS با بررسیهای اعتماد مورد انتظار کامل شده است.
- دریافت پاسخ مقصد: وضعیت و محتوای آن را از نظر نتیجهٔ مورد نیاز برنامه بررسی کنید.
ممکن است پس از یک تونل سالم، مقصد پاسخ 403 یا 429 بدهد. curl حتی پس از دریافت پاسخ خطای HTTP هم میتواند با موفقیت خارج شود؛ پس هم وضعیت پاسخ و هم نتیجهٔ خطای curl را ثبت کنید. اتصال TCP یا موفقیت CONNECT بهتنهایی کافی نیست.
نتیجهای فشرده برای مقایسههای تکراری
در پوستهای شبیه Unix، بدنه را کنار بگذارید و وضعیت تونل، وضعیت مقصد، طرف مقابل اتصال و زمان سپریشده را چاپ کنید:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --silent --show-error --output /dev/null --write-out 'http=%{http_code} connect=%{http_connect} peer=%{remote_ip} total=%{time_total}\n' https://example.com/http_connect پاسخ تونل و http_code پاسخ نهایی HTTP را توصیف میکند. remote_ip طرف مقابل اتصال curl است، نه اندازهگیری مستقلی از نشانی خروج پروکسی. در سیستمهای دیگر /dev/null را جایگزین کنید یا بدنهٔ پاسخ را نگه دارید.
اگر آزمایش شکست خورد، مرحلهٔ ناموفق برقراری اتصال یا انتقال را پیدا کنید و همان مقصد را در صورت مجاز بودن مسیر مستقیم مقایسه کنید:
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/--noproxy '*' پروکسیها را دور میزند. شکست بررسی گواهی در هر دو مسیر به مشکل اعتماد مشترک اشاره میکند؛ موفقیت مسیر مستقیم همراه با رد CONNECT به احراز هویت یا سیاست پروکسی اشاره دارد. پیش از اشتراکگذاری خروجی مفصل آن را بازبینی کنید، چون ممکن است اطلاعات شناسایی داشته باشد.
نقطهٔ اتصال، مقصد و برچسب زمانی را همراه نتیجه ذخیره کنید. این مشخص میکند چه چیزی برای همان درخواست کار کرده است؛ دسترسپذیری آینده، حریم خصوصی و کارایی زیر بار به شواهد جداگانه نیاز دارند.