HeadlessChrome101: Jit-Browser कसे Chrome ला एक पूर्ण मल्टी-फंक्शन ब्राउझर–सर्व्हर-ब्राउझर लेयरमध्ये बदलते
हे एक साध्या भाषेतील वॉकथ्रू आहे की Jit-Browser हेडलेस Chrome सह काय करते, ते मालकीच्या Jit-TR रनटाइमचा कसा वापर करते, आणि हे फक्त आणखी एक स्क्रिप्ट न राहता प्रथम श्रेणीचे ब्राउझर वैशिष्ट्य बनवण्यासाठी अजून काय आवश्यक आहे.
एक साधे स्क्रीनशॉट साधन ते Jit-Browser
आम्ही एक लहान कमांड-लाइन साधनाने सुरुवात केली: getpage https://example.com page.png. हे Chrome ला Docker कंटेनरमध्ये चालवते, पृष्ठावरून रेंडर केलेल्या example.com चे स्क्रीनशॉट घेते, आणि बाहेर पडते.
उपयुक्त संकल्पना पुरावा. प्रत्येक कॉल एक थंड प्रारंभ होता. त्याला भाषांतर, सत्रे, किंवा स्थिती याबद्दल काहीही माहिती नव्हती. हे फक्त एक हेडलेस कॅमेरा होते.
Jit-Browser पुढील पाऊल आहे. ते अजूनही खरे Chrome वापरते, पण आता:
- हे पृष्ठाच्या आत काय होते ते लॉग करते.
- हे Jit-TR स्क्रिप्टला एक भाषांतर लेयर म्हणून इंजेक्ट करते.
- हे कुकी बॅनर्स किंवा ड्रॉपडाउन सारख्या साध्या प्रवाहांचे अनुसरण करू शकते.
- हे पूर्णपणे अनुवादित HTML कॅप्चर करते, फक्त स्क्रीनशॉट नाही.
हे पृष्ठ त्या पाइपलाइनचे स्पष्टीकरण देते जेणेकरून तुम्ही पाहू शकता की आम्ही हातवारे करत नाही. आम्ही दाखवत आहोत की ब्राउझर-स्तरीय बहुभाषिक लेयर प्रत्यक्षात कसे कार्य करू शकते.
Jit-Browser पाइपलाइन 6 चरणांमध्ये
उच्च स्तरावर, प्रत्येक कॅप्चर समान क्रमाचे अनुसरण करते.
-
Docker मध्ये खरे Chrome (हेडलेस) लाँच करा.
आम्ही Puppeteer (pptr.dev) वापरतो जे सामान्य ब्राउझर चालवणारे समान इंजिन सुरू करण्यासाठी, परंतु दृश्यमान विंडोशिवाय. कोणताही कस्टम पार्सर नाही, कोणतेही बनावट रेंडरिंग नाही. -
कुकीज किंवा लॉगिन स्थिती लागू करा (जर कॉन्फिगर केले असेल).
लॉग इन सत्र आवश्यक असलेल्या डेमो साठी, आम्ही तुमच्या कुकीज पुन्हा प्ले करतो. कोणताही ब्रूट फोर्स नाही, कोणतेही पासवर्ड अंदाज नाही, कोणतेही स्क्रॅपिंग खाते नाही जे आम्ही नियंत्रित करत नाही. -
लक्ष्य पृष्ठ वापरकर्त्यासारखेच लोड करा.
HTML, CSS, JavaScript, फॉन्ट्स, प्रतिमा. आम्ही प्रतीक्षा करतोnetworkidle2(https://pptr.dev/api/puppeteer.page.waitfornetworkidle) जेणेकरून धीमे बंडल्स आणि फॉन्ट्स लोड होऊ शकतील. -
Jit-TR स्निपेट एक लेयर म्हणून इंजेक्ट करा.
आम्ही आमच्या पेटंट-प्रलंबित रनटाइम कोडकडे निर्देश करणारा स्क्रिप्ट टॅग जोडतो – उदाहरणार्थ:. Jit-TR रनटाइम मॉड्यूल उघडलेल्या DOM (document.head आणि document.body) वर चालते, प्रक्रिया करण्यासाठी आमच्या (किंवा कोणत्याही) सर्व्हरकडे काढलेला पेलोड पाठवते, परिणाम प्राप्त करते (भाषांतर, सुधारणा, किंवा नवीन माहिती), दृश्यमान मजकूर पुन्हा लिहिते, आणि मूळच्या वर नवीन अर्थाचे स्तर जोडते. फक्त अस्तित्वात असलेल्या निर्बंध साधे आहेत: स्क्रिप्ट्स वाढवता येऊ शकतात, परंतु नवीन निर्देश साइटच्या स्वतःच्या स्क्रिप्ट्समध्ये कधीही हस्तक्षेप करू शकत नाहीत. हे सामान्यतः वापरून लागू केले जातेMutationObserverDOM मधील संबंधित बदलांसाठी पाहण्यासाठी उदाहरणे, लहान, लक्षित पॅचमध्ये अद्यतने लागू करणे, आणि कोणत्याही विद्यमान अनुप्रयोग लॉजिक किंवा इव्हेंट हँडलर्सला स्पर्श न करणे. -
पर्यायी प्रवाह चालवा: कुकीज, क्लिक, आणि स्क्रोल.
वास्तविक पृष्ठांना सहसा एक किंवा दोन क्रिया आवश्यक असतात: कुकी बॅनर बंद करणे, मेनू उघडणे, अधिक ऑफर लोड करण्यासाठी स्क्रोल करणे. Jit-Browser एक साधा प्रवाह स्क्रिप्ट चालवू शकतो जेणेकरून ते घटक कॅप्चर करण्यापूर्वी दृश्यमान असतील. -
वाढवलेले आउटपुट कॅप्चर करा.
आम्ही जतन करतो:- होस्टिंग किंवा ऑडिटसाठी पूर्णपणे सुधारित HTML.
- संभाव्य अडथळे ओळखण्यासाठी एक टाइमिंग ट्रेस.
हे आमच्या HeadlessChrome101 चे कोर आहे. हे एक मानसिक मॉडेल आहे की ब्राउझर नवीन किंवा विद्यमान डेटा कसा उपचार करू शकतो कोणत्याही ब्राउझरच्या आत एक अंगभूत लेयर म्हणून.
हे फक्त एक खेळणी स्क्रिप्ट का नाही
Jit-Browser महत्त्वाचे आहे कारण ते सिद्ध करते की ब्राउझर-स्तरीय लेयर त्याच तुकड्यांसह तयार केले जाऊ शकते जे ब्राउझर विक्रेते दररोज वापरतात, आणि की हा लेयर कोणत्याही बाह्य सेवेसह पूर्ण क्लायंट-सर्व्हर संवाद सुरक्षितपणे होस्ट करू शकतो, आमच्या स्वतःच्या Jit-TR रनटाइमसह समाविष्ट आहे. हे देखील तो बिंदू आहे जिथे आम्ही SEO-जागरूक सुधारणा जोडतो जसे की rel="alternate" hreflang="..." लिंक्स आणि समृद्ध sitemap.xml नोंदी. प्रत्यक्षात, याचा अर्थ असा आहे की आम्ही वाढवलेली माहिती नॉन-डिसरप्टिव्ह HTML प्रदेशांमध्ये उघड करू शकतो जसे की मूळ पृष्ठाच्या डाव्या किंवा उजव्या बाजूला घटक, किंवा जावास्क्रिप्ट मोडेल्स वापरून जे भाषा निवडी आणि स्मार्टसर्च जोडतात मूळ लेआउट किंवा स्क्रिप्ट्समध्ये हस्तक्षेप न करता.
-
खरे 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 आधीच काय सोडवतो
कठीण भाग हेडलेस क्रोम नाही. कठीण भाग म्हणजे जिवंत, गोंधळलेल्या वेब पृष्ठांना सुरक्षित बहुभाषिक आवृत्त्यांमध्ये विश्वासार्हपणे बदलणे. आमचा मालकीचा रनटाइम api.jit-tr.com आधीच ते काम करतो.
आज, API रनटाइम हाताळतो:
-
भाषा निवड.
हे अशा पॅरामीटर्स वाचतोjittr=ES-419, एज केस सामान्य करतो, आणि निवडलेली भाषा लॉग करतो, उदाहरणार्थ:[Jit-TR] निवडलेली भाषा → ES-419. -
DOM एक्सट्रॅक्शन, अनुवाद, आणि सेमॅंटिक पुनर्लेखन.
रनटाइम खऱ्या क्रोम DOM वर चालतो, फक्त दृश्यमान मजकूर काढतो, संरचित अनुवाद पेलोड तयार करतो, आणि निकाल पुन्हा पृष्ठात लिहितो. सर्व कठीण एज-केसेस स्वयंचलित आहेत: इमोजी अनुक्रम, HTML घटक, विरामचिन्हे आणि अंतर नियम, मिश्र-भाषा स्ट्रिंग्ज, आणि डावीकडून-उजवीकडे / उजवीकडून-डावीकडे स्विचिंग. हे भाषा-विशिष्ट स्क्रिप्ट ब्लॉक्स देखील पुनर्लेखित करते — समावेशआणि इतर संरचित-डेटा टॅग्ज — प्रत्येक भाषेसाठी शोध इंजिन आणि AI प्रणालींसाठी योग्य, स्वतंत्र, कॅश केलेले मेटाडेटा सुनिश्चित करते. -
क्लायंट वर्तन.
हे भाषा ध्वज रेंडर करतो, असुरक्षित मुळांचा आदर करतो, आणि सिंगल-पेज अॅप्स आणि फ्रेमवर्कसह शक्य तितक्या सुरक्षितपणे खेळतो.
हे सर्व आज Jit-TR साइट्सवर चालते. Jit-Browser फक्त नियंत्रित हेडलेस वातावरणात त्याचा पुनर्वापर करतो.
मूळ ब्राउझर वैशिष्ट्यासाठी अजून काय आवश्यक आहे
मूळ ब्राउझर वैशिष्ट्यासाठी अजून काय आवश्यक आहे
Jit-Browser ला एक अंगभूत ब्राउझर वैशिष्ट्यात रूपांतरित करण्यासाठी, कोणालाही चमत्काराची आवश्यकता नाही - फक्त एक लहान, स्पष्टपणे परिभाषित बदलांची क्षमता जी ब्राउझर इंजिन आधीच समजतात.
Jit=-Browser ला एक अंगभूत ब्राउझर वैशिष्ट्यात रूपांतरित करण्यासाठी. हे चमत्कार नाही, फक्त एक लहान बदलांचा संच आहे जो ब्राउझर आधीच समजतात.
-
इंजिनमध्ये एक मूळ हुक.
आज आम्ही हेडलेस क्रोममधून स्क्रिप्ट इंजेक्ट करून हे अनुकरण करतो. एक वास्तविक एकत्रीकरण Jit-TR ला एक समर्पित अनुवाद स्लॉट देईल जेणेकरून ते रेंडरिंग पाइपलाइनच्या योग्य बिंदूवर DOM मजकूर वाचू आणि लिहू शकेल. -
भाषा हेतू व्यक्त करण्याचा एक मानक मार्ग.
आम्ही आधीच वापरतो?jittr=LANGआणि कुकीज. ब्राउझर-स्तरीय उपाय ब्राउझर भाषा सेटिंग्ज आणि वापरकर्त्याच्या निवडींचा आदर करू शकतो जसे की "नेहमी या साइटचा अनुवाद ES-419 मध्ये करा". -
एक स्पष्ट सुरक्षा आणि गोपनीयता फ्रेमवर्क.
कोणता मजकूर डिव्हाइस सोडू शकतो, किती काळ कॅश केला जाऊ शकतो, आणि साइट्स किंवा वापरकर्ते कसे बाहेर पडू शकतात याचे नियम स्पष्ट आणि दस्तऐवजीकरण केलेले असावेत. ब्राउझरच्या आत एक मूळ अंमलबजावणी प्रत्यक्षात अड-हॉक स्क्रिप्ट्सपेक्षा सुरक्षित असू शकते.
उदाहरण: HarmonyOS मध्ये ES-419
येथे पाइपलाइन क्रियेत एक ठोस उदाहरण आहे.
आम्ही कॉल करतो:
getpageJtrBrowser \
"https://www.harmonyos.com/" \
"jittr=ES-419" \
null \
"ES-419/index.php"
Jit-Browser:
- डॉकरच्या आत हेडलेस क्रोम लाँच करतो.
- लोड करतो
https://www.harmonyos.com/. - ES-419 पॅरामीटरसह Jit-TR स्निपेट इंजेक्ट करतो.
- Jit-TR ला दृश्यमान चिनी मजकूर स्पॅनिश (लॅटिन अमेरिका) मध्ये अनुवाद करू देतो.
- निकाल म्हणून जतन करतो
ES-419/index.php.
HarmonyOS साइटला बदलण्याची आवश्यकता नाही. वापरकर्त्याच्या दृष्टीकोनातून, असे दिसते की साइट फक्त त्यांच्या भाषेला समर्थन देते.
हे पृष्ठ का अस्तित्वात आहे
HeadlessChrome101 एक सारांश आहे जो दर्शवतो:
- आम्ही खरे ब्राउझर इंजिन आणि खरे CSP नियम वापरत आहोत.
- आमच्याकडे आधीच एक कार्यरत, मालकीचा अनुवाद रनटाइम आहे.
- मूळ ब्राउझर वैशिष्ट्यापर्यंत उर्वरित अंतर लहान आणि स्पष्टपणे परिभाषित आहे.
जर तुम्ही ब्राउझर, ऑपरेटिंग सिस्टम किंवा मोठ्या प्लॅटफॉर्म्स तयार करत असाल आणि तुमच्या सुरक्षा मॉडेलचा आदर करणारी एक सार्वत्रिक बहुभाषिक स्तर हवी असेल, तर आम्ही बोलण्यासाठी तयार आहोत. कोड अस्तित्वात आहे. वर्तन मोजता येण्याजोगे आहे. पुढील पाऊल म्हणजे भागीदारी.