كيفية الاستخدام
- انسخ طلبًا بصيغة curl، مثلاً من أدوات المطور في متصفحك (تبويب Network، انقر بزر الماوس الأيمن، ثم Copy as cURL) أو من توثيق API.
- ألصقه في المربع. لا بأس بمتابعة الأسطر باستخدام \.
- اختر JavaScript fetch أو Node.js axios أو Python requests أو PHP cURL.
- اقرأ أي ملاحظات أسفل الكود، ثم انسخ الناتج أو نزّله.
كيف تعمل الأداة
يقوم المحوّل أولاً بتقسيم الأمر إلى كلمات كما تفعل صدفة POSIX: يتم فهم علامات الاقتباس المفردة، وعلامات الاقتباس المزدوجة مع شرطات التخطي الخلفية، وسلاسل $'…' واستمرار الأسطر بشرطة مائلة خلفية. لا يتم توسيع متغيرات الصدفة مثل $TOKEN؛ بل تبقى كنص.
خيارات curl المدعومة: عنوان URL (أو --url)، و-X/--request، و-H/--header، و-d/--data، و--data-ascii، و--data-raw، و--data-binary، و--data-urlencode، و--json، و-F/--form و--form-string (الحقول ورفع ملفات @file مع ;type=)، و-u/--user، و-G/--get، و-I/--head، و-A/--user-agent، و-e/--referer، و-b/--cookie (سلاسل cookie)، و-L/--location و--compressed. يمكن دمج الخيارات القصيرة، كما في -sSL، ويمكن إلحاق القيم، كما في -XPOST.
تتبع القواعد curl: يتم ضم عدة قيم -d مع &؛ وتجعل البيانات الطلب POST ما لم يحدد -X أو -G خلاف ذلك؛ ويضيف -G البيانات إلى عنوان URL كسلسلة استعلام؛ ويضبط --json ترويسيتي Content-Type وAccept إلى application/json. عندما يكون الجسم JSON وتوضح ترويسة Content-Type ذلك، يرسل الكود كائنًا حقيقيًا (json= في Python، ومصفوفة مع json_encode في PHP) بدلاً من سلسلة نصية مُهرَّبة. بالنسبة لنماذج multipart، تُترك ترويسة Content-Type للمكتبة ليكون الحد الفاصل صحيحًا.
يتم تجاهل -k/--insecure عمدًا مع ملاحظة توضح ذلك. الخيارات التي تغير فقط مخرجات curl نفسها (-s، و-S، و-v، و-i، و-o، و--fail وما شابهها) يتم تجاهلها مع ملاحظة. أي خيار آخر يُنتج خطأً واضحًا يسمّيه، بدلاً من كود يفعل شيئًا مختلفًا بصمت. يبقى فرق واحد: يتبع curl عمليات إعادة التوجيه فقط مع -L، بينما تتبعها fetch وaxios وrequests افتراضيًا؛ ويتبعها كود PHP فقط عند إعطاء -L.
تكتب الأداة الكود فقط. لا ترسل الطلب أبدًا، لذا لا تُستخدم الرموز وكلمات المرور الموجودة في الأمر في أي مكان.
أمثلة
إعادة إنتاج طلب متصفح في Python
انسخ استدعاء API فاشلاً من تبويب Network في Chrome بصيغة cURL وحوّله إلى Python requests. تنتقل الترويسات وملفات تعريف الارتباط وجسم JSON معه، لتتمكن من إعادة إنتاج الخطأ في سكربت.
استخدام توثيق API في Node.js
يعرض مرجع API الأمر “curl -u key: https://api.example.com/v1/charges -d amount=2000 -d currency=eur”. تستخدم نسخة axios الخيار auth: { username: "key", password: "" } وجسمًا بترميز نموذج.
رفع ملف في PHP
يتحول الأمر “curl -F 'file=@invoice.pdf;type=application/pdf' -F 'note=March' https://x.io/upload” إلى CURLOPT_POSTFIELDS مع new CURLFile('invoice.pdf', 'application/pdf') وحقل note.
الأسئلة الشائعة
هل ترسل هذه الأداة طلبي؟
لا. تحلل الأداة نص الأمر وتكتب الكود فقط. لا يُرسل أي طلب، لذا لا تُستخدم مفاتيح API أو ملفات تعريف الارتباط الموجودة في الأمر ولا تُخزَّن.
لماذا لا يُحوَّل الخيار -k/--insecure؟
إيقاف التحقق من الشهادات يجعل الاتصال عرضة للاعتراض. يُبقي الكود المُنشأ على التحقق مفعّلاً؛ إذا كانت شهادة الخادم غير موثوقة، فقم بإصلاح الشهادة أو مخزن الثقة بدلاً من ذلك.
لماذا تظهر لي رسالة «option is not supported»؟
يحوّل المُحوِّل الخيارات التي يمكنه إعادة إنتاج معناها بدقة فقط. تُرفض البروكسيات وشهادات العميل وملفات تعريف الارتباط والخيارات المشابهة حتى لا تحصل على كود يتصرف بشكل مختلف عن curl.
هل يعمل مع أوامر Windows cmd؟
الأوامر المنسوخة بصيغة “cURL (bash)” تعمل بشكل أفضل. يستخدم Windows cmd الرمز ^ لمتابعة السطر واقتباسًا مختلفًا؛ تُقبل ^ في نهايات الأسطر، لكن قد لا تُقبل حالات تهريب cmd الأخرى.
الخصوصية
يتم تحليل الأمر في متصفحك فقط ولا يُرسل أي طلب. لا يتم رفع أي شيء أو تخزينه أو تضمينه في التحليلات.