Прежде чем добавлять ещё больше переписывания в загрузчик на PHP, выберите, куда должен идти следующий ресурс. Документ, загруженный с https://destination.example/catalog/ и возвращённый на https://viewer.example/browse?url=..., может содержать:

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

Браузер разрешает эти ссылки с помощью документа, полученного в просмотрщике. То, что PHP загрузил исходные байты, не устанавливает удалённую базу.

Элемент base может направлять относительные URL к назначению, но эти запросы могут затем идти напрямую из браузера к назначению. Чтобы вместо этого провести каждый запрос через PHP, нужны прокси-URL и более широкая модель маршрутизации:

Ресурс или действиеТребуемая обработка
Ссылки и изображенияРазрешите их относительно удалённого документа и создайте нужный маршрут
Импорт CSS и ресурсыИспользуйте удалённую базу таблицы стилей
ФормыСохраните метод и отправленные данные
ПеренаправленияДержите навигацию в разрешённой модели
Запросы, созданные скриптамиОбрабатывайте URL, отсутствующие в исходном HTML

Несколько замен регулярными выражениями не могут обещать общую совместимость с сайтами, насыщенными скриптами. Для известного публичного документа может быть достаточно отключить навигацию, разрешить прямые ссылки или направить поддерживаемое подмножество через просмотрщик. Сохраняйте фактические типы медиа, а не считайте каждый ответ HTML.

Возврат недоверенной разметки с вашего домена также даёт ей браузерную природу просмотрщика, а не идентичность загруженного сайта. Изолируйте эти документы от страниц учётной записи и администрирования. Определите удалённые cookie для каждого посетителя, разрешённые пересылаемые заголовки и цели перенаправления; общая банка cookie может смешивать удалённые входы.

Закрепите эту границу поддержки, прежде чем предлагать сеанс просмотра. Для обычного просмотра через другой выход собственный прокси-интерфейс браузера, например настройки HTTP/SOCKS в Firefox, сохраняет целевой URL и модель источника браузера без необходимости этого слоя загрузки и повторной публикации. Для отдельной проверки публичного сайта список бесплатных прокси даёт кандидатов в конечные точки; согласуйте протокол в настройках браузера.

Похожие статьи