Навігація вебпроксі на PHP: відносні URL, cookie та джерела
Плануйте URL ресурсів, навігацію, cookie та межі джерела, перетворюючи завантаження на 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.
Повернення недовіреного розмічування з вашого домену також дає йому браузерне походження переглядача, а не ідентичність завантаженого сайту. Ізолюйте ці документи від сторінок облікового запису та адміністрування. Визначте віддалені cookie для кожного відвідувача, дозволені заголовки для пересилання та цілі перенаправлення; спільна банка cookie може змішувати віддалені входи.
Зафіксуйте цю межу підтримки, перш ніж пропонувати сеанс перегляду. Для звичайного перегляду через інший вихід власний проксі-інтерфейс браузера, наприклад налаштування HTTP/SOCKS у Firefox, зберігає цільовий URL і модель походження браузера без потреби в цьому шарі завантаження й повторної публікації. Для окремого тесту публічного сайту список безкоштовних проксі дає кандидатів у кінцеві точки; узгодьте протокол у налаштуваннях браузера.