Navigarea proxy-ului web în PHP: URL-uri relative, cookie-uri și origini
Planificați URL-urile resurselor, navigarea, cookie-urile și limitele de origine când transformați preluarea cu PHP într-un proxy web pentru browser.
Înainte de a adăuga mai multă rescriere unui preluator PHP, alegeți unde trebuie să meargă următoarea resursă. Un document preluat de la https://destination.example/catalog/ și returnat la https://viewer.example/browse?url=... poate conține:
<img src="photo.jpg">
<a href="details/42">Details</a>Browserul rezolvă acele referințe cu documentul primit în vizualizator. Faptul că PHP a preluat octeții originali nu stabilește baza la distanță.
Un element base poate îndrepta URL-urile relative spre destinație, dar acele cereri pot merge apoi direct de la browser la destinație. Pentru a menține fiecare cerere prin PHP sunt necesare în schimb URL-uri de proxy și un model de rutare mai larg:
| Resursă sau acțiune | Tratament necesar |
|---|---|
| Legături și imagini | Rezolvați-le față de documentul la distanță și produceți ruta dorită |
| Importuri și resurse CSS | Folosiți baza la distanță a foii de stil |
| Formulare | Păstrați metoda și datele trimise |
| Redirecționări | Mențineți navigarea în modelul permis |
| Cereri create de scripturi | Tratați URL-urile absente din HTML-ul original |
Câteva înlocuiri cu expresii regulate nu pot promite compatibilitate generală cu site-uri pline de scripturi. Pentru un document public cunoscut, poate fi suficient să dezactivați navigarea, să permiteți legături directe sau să dirijați un subset acceptat prin vizualizator. Păstrați tipurile reale de media în loc să tratați fiecare răspuns ca HTML.
Returnarea de marcaj neîncrezut din domeniul dvs. îi oferă și originea de browser a vizualizatorului, nu identitatea site-ului preluat. Izolați acele documente de paginile de cont și administrare. Definiți cookie-uri la distanță pentru fiecare vizitator, anteturi permise de transfer și destinații de redirecționare; un borcan de cookie-uri partajat poate amesteca autentificări la distanță.
Angajați-vă față de această limită de suport înainte de a oferi o sesiune de navigare. Pentru navigarea obișnuită printr-o altă ieșire, interfața proxy nativă a browserului, cum ar fi setările HTTP/SOCKS din Firefox, păstrează URL-ul destinației și modelul de origine al browserului fără a necesita acest strat de preluare și republicare. Pentru un test separat de site public, lista de proxy-uri gratuite oferă puncte finale candidate; potriviți protocolul în setările browserului.