Pobieranie adresu URL HTTP przez proxy za pomocą PHP file_get_contents
Skonfiguruj opakowanie strumienia HTTP w PHP dla proxy przekazującego, w tym formatowanie żądania i ograniczenia kontekstów strumienia.
W przypadku zwykłego żądania HTTP bez PHP cURL przekaż kontekst proxy do opakowania strumienia 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);
Zastąp punkt końcowy dokumentacji swoim proxy HTTP lub kandydatem z listy proxy HTTP. Interfejs kontekstu HTTP oczekuje adresu TCP dla proxy. request_fulluri=trueumieszcza pełny identyfikator URI miejsca docelowego w wierszu żądania, jak wymaga wiele proxy przekazujących. Limit czasu ogranicza operację strumienia zgodnie z regułami tego opakowania.
Sprawdź zwróconą wartość i ostrzeżenie przed analizą treści; nieudany odczyt i pusta udana odpowiedź wymagają innego postępowania. Rozpocznij diagnostykę od tego jednego miejsca docelowego HTTP i ograniczonego żądania. HTTPS dodaje tunelowanie i zachowanie TLS, które trzeba sprawdzić dla rzeczywistej wersji opakowania i PHP; ten przykład nie potwierdza tych możliwości.
Przekazanie kontekstu w tym wywołaniu utrzymuje trasę widoczną i pozwala uniknąć zmiany niepowiązanych odczytów URL. Wspólny kontekst domyślny jest właściwy tylko wtedy, gdy aplikacja świadomie chce tej polityki; biblioteki powinny uwzględniać jego szerszy zakres.
To konfiguruje strumienie PHP, a nie niezależnie utworzony uchwyt cURL, przeglądarkę ani inny proces. Ustal rzeczywisty transport HTTP pakietu, zanim zaczniesz oczekiwać, że użyje tego kontekstu.