Kronus - proxy web-based cu mâinile lor

Necesară pentru a pune în aplicare o aplicație Web care este un server proxy web (așa cum este specificat în definiția de mai sus) și are caracteristicile:

punerea în aplicare

Noi scrie în PHP. Pentru a manipula DOM-copac luați biblioteca simple_html_dom. Pentru CSS a fost dorința de a utiliza PHP-CSS-Parser. dar a trebuit să fie abandonate, deoarece acest interpretor se ocupă de anumite fișiere pentru o lungă perioadă de timp.

Este necesar să se determine componentele care sunt necesare:

  • Opuneți prelucrării cererilor (cel mai usor - a trimis, a primit, și separat antetele de corp și sa întors rezultatul).
  • depozitare Obiectul url solicitată (va fi necesar să se aloce să-l gazdă, cale, dosar, etc).
  • Obiecte este un fișiere (html, css, etc), descărcate la cerere.
  • Fabrica pentru obiecte de fișiere.

În ceea ce privește UI va fi doar două fișiere:

  • index.php - aici utilizatorul introduce URL-ul său dorit.
  • view.php - aici utilizatorul este redirecționat după introducerea URL-ul la index.php.

Din cele de mai sus a fost astfel diagrama de clase:

Kronus - proxy web-based cu mâinile lor

Dacă luăm în considerare codul în ceea ce privește „care va câștiga este atunci când“ vom obține acest lucru:

  • La cerere view.php vine de la o adresă URL criptate.
  • URL-ul se află în page_factory (PF).
  • PF numita metodă get_page care descarcă conținutul URL.
  • În funcție de răspunsul serverului content_type este generat și a revenit la obiect pagina dorită (html, css, de bază, etc).
  • Acest proces se numește metoda obiect care execută diverse conversie (a se vedea. Procesul în class.basic_page.php, class.css_page.php, class.html_page.php).
  • După aceea, utilizatorul este transmis de obiectul principal CONTENT_TYPE și obiectul corpului procesat.

testarea

Trebuie să spun că testul - nu este punctul meu forte. Deci, care costa cel mai modest și lucruri assertEquals 🙂 Da, testele sunt teste în dosarul (deja totul configurat sub PHPUnit). Am verificat la - toate lucrările (PHP 5.3.8). Apoi mi-am adus aminte că există un serviciu de Travis CI (găzduit gratuit Platforma de integrare continuă pentru comunitatea Open Source), pe care este integrarea cu GitHub'om. Am decis să includă în testarea WebProxy și implementarea pe PHP 5.3, 5.4, 5.5 cu ajutorul lui Travis CI (a se vedea. Fișier .travis.yml). Așa cum se arată prin lansarea pe Travis, WebProxy functioneaza pe toate cele trei ramuri ale PHP auditate. Deci, în Readme, puteți adăuga un element mic, cu o imagine frumoasă - statutul de Travis CI.

Acum WebProxy potrivite pentru navigare ușoară pe paginile statice, dar dezvoltarea nu este în loc. Planurile - forme de prelucrare corecte, posibilitatea de a primi cookie-uri (opțional), etc.

Demo nu voi face kronus.me, cum ar fi câmin nu aprobă, și scoici (care nu este rău), nu este la îndemână. Deci, implementați cu localhost.