Навигация в уеб прокси на PHP: относителни URL адреси, бисквитки и произходи
Планирайте URL адресите на ресурсите, навигацията, бисквитките и границите на произхода, когато превръщате извличането с PHP в уеб прокси за браузъра.
Преди да добавите още пренаписване към извличащ модул на 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.
Връщането на недоверено маркиране от вашия домейн също му дава произхода на браузъра на прегледа, а не идентичността на извлечения сайт. Изолирайте тези документи от страниците за акаунт и администрация. Определете отдалечени бисквитки за всеки посетител, разрешени за прехвърляне заглавки и местоназначения за пренасочване; споделен буркан за бисквитки може да смеси отдалечени вписвания.
Ангажирайте се с тази граница на поддръжка, преди да предложите сесия за разглеждане. За обикновено разглеждане през друг изход родният прокси интерфейс на браузъра, например настройките HTTP/SOCKS на Firefox, запазва URL адреса на местоназначението и модела на произход на браузъра, без да изисква този слой за извличане и повторно публикуване. За отделен тест на публичен сайт списъкът с безплатни прокси сървъри предоставя кандидати за крайни точки; съпоставете протокола в настройките на браузъра.