HeadlessChrome101: איך Jit-Browser הופך את Chrome לדפדפן רב-תפקודי מלא–שכבת דפדפן-שרת
זהו מדריך בשפה פשוטה על מה ש-Jit-Browser עושה עם Chrome ללא ראש, איך הוא משתמש ב-Jit-TR runtime הקנייני, ומה עדיין נדרש כדי להפוך זאת לתכונת דפדפן ברמה ראשונה ולא רק עוד סקריפט.
מכלי צילום מסך פשוט ל-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 כשכבה.
אנו מוסיפים תג סקריפט המצביע על קוד ה-runtime המוגן בפטנט שלנו – לדוגמה:. מודול ה-runtime של Jit-TR עובר על ה-DOM החשוף (document.head ו-document.body), שולח את המטען המופק חזרה לשרת שלנו (או כל שרת אחר) לעיבוד, מקבל את התוצאות (תרגום, שיפור או מידע חדש), כותב מחדש טקסט נראה, ומוסיף שכבות חדשות של משמעות על גבי המקור. המגבלות היחידות שקיימות הן פשוטות: ניתן להוסיף סקריפטים, אך הוראות חדשות לעולם לא יכולות להפריע לסקריפטים של האתר עצמו. זה מיושם בדרך כלל על ידי שימוש בMutationObserverכדי לצפות בשינויים רלוונטיים ב-DOM, להחיל עדכונים בטלאים קטנים וממוקדים, ולהימנע מלגעת בלוגיקה של יישום קיים או במטפלי אירועים. -
הפעלת זרימות אופציונליות: עוגיות, קליקים וגלילה.
דפים אמיתיים לעיתים קרובות זקוקים לפעולה אחת או שתיים: סגירת באנר עוגיות, פתיחת תפריט, גלילה לטעינת הצעות נוספות. Jit-Browser יכול להפעיל סקריפט זרימה פשוט כך שהאלמנטים האלה יהיו גלויים לפני הלכידה. -
לכידת הפלט המוגבר.
אנו שומרים:- את ה-HTML המלא המותאם לאירוח או ביקורת.
- עקבת תזמון לזיהוי צווארי בקבוק פוטנציאליים.
זהו הליבה של HeadlessChrome101 שלנו. זהו המודל המנטלי לאיך דפדפן יכול לטפל בנתונים חדשים או קיימים כשכבה מובנית בתוך כל דפדפן.
למה זה לא רק סקריפט צעצוע
Jit-Browser חשוב כי הוא מוכיח שניתן לבנות שכבה ברמת דפדפן עם אותם חלקים שמוכרי דפדפנים כבר משתמשים בהם כל יום, וששכבה זו יכולה לארח בבטחה אינטראקציה מלאה של לקוח-שרת עם כל שירות חיצוני, כולל ה-runtime שלנו 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 אנו מתייחסים אליו כמו לשכבה יציבה שתמיד פועלת. זה קרוב מאוד לאופן שבו ספק דפדפן יכול לחבר אותו באופן טבעי.
מה ה-API של Jit-TR כבר פותר
החלק הקשה הוא לא Chrome ללא ראש. החלק הקשה הוא להפוך דפי אינטרנט חיים ומבולגנים לגרסאות רב-לשוניות בטוחות באופן אמין. זמן הריצה הקנייני שלנו ב api.jit-tr.com כבר עושה את העבודה הזו.
היום, זמן הריצה של ה-API מטפל ב:
-
בחירת שפה.
הוא קורא פרמטרים כמוjittr=ES-419, מנרמל מקרים קיצוניים ורושם את השפה שנבחרה, לדוגמה:[Jit-TR] שפה שנבחרה → ES-419. -
חילוץ DOM, תרגום ושכתובים סמנטיים.
זמן הריצה עובר על ה-DOM האמיתי של Chrome, מחלץ רק טקסט גלוי, בונה מטען תרגום מובנה וכותב את התוצאות חזרה לדף. כל המקרים הקיצוניים הקשים הם אוטומטיים: רצפי אימוג'י, ישויות HTML, כללי פיסוק וריווח, מחרוזות בשפות מעורבות ומעבר משמאל לימין / מימין לשמאל. הוא גם משכתב בלוקים של סקריפטים ספציפיים לשפה — כוללותגי נתונים מובנים אחרים — ומבטיח שלכל שפה יש מטא-נתונים נכונים, עצמאיים ומטמון למנועי חיפוש ומערכות AI. -
התנהגות לקוח.
הוא מציג דגלי שפה, מכבד שורשים לא בטוחים ומשחק בצורה הבטוחה ביותר האפשרית עם אפליקציות ודפי אינטרנט בודדים ומסגרות.
כל זה כבר פועל באתרים של 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 אמיתיים.
- כבר יש לנו זמן ריצה לתרגום קנייני שעובד.
- הפער שנותר לתכונת דפדפן מקורית הוא קטן ומוגדר היטב.
אם אתם בונים דפדפנים, מערכות הפעלה או פלטפורמות גדולות ורוצים שכבה רב-לשונית אוניברסלית שמכבדת את מודל האבטחה שלכם, אנחנו מוכנים לדבר. הקוד קיים. ההתנהגות ניתנת למדידה. הצעד הבא הוא שותפות.