Navigation du proxy web en PHP : URL relatives, cookies et origines
Planifiez les URL des ressources, la navigation, les cookies et les limites d'origine quand vous transformez la récupération en PHP en proxy web pour le navigateur.
Avant d'ajouter davantage de réécriture à un récupérateur PHP, choisissez où doit aller la ressource suivante. Un document récupéré depuis https://destination.example/catalog/ et renvoyé à https://viewer.example/browse?url=... peut contenir :
<img src="photo.jpg">
<a href="details/42">Details</a>Le navigateur résout ces références avec le document qu'il a reçu dans la visionneuse. Le fait que PHP ait récupéré les octets d'origine n'établit pas la base distante.
Un élément base peut diriger les URL relatives vers la destination, mais ces requêtes peuvent alors aller directement du navigateur à la destination. Pour faire passer chaque requête par PHP, il faut plutôt des URL de proxy et un modèle de routage plus large :
| Ressource ou action | Traitement requis |
|---|---|
| Liens et images | Résolvez-les par rapport au document distant et produisez la route voulue |
| Imports et ressources CSS | Utilisez la base distante de la feuille de style |
| Formulaires | Conservez la méthode et les données soumises |
| Redirections | Gardez la navigation dans le modèle autorisé |
| Requêtes créées par script | Gérez les URL absentes du HTML d'origine |
Quelques remplacements par expression régulière ne peuvent pas promettre une compatibilité générale avec les sites riches en scripts. Pour un document public connu, il peut suffire de désactiver la navigation, d'autoriser les liens directs ou de router un sous-ensemble pris en charge via la visionneuse. Conservez les types de média réels au lieu de traiter chaque réponse comme du HTML.
Renvoyer du balisage non fiable depuis votre domaine lui donne aussi l'origine navigateur de la visionneuse, et non l'identité du site récupéré. Isolez ces documents des pages de compte et d'administration. Définissez des cookies distants par visiteur, les en-têtes de transfert autorisés et les destinations de redirection ; un pot de cookies partagé peut mélanger des connexions distantes.
Engagez-vous sur cette limite de prise en charge avant de proposer une session de navigation. Pour une navigation ordinaire via une autre sortie, l'interface proxy native du navigateur, comme les réglages HTTP/SOCKS de Firefox, préserve l'URL de destination et le modèle d'origine du navigateur sans exiger cette couche de récupération et de republication. Pour un test distinct de site public, la liste de proxys gratuits fournit des points de terminaison candidats ; faites correspondre le protocole dans les réglages du navigateur.