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 خطوات
على مستوى عالٍ، يتبع كل التقاط نفس التسلسل.
-
تشغيل 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'ssetBypassCSP(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، الترجمة، وإعادة الكتابة الدلالية.
تقوم بيئة التشغيل بالتجول في DOM الحقيقي لـ Chrome، وتستخرج النص المرئي فقط، وتبني حمولة ترجمة منظمة، وتكتب النتائج مرة أخرى في الصفحة. جميع الحالات الخاصة الصعبة تتم تلقائيًا: تسلسلات الرموز التعبيرية، كيانات HTML، قواعد الترقيم والمسافات، السلاسل المختلطة اللغة، والتبديل من اليسار إلى اليمين / من اليمين إلى اليسار. كما تعيد كتابة كتل النصوص البرمجية الخاصة باللغة — بما في ذلكوعلامات البيانات المنظمة الأخرى — لضمان أن كل لغة لديها بيانات وصفية صحيحة ومستقلة ومخزنة مؤقتًا لمحركات البحث وأنظمة الذكاء الاصطناعي. -
سلوك العميل.
يعرض أعلام اللغة، يحترم الجذور غير الآمنة، ويلعب بأمان قدر الإمكان مع التطبيقات ذات الصفحة الواحدة والأطر.
كل هذا يعمل بالفعل على مواقع Jit-TR اليوم. Jit-Browser يعيد استخدامه ببساطة في بيئة بدون رأس محكومة.
ما الذي لا يزال مطلوبًا لميزة متصفح أصلية
ما الذي لا يزال مطلوبًا لميزة متصفح أصلية
لتحويل Jit-Browser إلى ميزة مدمجة في المتصفح، لا يحتاج أحد إلى معجزة - فقط القدرة على وضع مجموعة صغيرة ومحددة جيدًا من التغييرات التي تفهمها محركات المتصفح بالفعل.
لتحويل Jit=-Browser إلى ميزة مدمجة في المتصفح. هذا ليس معجزة، فقط مجموعة صغيرة من التغييرات التي تفهمها المتصفحات بالفعل.
-
خطاف أصلي في المحرك.
اليوم نحاكي هذا عن طريق حقن نص برمجي من Chrome بدون رأس. ستمنح التكامل الحقيقي 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:
- يطلق Chrome بدون رأس داخل Docker.
- يحمّل
https://www.harmonyos.com/. - يحقن مقتطف Jit-TR مع معلمة ES-419.
- يترك Jit-TR يترجم النص الصيني المرئي إلى الإسبانية (أمريكا اللاتينية).
- يحفظ النتيجة كـ
ES-419/index.php.
لا يحتاج موقع HarmonyOS إلى التغيير. من منظور المستخدم، يبدو أن الموقع يدعم لغتهم ببساطة.
لماذا توجد هذه الصفحة
HeadlessChrome101 هو ملخص يظهر:
- نحن نستخدم محركات متصفح حقيقية وقواعد CSP حقيقية.
- لدينا بالفعل بيئة تشغيل ترجمة خاصة تعمل.
- الفجوة المتبقية لميزة متصفح أصلية صغيرة ومحددة جيدًا.
إذا كنت تبني متصفحات أو أنظمة تشغيل أو منصات كبيرة وتريد طبقة متعددة اللغات عالمية تحترم نموذج الأمان الخاص بك، فنحن جاهزون للتحدث. الكود موجود. السلوك قابل للقياس. الخطوة التالية هي الشراكة.