Antes de acrescentar mais reescrita a um obtenedor em PHP, escolha para onde deve ir o próximo recurso. Um documento obtido de https://destination.example/catalog/ e devolvido em https://viewer.example/browse?url=... pode conter:

<img src="photo.jpg">
<a href="details/42">Details</a>

O navegador resolve essas referências com o documento que recebeu no visualizador. O facto de o PHP ter obtido os bytes originais não estabelece a base remota.

Um elemento base pode apontar as URLs relativas para o destino, mas esses pedidos podem depois ir diretamente do navegador para o destino. Para manter cada pedido através do PHP, são necessárias, em vez disso, URLs de proxy e um modelo de encaminhamento mais amplo:

Recurso ou açãoTratamento necessário
Ligações e imagensResolva-as face ao documento remoto e produza a rota pretendida
Importações e recursos CSSUse a base remota da folha de estilo
FormuláriosPreserve o método e os dados enviados
RedirecionamentosMantenha a navegação dentro do modelo permitido
Pedidos criados por scriptsTrate as URLs ausentes do HTML original

Algumas substituições com expressões regulares não podem prometer compatibilidade geral com sítios carregados de scripts. Para um documento público conhecido, pode bastar desativar a navegação, permitir ligações diretas ou encaminhar um subconjunto suportado através do visualizador. Preserve os tipos de média reais em vez de tratar cada resposta como HTML.

Devolver marcação não fidedigna a partir do seu domínio também lhe dá a origem de navegador do visualizador, não a identidade do sítio obtido. Isole esses documentos das páginas de conta e administração. Defina cookies remotos por visitante, cabeçalhos permitidos de reencaminhamento e destinos de redirecionamento; um frasco de cookies partilhado pode misturar inícios de sessão remotos.

Comprometa-se com esse limite de suporte antes de oferecer uma sessão de navegação. Para a navegação comum por outra saída, a interface de proxy nativa do navegador, como as definições HTTP/SOCKS do Firefox, preserva o URL de destino e o modelo de origem do navegador sem exigir esta camada de obtenção e republicação. Para um teste separado de sítio público, a lista de proxies gratuitos fornece pontos finais candidatos; faça corresponder o protocolo nas definições do navegador.

Artigos relacionados