مبدل cURL: تبدیل cURL به Fetch، Python، Axios و بیشتر

یک دستور curl را جای‌گذاری کنید، مثلاً دستوری که از DevTools مرورگر کپی کرده‌اید، و کد آمادهٔ اجرا در 8 زبان بگیرید. هدرها، بدنه‌های JSON، فرم‌ها، آپلود فایل، احراز هویت و کوکی‌ها همه تبدیل می‌شوند.

اجرا در مرورگر شمابدون ثبت‌نامبدون آپلود

تبدیل به
JavaScript fetch

    

    نحوهٔ استفاده از مبدل cURL

    1. یک درخواست را به‌صورت cURL کپی کنید: در DevTools کروم یا فایرفاکس، در تب Network روی درخواست راست‌کلیک کنید ← Copy ← Copy as cURL.
    2. آن را در کادر ورودی جای‌گذاری کنید. دستورهای چندخطی با \، ادامهٔ خط ویندوزی با ^ و رشته‌های $'…' پشتیبانی می‌شوند.
    3. زبان مقصد را انتخاب کنید: JavaScript fetch، Axios، Node.js، Python requests، Python httpx، Go، PHP یا HTTPie.
    4. هشدارهای زیر خروجی را بخوانید. آن‌ها گزینه‌هایی را فهرست می‌کنند که در زبان مقصد معادلی ندارند.
    5. کد را کپی کنید یا به‌صورت فایل دانلود کنید.

    چرا دستورهای curl را به کد تبدیل کنیم؟

    curl زبان مشترک HTTP است. مستندات API مثال‌ها را به‌صورت curl نشان می‌دهند، DevTools مرورگر درخواست‌ها را به‌صورت curl خروجی می‌دهد و تیم‌های پشتیبانی بازتولید مشکل را با curl می‌فرستند. وقتی آن درخواست را داخل یک برنامه می‌خواهید، باید آن را دستی بازنویسی کنید: هر -H را به یک شیء هدر منتقل کنید، -d را به بدنه تبدیل کنید، -u را به احراز هویت basic تبدیل کنید و به یاد داشته باشید که -G داده‌ها را به رشتهٔ کوئری منتقل می‌کند. این مبدل این ترجمه را برای شما انجام می‌دهد و کدی تولید می‌کند که مستقیماً در پروژه قابل جای‌گذاری است.

    گزینه‌های پشتیبانی‌شدهٔ curl

    گزینهتبدیل به
    -X، -I، -Gمتد HTTP (در صورت وجود بدنه، POST در نظر گرفته می‌شود)
    -H، -A، -e، -bهدرها، User-Agent، Referer و کوکی‌ها
    -d، --data-raw، --data-binary، --data-urlencode، --jsonبدنهٔ درخواست: اشیای JSON، فیلدهای فرم یا متن خام
    -Fدادهٔ فرم multipart، شامل آپلودهای @file
    -u، --oauth2-bearerاحراز هویت Basic یا توکن Bearer
    -k، -L، -m، -x، --compressedبررسی TLS، ریدایرکت‌ها، timeout، پراکسی و فشرده‌سازی

    بدنه‌های JSON به شیء واقعی تبدیل می‌شوند

    وقتی درخواست JSON ارسال می‌کند (هدر Content-Type: application/json، گزینهٔ --json یا بدنه‌ای که به‌صورت JSON تجزیه می‌شود)، مبدل به‌جای یک رشتهٔ escape‌شده ساختار دادهٔ بومی تولید می‌کند: JSON.stringify({...}) برای fetch، یک شیء ساده برای Axios و json= با یک dict پایتون (True، False، None) برای requests و httpx. این کار ویرایش payload و جای‌گذاری متغیرها را آسان می‌کند.

    تفاوت‌هایی که باید در نظر داشت

    مرورگرها نمی‌توانند بررسی گواهی را غیرفعال کنند یا یک درخواست را از طریق پراکسی بفرستند، بنابراین -k و -x در کد fetch مرورگر فقط به‌صورت کامنت ظاهر می‌شوند. curl ریدایرکت‌ها را دنبال نمی‌کند مگر اینکه -L را بدهید، در حالی که fetch، requests و Go به‌طور پیش‌فرض آن‌ها را دنبال می‌کنند. بدنه‌ای که با -d و بدون Content-Type ارسال شود، توسط curl به‌صورت فرم کدگذاری می‌شود؛ اگر شبیه JSON باشد، مبدل آن را به‌صورت JSON می‌فرستد و در یک هشدار به شما اطلاع می‌دهد.

    پرسش‌های متداول

    آیا دستور curl من به سرور ارسال می‌شود؟
    خیر. تجزیه و تولید کد کاملاً در مرورگر شما انجام می‌شود. دستورهایی که از DevTools کپی می‌شوند اغلب شامل کوکی و توکن هستند، بنابراین هیچ چیزی آپلود یا ذخیره نمی‌شود.
    چطور یک درخواست را در کروم به‌صورت cURL کپی کنم؟
    DevTools را باز کنید (F12)، به تب Network بروید، روی درخواست راست‌کلیک کنید و Copy → Copy as cURL (bash) را انتخاب کنید. نسخهٔ cmd برای ویندوز هم اینجا کار می‌کند.
    آیا آپلود فایل را پشتیبانی می‌کند؟
    بله. -F name=@file در JavaScript به FormData، در Python به یک dict files=، در Go به mime/multipart و در PHP به CURLFile تبدیل می‌شود. -d @file و -T file بدنهٔ درخواست را از فایل می‌خوانند.
    با گزینه‌هایی که مبدل نمی‌شناسد چه می‌شود؟
    آن‌ها به‌صورت هشدار زیر خروجی فهرست می‌شوند تا هیچ چیزی بی‌صدا حذف نشود. فلگ‌های مربوط به خروجی مانند -s، -v یا -o نادیده گرفته می‌شوند، چون درخواست را تغییر نمی‌دهند.
    در Python از requests استفاده کنم یا httpx؟
    requests گزینهٔ پیش‌فرض و قدیمی برای اسکریپت‌های همگام است. httpx رابط تقریباً یکسانی دارد، پشتیبانی از HTTP/2 و async را اضافه می‌کند و تا وقتی نخواهید ریدایرکت‌ها را دنبال نمی‌کند، که به رفتار curl نزدیک‌تر است.

    ابزارهای مرتبط