Navegación del proxy web en PHP: URL relativas, cookies y orígenes
Planifique las URL de recursos, la navegación, las cookies y los límites de origen al convertir la obtención con PHP en un proxy web para el navegador.
Antes de añadir más reescritura a un obtenedor en PHP, elija adónde debe ir el siguiente recurso. Un documento obtenido de https://destination.example/catalog/ y devuelto en https://viewer.example/browse?url=... puede contener:
<img src="photo.jpg">
<a href="details/42">Details</a>El navegador resuelve esas referencias con el documento que recibió en el visor. Que PHP haya obtenido los bytes originales no establece la base remota.
Un elemento base puede apuntar las URL relativas al destino, pero esas solicitudes pueden ir entonces directamente del navegador al destino. Mantener cada solicitud a través de PHP exige, en cambio, URL de proxy y un modelo de enrutamiento más amplio:
| Recurso o acción | Tratamiento necesario |
|---|---|
| Enlaces e imágenes | Resuélvalos contra el documento remoto y produzca la ruta prevista |
| Importaciones y recursos CSS | Use la base remota de la hoja de estilo |
| Formularios | Conserve el método y los datos enviados |
| Redirecciones | Mantenga la navegación dentro del modelo permitido |
| Solicitudes creadas por scripts | Gestione las URL ausentes del HTML original |
Unas cuantas sustituciones con expresiones regulares no pueden prometer compatibilidad general con sitios cargados de scripts. Para un documento público conocido, quizá baste con desactivar la navegación, permitir enlaces directos o encaminar un subconjunto admitido a través del visor. Conserve los tipos de medio reales en lugar de tratar cada respuesta como HTML.
Devolver marcado no confiable desde su dominio también le da el origen del navegador del visor, no la identidad del sitio obtenido. Aísle esos documentos de las páginas de cuenta y administración. Defina cookies remotas por visitante, cabeceras permitidas de reenvío y destinos de redirección; un tarro de cookies compartido puede mezclar inicios de sesión remotos.
Comprométase con ese límite de soporte antes de ofrecer una sesión de navegación. Para la navegación habitual por otra salida, la interfaz de proxy nativa del navegador, como la configuración HTTP/SOCKS de Firefox, conserva la URL de destino y el modelo de origen del navegador sin necesidad de esta capa de obtención y republicación. Para una prueba aparte de sitio público, la lista de proxies gratuitos aporta puntos finales candidatos; haga coincidir el protocolo en la configuración del navegador.