تبدیل curl به PHP

curl2code دستورات curl را با استفاده از افزونه cURL یا کتابخانه Guzzle به کد PHP تبدیل می‌کند. این تبدیل برای حفظ حریم خصوصی کامل، در مرورگر شما از طریق WebAssembly انجام می‌شود. برای زبان‌های مشابه سمت سرور، مبدل curl به Python یا curl به Ruby ما را بررسی کنید. در ادامه مثال‌های کاربردی PHP آورده شده است.

نحوه کپی کردن curl از مرورگر

  1. 1

    باز کردن DevTools

    کلید F12 یا Ctrl+Shift+I را فشار دهید تا ابزارهای توسعه‌دهنده مرورگر باز شوند.

  2. 2

    رفتن به تب Network

    روی تب Network کلیک کنید و عملیاتی که باعث ارسال درخواست HTTP می‌شود را انجام دهید.

  3. 3

    کپی به عنوان cURL

    روی درخواست راست‌کلیک کنید ← CopyCopy as cURL. سپس آن را در بالا جایگذاری کنید.

سوالات متداول

PHP cURL چیست؟

اکستنشن curl در PHP یک رپر (wrapper) برای کتابخانه C libcurl است که قابلیت‌های قدرتمند کلاینت HTTP را فراهم می‌کند. این اکستنشن تقریباً از تمام پروتکل‌ها و ویژگی‌هایی که خود curl پشتیبانی می‌کند، پشتیبانی می‌نماید. با curl_init() مقداردهی اولیه کنید، گزینه‌ها را با curl_setopt() تنظیم کنید و با curl_exec() اجرا نمایید. curl2code همچنین از Guzzle و Requests به عنوان جایگزین پشتیبانی می‌کند.

PHP cURL در مقابل Guzzle در مقابل Requests — از کدام استفاده کنم؟

کتابخانه PHP cURL سطح پایین و داخلی است — نیازی به Composer ندارد. Guzzle محبوب‌ترین کلاینت HTTP در PHP با پشتیبانی از PSR-7، میان‌افزار (middleware) و درخواست‌های ناهمگام است. Requests یک API ساده برای کارهای سریع ارائه می‌دهد. برای پروژه‌های مدرن از Guzzle و برای تنظیمات حداقلی از PHP cURL استفاده کنید. برای گزینه‌های مشابه در زبان‌های دیگر، curl به Python را ببینید.

چگونه احراز هویت را در PHP مدیریت کنیم؟

با cURL: curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer token']). برای Basic auth: curl_setopt($ch, CURLOPT_USERPWD, 'user:pass'). کتابخانه Guzzle از 'auth' => ['user', 'pass'] یا 'headers' => ['Authorization' => 'Bearer token'] استفاده می‌کند. curl2code فلگ‌های -u و Bearer را به طور خودکار مدیریت می‌کند.

چگونه داده‌های فرم چندبخشی را در PHP ارسال کنیم؟

با cURL: یک آرایه حاوی CURLOPT_POSTFIELDS برای فایل‌ها به new CURLFile('path') پاس دهید. Guzzle از گزینه 'multipart' با آرایه‌های فیلد/فایل استفاده می‌کند. curl2code فلگ‌های -F را به فرمت صحیح برای هر نوع کتابخانه PHP تبدیل می‌کند.

چگونه خطاهای HTTP را در PHP مدیریت کنیم؟

با cURL: curl_errno($ch) را برای خطاهای انتقال چک کنید و وضعیت پاسخ را به صورت دستی پارس کنید. Guzzle در صورت شکست RequestException پرتاب می‌کند — ClientException (4xx)، ServerException (5xx) و ConnectException (شبکه) را بگیرید. همیشه curl_close($ch) را برای آزاد کردن منابع فراخوانی کنید.

چگونه درخواست‌های HTTP ناهمگام در PHP ارسال کنیم؟

کتابخانه Guzzle از طریق $client->requestAsync('GET', $url) که یک Promise برمی‌گرداند، از حالت ناهمگام پشتیبانی می‌کند. از Promise\Utils::all() برای درخواست‌های همزمان استفاده کنید. با cURL، از توابع curl_multi_* برای اجرای موازی استفاده کنید. برای PHP واقعاً ناهمگام، فریم‌ورک‌های ReactPHP یا Amp را با کلاینت‌های HTTP آن‌ها در نظر بگیرید.

چگونه مهلت زمانی را در PHP تنظیم کنیم؟

با cURL: مقدار CURLOPT_CONNECTTIMEOUT برای اتصال و CURLOPT_TIMEOUT برای کل زمان درخواست. Guzzle مقادیر 'connect_timeout' و 'timeout' را به ثانیه می‌پذیرد. این‌ها مستقیماً به گزینه‌های --connect-timeout و --max-time در curl نگاشت می‌شوند.

چگونه از یک پروکسی در PHP استفاده کنیم؟

با cURL: curl_setopt($ch, CURLOPT_PROXY, 'http://proxy:8080'). برای SOCKS5: CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5 را اضافه کنید. Guzzle از گزینه 'proxy' => 'http://proxy:8080' استفاده می‌کند. curl2code فلگ‌های -x و --proxy را به کد PHP مربوطه تبدیل می‌کند.

چگونه یک درخواست POST با بدنه JSON در PHP ارسال کنیم؟

یک دستور curl POST مانند curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL را با استفاده از curl2code به PHP تبدیل کنید. کد تولید شده از curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)) استفاده می‌کند. curl2code به طور خودکار فلگ‌های -d/--data با محتوای JSON را تشخیص داده و هدر Content-Type مناسب را در کد cURL تنظیم می‌کند.

چگونه احراز هویت با Bearer token را در PHP اضافه کنیم؟

دستور curl -H "Authorization: Bearer YOUR_TOKEN" URL را به curl2code بدهید تا کد cURL را با هدر احراز هویت تولید کند: curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer TOKEN']). curl2code توکن‌های Bearer را از هر دو فلگ -H "Authorization: Bearer ..." و --oauth2-bearer تشخیص می‌دهد. برای Basic auth، از -u user:pass استفاده کنید.

چگونه هدر Content-Type را در PHP تنظیم کنیم؟

curl2code دستور curl -H "Content-Type: application/json" URL را به کد cURL با هدر مناسب تبدیل می‌کند: curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']). برای داده‌های -d، دستور curl به طور پیش‌فرض از application/x-www-form-urlencoded استفاده می‌کند؛ برای آپلودهای فرم -F، از multipart/form-data استفاده می‌کند. curl2code هر کدام را به API صحیح cURL نگاشت می‌کند.

اکستنشن PHP cURL در مقابل Guzzle — از کدام یک باید استفاده کنم؟

اکستنشن PHP cURL (توابع curl_*) در PHP داخلی است و به هیچ وابستگی اضافی نیاز ندارد — ایده‌آل برای درخواست‌های ساده یا زمانی که می‌خواهید حداقل بار اضافی را داشته باشید. Guzzle یک HTTP client کامل با قابلیت‌های middleware، درخواست‌های async، پشتیبانی از PSR-7/PSR-18 و تکرار خودکار است. از cURL برای اسکریپت‌های سبک و از Guzzle برای اپلیکیشن‌های پیچیده استفاده کنید. curl2code برای هر دو کد تولید می‌کند — نسخه مورد نظر خود را در منوی کشویی زبان انتخاب کنید.

لینک‌های مفید

راهنماهای curl

تبدیل curl به زبان‌های دیگر