HeadlessChrome101: Kako Jit-Browser pretvara Chrome u potpuno višenamjenski preglednik–poslužiteljsko-preglednička razina
Ovo je vodič na jednostavnom jeziku o tome što Jit-Browser radi s headless Chromeom, kako koristi vlasnički Jit-TR runtime i što je još potrebno da to postane značajka prvoklasnog preglednika umjesto samo još jednog skripta.
Od jednostavnog alata za snimanje zaslona do Jit-Browsera
Započeli smo s malim alatom za naredbeni redak: getpage https://example.com page.png. Pokrenuo je Chrome u Docker kontejneru, snimio snimku zaslona renderiranog example.com s stranice i izašao.
Korisna potvrda koncepta. Svaki poziv bio je hladno pokretanje. Nije znao ništa o prijevodu, sesijama ili stanju. Bio je to samo headless fotoaparat.
Jit-Browser je sljedeći korak. I dalje koristi pravi Chrome, ali sada:
- Bilježi što se događa unutar stranice.
- Umeće Jit-TR skriptu kao sloj za prevođenje.
- Može pratiti jednostavne tokove poput kolačića ili padajućih izbornika.
- Zahvaća potpuno prevedeni HTML, ne samo snimku zaslona.
Ova stranica objašnjava taj proces kako biste mogli vidjeti da ne mašemo rukama. Pokazujemo kako sloj višejezičnosti na razini preglednika može zapravo raditi.
Jit-Browser proces u 6 koraka
Na visokoj razini, svaki zahvat slijedi istu sekvencu.
-
Pokrenite pravi Chrome (headless) unutar Dockera.
Koristimo Puppeteer (pptr.dev) za pokretanje istog motora koji pokreće normalne preglednike, ali bez vidljivog prozora. Nema prilagođenog parsera, nema lažnog renderiranja. -
Primijenite kolačiće ili stanje prijave (ako je konfigurirano).
Za demonstracije koje trebaju prijavljenu sesiju, ponavljamo vaše kolačiće. Nema brutalne sile, nema pogađanja lozinki, nema struganja računa koje ne kontroliramo. -
Učitajte ciljnu stranicu točno kao korisnik.
HTML, CSS, JavaScript, fontovi, slike. Čekamo nanetworkidle2(https://pptr.dev/api/puppeteer.page.waitfornetworkidle) kako bi spori paketi i fontovi završili učitavanje. -
Umetnite Jit-TR isječak kao sloj.
Dodajemo oznaku skripte koja upućuje na naš kod koji čeka patent – na primjer:. Jit-TR runtime modul prolazi kroz izloženi DOM (document.head i document.body), šalje izdvojeni sadržaj natrag našem (ili bilo kojem) poslužitelju na obradu, prima rezultate (prijevod, poboljšanje ili nove informacije), prepisuje vidljivi tekst i dodaje nove slojeve značenja iznad originala. Jedina ograničenja koja postoje su jednostavna: skripte se mogu proširiti, ali nove upute nikada ne mogu ometati vlastite skripte stranice. To se obično implementira korištenjemMutationObserverinstanci za praćenje relevantnih promjena u DOM-u, primjenu ažuriranja u malim, ciljanih zakrpama i izbjegavanje dodirivanja bilo koje postojeće logike aplikacije ili upravljača događajima. -
Pokrenite opcionalne tokove: kolačiće, klikove i pomicanje.
Prave stranice često trebaju jednu ili dvije radnje: zatvaranje bannera s kolačićima, otvaranje izbornika, pomicanje za učitavanje više ponuda. Jit-Browser može pokrenuti jednostavan tok skripte kako bi ti elementi bili vidljivi prije snimanja. -
Zahvatite prošireni izlaz.
Spremamo:- Potpuno modificirani HTML za hosting ili reviziju.
- Praćenje vremena za identifikaciju potencijalnih uskih grla.
To je srž našeg HeadlessChrome101. To je mentalni model kako bi preglednik mogao tretirati nove ili postojeće podatke kao ugrađeni sloj unutar bilo kojeg preglednika.
Zašto ovo nije samo igračka skripta
Jit-Browser je važan jer dokazuje da se sloj na razini preglednika može izgraditi s istim dijelovima koje dobavljači preglednika već koriste svaki dan, i da ovaj sloj može sigurno ugostiti punu interakciju klijent-poslužitelj s bilo kojom vanjskom uslugom, uključujući naš vlastiti Jit-TR runtime. Također je to točka na kojoj dodajemo poboljšanja svjesna SEO-a kao što su rel="alternate" hreflang="..." linkovi i obogaćeni sitemap.xml unosi. U praksi, to znači da možemo izložiti proširene informacije unutar nedistraktivnih HTML regija poput elemenata lijevo ili desno od postojeće stranice, ili korištenjem JavaScript modala koji dodaju jezične opcije i SmartSearch bez ometanja originalnog izgleda ili skripti.
-
Pravi Chrome motor.
Sve se pokreće na Chromeu samom - samo bez vidljivog prozora. Ako radi u Chromeu za vaše posjetitelje, radi i u Jit-Browseru. -
Svjesno politike sigurnosti sadržaja.
Većina stranica zaključava skripte s CSP-om. U headless modu možemo koristiti ChromeovusetBypassCSP(true)(https://pptr.dev/api/puppeteer.page.setbypasscsp) za umetanje Jit-TR unutar okruženja za snimanje. Ne zahtijevamo da bilo koje produkcijske stranice oslabe svoje sigurnosne politike. -
Potpuno mjerenje i evidentiranje.
Evidentiramo vrijeme pokretanja, vrijeme učitavanja stranice, pokretanje Jit-TR-a, korake toka i snimanje. Možete vidjeti gdje prolaze milisekunde i što Jit-TR zapravo radi na stranici. -
Odvajanje skripte i sloja.
Danas, Jit-TR može biti "jednostavna skripta" koju dodajete na stranicu. U Jit-Browseru tretiramo ga kao stabilan sloj koji uvijek radi. To je vrlo blizu načinu na koji bi ga dobavljač preglednika mogao izvorno integrirati.
Što Jit-TR API već rješava
Težak dio nije headless Chrome. Težak dio je pouzdano pretvaranje živih, neurednih web stranica u sigurne višejezične verzije. Naša vlasnička runtime već api.jit-tr.com obavlja taj posao.
Danas, API runtime obrađuje:
-
Odabir jezika.
Čita parametre poputjittr=ES-419, normalizira rubne slučajeve i evidentira odabrani jezik, na primjer:[Jit-TR] Odabrani jezik → ES-419. -
Ekstrakcija DOM-a, prevođenje i semantička prepravka.
Runtime prolazi kroz stvarni Chrome DOM, ekstraktira samo vidljiv tekst, gradi strukturirani teret prevođenja i vraća rezultate natrag na stranicu. Svi teški rubni slučajevi su automatski: sekvence emojija, HTML entiteti, pravila interpunkcije i razmaka, mješoviti jezični nizovi i prelazak s lijeva na desno / s desna na lijevo. Također prepravlja jezične specifične blokove skripti — uključujućii druge oznake strukturiranih podataka — osiguravajući da svaki jezik ima ispravne, neovisne, predmemorirane metapodatke za tražilice i AI sustave. -
Ponašanje klijenta.
Prikazuje zastave jezika, poštuje nesigurne korijene i igra što je sigurnije moguće s aplikacijama i okvirima jedne stranice.
Sve ovo već radi na Jit-TR stranicama danas. Jit-Browser jednostavno ponovno koristi to u kontroliranom headless okruženju.
Što je još potrebno za izvorne značajke preglednika
Što je još potrebno za izvorne značajke preglednika
Da bi se Jit-Browser pretvorio u ugrađenu značajku preglednika, nitko ne treba čudo - samo sposobnost postavljanja malog, dobro definiranog skupa promjena koje preglednički motori već razumiju.
Da bi se Jit-Browser pretvorio u ugrađenu značajku preglednika. Ovo nije čudo, samo mali skup promjena koje preglednici već razumiju.
-
Izvorna kuka u motoru.
Danas to simuliramo umetanjem skripte iz headless Chromea. Prava integracija bi dala Jit-TR-u posvećeno mjesto za prevođenje kako bi mogao čitati i pisati DOM tekst u pravom trenutku u cjevovodu renderiranja. -
Standardni način izražavanja jezične namjere.
Već koristimo?jittr=LANGi kolačiće. Rješenje na razini preglednika moglo bi poštovati postavke jezika preglednika i korisničke izbore poput "uvijek prevodi ovu stranicu na ES-419". -
Jasan okvir sigurnosti i privatnosti.
Pravila o tome koji tekst može napustiti uređaj, koliko dugo se može predmemorirati i kako se stranice ili korisnici mogu isključiti trebala bi biti jasna i dokumentirana. Izvorna implementacija unutar preglednika može zapravo biti sigurnija od ad-hoc skripti.
Primjer: HarmonyOS u ES-419
Evo konkretnog primjera cjevovoda u akciji.
Pozivamo:
getpageJtrBrowser \
"https://www.harmonyos.com/" \
"jittr=ES-419" \
null \
"ES-419/index.php"
Jit-Browser:
- Pokreće headless Chrome unutar Dockera.
- Učitava
https://www.harmonyos.com/. - Umeće Jit-TR isječak s ES-419 parametrom.
- Daje Jit-TR-u da prevede vidljivi kineski tekst na španjolski (Latinska Amerika).
- Spremi rezultat kao
ES-419/index.php.
Stranica HarmonyOS ne treba se mijenjati. Iz perspektive korisnika, izgleda kao da stranica jednostavno podržava njihov jezik.
Zašto ova stranica postoji
HeadlessChrome101 je sažetak koji pokazuje:
- Koristimo stvarne pregledničke motore i stvarna CSP pravila.
- Već imamo radnu, vlasničku runtime za prevođenje.
- Preostali razmak do izvorne značajke preglednika je mali i dobro definiran.
Ako gradite preglednike, operativne sustave ili velike platforme i želite univerzalni višejezični sloj koji poštuje vaš sigurnosni model, spremni smo razgovarati. Kod postoji. Ponašanje je mjerljivo. Sljedeći korak je partnerstvo.