Navegación do proxy web en PHP: URL relativas, cookies e orixes
Planifique as URL dos recursos, a navegación, as cookies e os límites de orixe ao converter a obtención con PHP nun proxy web para o navegador.
Antes de engadir máis reescritura a un obtenedor en PHP, escolla a onde debe ir o seguinte recurso. Un documento obtido de https://destination.example/catalog/ e devolto en https://viewer.example/browse?url=... pode conter:
<img src="photo.jpg">
<a href="details/42">Details</a>O navegador resolve esas referencias co documento que recibiu no visor. Que PHP obtivese os bytes orixinais non establece a base remota.
Un elemento base pode apuntar as URL relativas ao destino, pero esas solicitudes poden ir despois directamente do navegador ao destino. Manter cada solicitude a través de PHP esixe, no canto, URL de proxy e un modelo de encamiñamento máis amplo:
| Recurso ou acción | Tratamento necesario |
|---|---|
| Ligazóns e imaxes | Resolvaas contra o documento remoto e produza a ruta prevista |
| Importacións e recursos CSS | Use a base remota da folla de estilo |
| Formularios | Conserve o método e os datos enviados |
| Redireccións | Manteña a navegación dentro do modelo permitido |
| Solicitudes creadas por scripts | Xestione as URL ausentes do HTML orixinal |
Unhas cantas substitucións con expresións regulares non poden prometer compatibilidade xeral con sitios cargados de scripts. Para un documento público coñecido, quizais abonde desactivar a navegación, permitir ligazóns directas ou encamiñar un subconxunto admitido a través do visor. Conserve os tipos de medio reais en lugar de tratar cada resposta como HTML.
Devolver marcado non fiable desde o seu dominio tamén lle dá a orixe do navegador do visor, non a identidade do sitio obtido. Isole eses documentos das páxinas de conta e administración. Defina cookies remotas por visitante, cabeceiras permitidas de reenvío e destinos de redirección; un tarro de cookies compartido pode mesturar inicios de sesión remotos.
Comprométase con ese límite de soporte antes de ofrecer unha sesión de navegación. Para a navegación habitual por outra saída, a interface de proxy nativa do navegador, como a configuración HTTP/SOCKS de Firefox, conserva a URL de destino e o modelo de orixe do navegador sen necesidade desta capa de obtención e republicación. Para unha proba aparte de sitio público, a lista de proxies gratuítos fornece puntos finais candidatos; faga coincidir o protocolo na configuración do navegador.