واکشی یک URL HTTP از طریق پروکسی با PHP file_get_contents
پوشش جریان HTTP در PHP را برای یک پروکسی پیشرو پیکربندی کنید، شامل قالببندی درخواست و محدودیتهای زمینههای جریان.
برای یک درخواست HTTP معمولی بدون cURL در PHP، یک زمینه پروکسی به پوشش جریان HTTP بدهید:
$context = stream_context_create([
'http' => [
'proxy' => 'tcp://203.0.113.10:8080',
'request_fulluri' => true,
'timeout' => 10,
],
]);
$body = file_get_contents('http://example.com/', false, $context);
نقطه پایانی مستندات را با پروکسی HTTP خود یا یکی از گزینههای فهرست پروکسی HTTP جایگزین کنید. رابط زمینه HTTP برای proxy یک نشانی TCP انتظار دارد. request_fulluri=true کل URI مقصد را در خط درخواست قرار میدهد، همانگونه که بسیاری از پروکسیهای پیشرو لازم دارند. مهلت زمانی عملیات جریان را بر اساس قواعد همان پوشش محدود میکند.
پیش از تجزیه بدنه، مقدار بازگشتی و هشدار را بررسی کنید؛ خواندن ناموفق و پاسخ خالی موفق به برخورد متفاوتی نیاز دارند. عیبیابی را با همین یک مقصد HTTP و درخواست محدود آغاز کنید. HTTPS تونلسازی و رفتار TLS را اضافه میکند که باید برای نسخه واقعی پوشش و PHP بررسی شود؛ این مثال آن تواناییها را اثبات نمیکند.
دادن زمینه در همین فراخوان، مسیر را قابل مشاهده نگه میدارد و از تغییر خواندنهای نامرتبط URL جلوگیری میکند. زمینه پیشفرض مشترک تنها زمانی مناسب است که برنامه آگاهانه آن سیاست را بخواهد؛ کتابخانهها باید دامنه گستردهتر آن را در نظر بگیرند.
این جریانهای PHP را پیکربندی میکند، نه یک دستگیره cURL مستقلساخته، مرورگر یا فرایند دیگر. پیش از انتظار برای استفاده بسته از این زمینه، انتقال HTTP واقعی آن را مشخص کنید.