این درخواست PHP cURL از کدام پروکسی استفاده کرد؟
پروکسی پیکربندیشده، همتای متصل و خروجی عمومی را که مقصد میبیند از هم جدا کنید.
«پروکسی را بگیر» در یک برنامه PHP cURL میتواند سه چیز متفاوت باشد. پیش از افزودن درخواست دیگر، مشخص کنید کدام مشاهده را لازم دارید.
| پرسش | کجا را ببینیم |
|---|---|
| برنامه کدام نقطه پایانی را پیکربندی کرد؟ | پیکربندیای که به دستگیره داده شد |
| آیا برای این انتقال از پروکسی استفاده شد؟ | اطلاعات انتقال، در جایی که پشتیبانی میشود |
| وبسایت کدام نشانی عمومی را دید؟ | مشاهدهای در همان مقصد |
نقطه پایانی انتخابشده را کنار دستگیره یا شیء درخواست نگه دارید. curl_getinfo یک واسط اطلاعات انتقال است، نه یک گیرنده عمومی برای هر مقدار CURLOPT که پیشتر تخصیص یافته است. نگهداشتن پیکربندی برنامه از تلاش برای رهگیری فراخوانیهای curl_setopt سادهتر است.
انتقال کاملشده را بررسی کنید
پس از انتقال، همتای متصل از طریق CURLINFO_PRIMARY_IP در دسترس است. وقتی اتصال نخست به پروکسی میرود، آن همتا میتواند نشانی پروکسی باشد نه نشانی وبسایت.
$peer = curl_getinfo($ch, CURLINFO_PRIMARY_IP);
$usedProxy = defined('CURLINFO_USED_PROXY')
? curl_getinfo($ch, constant('CURLINFO_USED_PROXY'))
: null;
CURLINFO_USED_PROXY در نسخه 8.7.0 به libcurl افزوده شد و بیلدهای سازگار PHP آن را ارائه میکنند. نتیجه آن استفاده از پروکسی را گزارش میکند، نه URL کامل پروکسی انتخابشده را. اگر ثابت در دسترس نباشد، null بالا یعنی مشاهده در دسترس نیست، نه اینکه درخواست مستقیم رفته باشد.
این مقادیر را زمانی بخوانید که دستگیره هنوز همان عملیات را توصیف میکند. اتصال ناموفق ممکن است نشانی همتای سودمندی ندهد، و پروکسی صریح را هنوز میتوان با یک استثنای منطبق دور زد.
یک نقطه پایانی بررسی IP به پرسش سوم پاسخ میدهد. پاسخ آن میتواند خروجیای پشت پروکسی را توصیف کند، در حالی که نام میزبان پیکربندیشده به ورودی دیگری تجزیه میشود. در تنظیمات برنامه هیچیک از دو نشانی نباید جای دیگری گذاشته شود.