Récupérer une URL HTTP via un proxy avec file_get_contents de PHP
Configurez le gestionnaire de flux HTTP de PHP pour un proxy direct, y compris le format des requêtes et les limites des contextes de flux.
Pour une requête HTTP ordinaire sans cURL de PHP, transmettez un contexte de proxy au gestionnaire de flux 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);
Remplacez le point de terminaison de documentation par votre proxy HTTP ou par un candidat de la liste de proxys HTTP. L'interface de contexte HTTP attend une adresse TCP pour proxy. request_fulluri=trueplace l'URI de destination complète dans la ligne de requête, comme l'exigent de nombreux proxys directs. Le délai d'expiration borne l'opération de flux selon les règles de ce gestionnaire.
Vérifiez la valeur renvoyée et l'avertissement avant d'analyser le corps ; une lecture échouée et une réponse vide réussie demandent un traitement différent. Commencez le diagnostic avec cette seule destination HTTP et une requête bornée. HTTPS ajoute le tunnellisation et un comportement TLS qui doivent être vérifiés pour la version réelle du gestionnaire et de PHP ; cet exemple n'établit pas ces capacités.
Passer le contexte à cet appel garde la route visible et évite de modifier des lectures d'URL sans rapport. Un contexte par défaut partagé n'est approprié que lorsque l'application veut délibérément cette politique ; les bibliothèques devraient tenir compte de sa portée plus large.
Ceci configure les flux PHP, pas un handle cURL créé indépendamment, un navigateur ou un autre processus. Identifiez le transport HTTP réel d'un paquet avant de vous attendre à ce qu'il utilise ce contexte.