HeadlessChrome101: Ինչպես Jit-Browser-ը Chrome-ը վերածում է լիարժեք բազմաֆունկցիոնալ բրաուզերի–Սերվեր-Բրաուզեր շերտ
Սա պարզ լեզվով քայլ առ քայլ ուղեցույց է, թե ինչ է անում Jit-Browser-ը գլխազուրկ Chrome-ով, ինչպես է օգտագործում սեփական Jit-TR ժամանակի գործարկումը և ինչ է դեռ անհրաժեշտ, որպեսզի սա լինի առաջին կարգի բրաուզերի հատկություն, այլ ոչ թե պարզապես մեկ այլ սցենար:
Սովորական էկրանի նկարչից մինչև Jit-Browser
Մենք սկսեցինք փոքր հրամանային տողի գործիքով: getpage https://example.com page.png. Այն սկսեց Chrome-ը Docker կոնտեյնում, վերցրեց էկրանի նկարը rendered example.com-ից էջից և դուրս եկավ:
Օգտակար գաղափարի ապացույց: Յուրաքանչյուր զանգ էր սառը մեկնարկ: Այն ոչինչ չգիտեր թարգմանության, նստաշրջանների կամ վիճակի մասին: Դա պարզապես գլխազուրկ տեսախցիկ էր:
Jit-Browser-ը հաջորդ քայլն է: Այն դեռ օգտագործում է իրական Chrome, բայց հիմա:
- Այն գրանցում է, թե ինչ է տեղի ունենում էջի ներսում:
- Այն ներարկում է Jit-TR սցենարը որպես թարգմանության շերտ:
- Այն կարող է հետևել պարզ հոսքերին, ինչպիսիք են կուքի բլոկները կամ իջեցվողները:
- Այն բռնում է ամբողջովին թարգմանված HTML-ը, ոչ միայն էկրանի նկարը:
Այս էջը բացատրում է այդ խողովակը, որպեսզի կարողանաք տեսնել, որ մենք չենք ձեռնպահվում: Մենք ցույց ենք տալիս, թե ինչպես կարող է բրաուզերի մակարդակի բազմալեզու շերտը իրականում աշխատել:
Jit-Browser-ի խողովակը 6 քայլով
Բարձր մակարդակում, յուրաքանչյուր բռնում հետևում է նույն հաջորդականությանը:
-
Արձակել իրական Chrome (գլխազուրկ) Docker-ի ներսում:
Մենք օգտագործում ենք Puppeteer (pptr.dev), որպեսզի սկսենք նույն շարժիչը, որը սնուցում է սովորական բրաուզերները, բայց առանց տեսանելի պատուհանի: Ոչ մի հատուկ վերլուծիչ, ոչ մի կեղծ ներկայացում: -
Կիրառել կուքի կամ մուտքի վիճակը (եթե կարգավորված է):
Դեմոների համար, որոնք պահանջում են մուտքագրված նստաշրջան, մենք կրկնում ենք ձեր կուքի: Ոչ մի ուժային ուժ, ոչ մի գաղտնաբառի գուշակություն, ոչ մի հաշիվների քերիչ, որոնք մենք չենք վերահսկում: -
Բեռնել նպատակային էջը ճիշտ այնպես, ինչպես օգտվողը:
HTML, CSS, JavaScript, տառատեսակներ, պատկերներ: Մենք սպասում ենքnetworkidle2(https://pptr.dev/api/puppeteer.page.waitfornetworkidle), որպեսզի դանդաղ փաթեթները և տառատեսակները կարողանան ավարտել բեռնման գործընթացը: -
Ներարկել Jit-TR կրճատումը որպես շերտ:
Մենք ավելացնում ենք սցենարի պիտակ, որը ցույց է տալիս մեր արտոնագրված ժամանակի գործարկման կոդը – օրինակ:. Jit-TR ժամանակի մոդուլը քայլում է բացահայտված DOM-ի (document.head և document.body) շուրջ, ուղարկում է արտահանված բեռը մեր (կամ ցանկացած) սերվերին մշակման համար, ստանում է արդյունքները (թարգմանություն, բարելավում կամ նոր տեղեկություններ), վերաշարադրում է տեսանելի տեքստը և ավելացնում նոր իմաստի շերտեր սկզբնականի վրա: Միակ սահմանափակումները, որոնք գոյություն ունեն, պարզ են. սցենարները կարող են ընդլայնվել, բայց նոր հրահանգները երբեք չեն կարող խանգարել կայքի սեփական սցենարներին: Սա սովորաբար իրականացվում է օգտագործելովMutationObserverինստանցիաներ, որոնք դիտում են համապատասխան փոփոխությունները DOM-ում, կիրառում են թարմացումներ փոքր, նպատակային փաթեթներով և խուսափում են գոյություն ունեցող ծրագրային տրամաբանության կամ իրադարձությունների մշակողների վրա: -
Անհրաժեշտ հոսքեր. կուքի, սեղմումներ և գլորում:
Իրական էջերը հաճախ պահանջում են մեկ կամ երկու գործողություն. փակել կուքի բլոկը, բացել մենյուն, գլորել ավելին բեռնելու համար: Jit-Browser-ը կարող է գործարկել պարզ հոսքի սցենար, որպեսզի այդ տարրերը տեսանելի լինեն բռնելուց առաջ: -
Բռնել ընդլայնված ելքը:
Մենք պահում ենք:- Ամբողջովին փոփոխված HTML հյուրընկալման կամ աուդիտի համար:
- Ժամանակի հետքեր, որպեսզի պարզենք հնարավոր խցանումները:
Սա մեր HeadlessChrome101-ի հիմքն է: Սա մտքի մոդելն է, թե ինչպես կարող է բրաուզերը վերաբերվել նոր կամ գոյություն ունեցող տվյալներին որպես ցանկացած բրաուզերի ներսում կառուցված շերտ:
Ինչու սա պարզապես խաղալիք սցենար չէ
Jit-Browser-ը կարևոր է, քանի որ ապացուցում է, որ բրաուզերի մակարդակի շերտ կարող է կառուցվել նույն մասերով, որոնք բրաուզերի վաճառողները արդեն օգտագործում են ամեն օր, և որ այս շերտը կարող է անվտանգ հյուրընկալել լիարժեք հաճախորդ-սերվեր փոխազդեցություն ցանկացած արտաքին ծառայության հետ, այդ թվում՝ մեր սեփական Jit-TR ժամանակի գործարկման: Սա նաև այն կետն է, որտեղ մենք ավելացնում ենք SEO-գիտակից բարելավումներ, ինչպիսիք են rel="alternate" hreflang="..." հղումները և հարստացված sitemap.xml մուտքերը: Իրականում, սա նշանակում է, որ մենք կարող ենք բացահայտել ընդլայնված տեղեկություններ ոչ խանգարող HTML շրջաններում, ինչպիսիք են էլեմենտները գոյություն ունեցող էջի ձախ կամ աջ կողմում, կամ օգտագործելով JavaScript մոդալներ, որոնք կապում են լեզվային ընտրանքներ և SmartSearch առանց խանգարելու սկզբնական ձևավորումը կամ սցենարները:
-
Իրական Chrome շարժիչ:
Ամեն ինչ աշխատում է հենց Chrome-ում՝ պարզապես առանց տեսանելի պատուհանի: Եթե դա աշխատում է Chrome-ում ձեր այցելուների համար, ապա դա աշխատում է Jit-Browser-ում: -
Բովանդակության անվտանգության քաղաքականության գիտակից:
Շատ կայքեր արգելափակում են սցենարները CSP-ով: Գլխազուրկ ռեժիմում մենք կարող ենք օգտագործել Chrome-իsetBypassCSP(true)(https://pptr.dev/api/puppeteer.page.setbypasscsp) Jit-TR-ը ներմուծելու համար բռնագծման միջավայրում: Մենք չենք պահանջում, որ արտադրական կայքերը թուլացնեն իրենց անվտանգության քաղաքականությունները. -
Լրիվ ժամանակացույց և գրանցում.
Մենք գրանցում ենք գործարկման ժամանակները, էջի բեռնման ժամանակները, Jit-TR-ի մեկնարկը, հոսքի քայլերը և բռնագծումը: Դուք կարող եք տեսնել, թե որտեղ են գնում միլիսեկունդները և ինչ է իրականում անում Jit-TR-ը էջում. -
Սցենարի և շերտի բաժանում.
Այսօր Jit-TR-ը կարող է լինել "միայն սցենար", որը դուք ավելացնում եք կայքում: Jit-Browser-ում մենք վերաբերվում ենք դրան որպես կայուն շերտ, որը միշտ աշխատում է: Դա շատ մոտ է այն բանի, թե ինչպես կարող է բրաուզերի մատակարարն այն տեղադրել բնիկ:
Ինչ է արդեն լուծում Jit-TR API-ն
Դժվար մասը ոչ գլխազուրկ Chrome-ն է: Դժվար մասը վստահորեն կենդանի, խառնաշփոթ վեբ էջերը վերածել անվտանգ բազմալեզու տարբերակների: Մեր սեփական գործառնական միջավայրում api.jit-tr.com այդ աշխատանքը արդեն կատարում է.
Այսօր API-ի գործառնական միջավայրը զբաղվում է:
-
Լեզվի ընտրություն.
Այն ընթերցում է պարամետրեր, ինչպիսիք ենjittr=ES-419, նորմալացնում է եզրային դեպքերը և գրանցում ընտրված լեզուն, օրինակ:[Jit-TR] Ընտրված լեզու → ES-419. -
DOM-ի հանման, թարգմանության և սեմանտիկ վերափոխումների.
Գործառնական միջավայրը քայլում է իրական Chrome DOM-ի միջով, հանում միայն տեսանելի տեքստը, կառուցում է կառուցվածքային թարգմանության բեռ և գրում արդյունքները էջում: Բոլոր դժվար եզրային դեպքերը ավտոմատ են. էմոջի հաջորդականություններ, HTML էությունը, նշանադրության և տարածության կանոններ, խառն լեզվաբառեր և Ձախից-Աջ դեպի Աջից-Ձախ անցումներ: Այն նաև վերափոխում է լեզվաբառային սցենարային բլոկները — ներառյալև այլ կառուցվածքային տվյալների պիտակներ — ապահովելով, որ յուրաքանչյուր լեզուն ունի ճիշտ, անկախ, կոշտացված մետադատա որոնման շարժիչների և AI համակարգերի համար. -
Հաճախորդի վարքագիծ.
Այն ներկայացնում է լեզվի դրոշակներ, հարգում է անվտանգ արմատները և խաղում է հնարավորինս անվտանգ մեկ էջի հավելվածների և շրջանակների հետ.
Այս ամենը արդեն աշխատում է Jit-TR կայքերում այսօր: Jit-Browser-ը պարզապես վերօգտագործում է դա վերահսկվող գլխազուրկ միջավայրում.
Ինչ է դեռ անհրաժեշտ բնիկ բրաուզերի հատկության համար
Ինչ է դեռ անհրաժեշտ բնիկ բրաուզերի հատկության համար
Jit-Browser-ը վերածելու համար ներմուծված բրաուզերի հատկության, ոչ ոք հրաշքի կարիք չունի - պարզապես կարողություն, որպեսզի տեղադրի փոքր, լավ սահմանված փոփոխությունների հավաքածու, որը բրաուզերի շարժիչները արդեն հասկանում են.
Jit=-Browser-ը վերածելու համար ներմուծված բրաուզերի հատկության: Սա հրաշք չէ, պարզապես փոքր փոփոխությունների հավաքածու, որը բրաուզերները արդեն հասկանում են.
-
Բնիկ հումք շարժիչում.
Այսօր մենք նմանակում ենք դա, ներմուծելով սցենար գլխազուրկ Chrome-ից: Իրական ինտեգրումը Jit-TR-ին կտա հատուկ թարգմանության տեղ, որպեսզի այն կարողանա կարդալ և գրել DOM տեքստը ճիշտ կետումRendering pipeline-ում. -
Լեզվի մտադրությունը արտահայտելու ստանդարտ եղանակ.
Մենք արդեն օգտագործում ենք?jittr=LANGև կուքի: Բրաուզերի մակարդակի լուծումը կարող է հարգել բրաուզերի լեզվի կարգավորումները և օգտվողի ընտրությունները, ինչպիսիք են "միշտ թարգմանել այս կայքը ES-419". -
Հստակ անվտանգություն և գաղտնիության շրջանակ.
Կանոնները, թե ինչ տեքստ կարող է դուրս գալ սարքից, որքան ժամանակ կարող է պահվել, և ինչպես կայքերը կամ օգտվողները կարող են հրաժարվել, պետք է լինեն հստակ և փաստաթղթավորված: Բնիկ իրականացումը բրաուզերի ներսում կարող է իրականում ավելի անվտանգ լինել, քան ad-hoc սցենարները.
Օրինակ: HarmonyOS ES-419-ում
Այստեղ կա կոնկրետ օրինակ խողովակի գործողության.
Մենք կանչում ենք:
getpageJtrBrowser \
"https://www.harmonyos.com/" \
"jittr=ES-419" \
null \
"ES-419/index.php"
Jit-Browser:
- Գործարկում է գլխազուրկ Chrome-ը Docker-ի ներսում.
- Բեռնում է
https://www.harmonyos.com/. - Ներդնում է Jit-TR-ի հատվածը ES-419 պարամետրով.
- Թող Jit-TR-ը թարգմանի տեսանելի չինական տեքստը իսպաներեն (Լատինական Ամերիկա).
- Պահում է արդյունքը որպես
ES-419/index.php.
HarmonyOS կայքը չի պահանջում փոփոխություն: Օգտվողի տեսանկյունից, այն թվում է, որ կայքը պարզապես աջակցում է իրենց լեզվին.
Ինչու է այս էջը գոյություն ունենում
HeadlessChrome101-ը ամփոփում է, որ ցույց է տալիս:
- Մենք օգտագործում ենք իրական բրաուզերի շարժիչներ և իրական CSP կանոններ.
- Մենք արդեն ունենք աշխատող, սեփական թարգմանության գործառնական միջավայր.
- Բնիկ բրաուզերի հատկության մնացած բացը փոքր է և լավ սահմանված.
Եթե դուք կառուցում եք բրաուզերներ, օպերացիոն համակարգեր կամ մեծ հարթակներ և ցանկանում եք համընդհանուր բազմալեզու շերտ, որը հարգում է ձեր անվտանգության մոդելը, մենք պատրաստ ենք խոսել: Կոդը գոյություն ունի: Davtakan է չափելի: Հաջորդ քայլը գործընկերությունն է: