HeadlessChrome101: Bagaimana Jit-Browser Mengubah Chrome Menjadi Pelayar Pelbagai Fungsi – Lapisan Pelayan-Pelayar
Ini adalah panduan dalam bahasa biasa tentang apa yang dilakukan Jit-Browser dengan Chrome tanpa kepala, bagaimana ia menggunakan runtime Jit-TR yang proprietari, dan apa yang masih diperlukan untuk menjadikan ini sebagai ciri pelayar kelas pertama dan bukannya hanya skrip lain.
Dari alat tangkapan skrin yang sederhana kepada Jit-Browser
Kami bermula dengan alat baris perintah kecil: getpage https://example.com page.png. Ia menghidupkan Chrome dalam kontena Docker, mengambil tangkapan skrin dari example.com yang dirender dari halaman, dan keluar.
Bukti konsep yang berguna. Setiap panggilan adalah permulaan sejuk. Ia tidak tahu apa-apa tentang terjemahan, sesi, atau keadaan. Ia hanyalah kamera tanpa kepala.
Jit-Browser adalah langkah seterusnya. Ia masih menggunakan Chrome sebenar, tetapi sekarang:
- Ia mencatat apa yang berlaku di dalam halaman.
- Ia menyuntik skrip Jit-TR sebagai lapisan terjemahan.
- Ia boleh mengikuti aliran sederhana seperti banner kuki atau dropdown.
- Ia menangkap HTML yang telah diterjemahkan sepenuhnya, bukan hanya tangkapan skrin.
Halaman ini menerangkan saluran itu supaya anda dapat melihat bahawa kami tidak hanya bercakap kosong. Kami menunjukkan bagaimana lapisan pelbagai bahasa di peringkat pelayar sebenarnya boleh berfungsi.
Saluran Jit-Browser dalam 6 langkah
Pada tahap tinggi, setiap tangkapan mengikuti urutan yang sama.
-
Lancarkan Chrome sebenar (tanpa kepala) di dalam Docker.
Kami menggunakan Puppeteer (pptr.dev) untuk memulakan enjin yang sama yang menggerakkan pelayar biasa, tetapi tanpa tingkap yang kelihatan. Tiada pengurai khusus, tiada rendering palsu. -
Terapkan kuki atau keadaan log masuk (jika dikonfigurasikan).
Untuk demo yang memerlukan sesi log masuk, kami memainkan semula kuki anda. Tiada kekuatan kasar, tiada tekaan kata laluan, tiada pengikisan akaun yang tidak kami kawal. -
Muatkan halaman sasaran tepat seperti pengguna.
HTML, CSS, JavaScript, fon, imej. Kami menunggunetworkidle2(https://pptr.dev/api/puppeteer.page.waitfornetworkidle) supaya bundel dan fon yang lambat dapat selesai dimuat. -
Suntikkan potongan Jit-TR sebagai lapisan.
Kami menambah tag skrip yang menunjuk kepada kod runtime kami yang sedang dipatenkan – sebagai contoh:. Modul runtime Jit-TR berjalan melalui DOM yang terdedah (document.head dan document.body), menghantar muatan yang diekstrak kembali ke pelayan kami (atau mana-mana) untuk diproses, menerima hasil (terjemahan, peningkatan, atau maklumat baru), menulis semula teks yang kelihatan, dan menambah lapisan makna baru di atas yang asal. Satu-satunya sekatan yang wujud adalah sederhana: skrip boleh ditambah baik, tetapi arahan baru tidak boleh mengganggu skrip laman itu sendiri. Ini biasanya dilaksanakan dengan menggunakanMutationObserverinstans untuk memantau perubahan yang relevan dalam DOM, menerapkan kemas kini dalam tampalan kecil yang disasarkan, dan mengelakkan menyentuh sebarang logik aplikasi atau pengendali acara yang sedia ada. -
Jalankan aliran pilihan: kuki, klik, dan skrol.
Halaman sebenar sering memerlukan satu atau dua tindakan: menutup banner kuki, membuka menu, skrol untuk memuat lebih banyak tawaran. Jit-Browser boleh menjalankan skrip aliran sederhana supaya elemen tersebut dapat dilihat sebelum tangkapan. -
Tangkap output yang ditambah baik.
Kami menyimpan:- HTML yang telah diubah sepenuhnya untuk hosting atau audit.
- Jejak masa untuk mengenal pasti potensi leher botol.
Itulah inti dari HeadlessChrome101 kami. Ia adalah model mental tentang bagaimana pelayar boleh memperlakukan data baru atau sedia ada sebagai lapisan terbina dalam di dalam mana-mana pelayar.
Mengapa ini bukan sekadar skrip mainan
Jit-Browser penting kerana ia membuktikan bahawa lapisan di peringkat pelayar boleh dibina dengan kepingan yang sama yang digunakan oleh vendor pelayar setiap hari, dan bahawa lapisan ini boleh dengan selamat menampung interaksi klien-pelayan penuh dengan mana-mana perkhidmatan luar, termasuk runtime Jit-TR kami sendiri. Ia juga adalah titik di mana kami menambah peningkatan yang peka terhadap SEO seperti rel="alternate" hreflang="..." pautan dan diperkaya sitemap.xml entri. Dalam praktiknya, ini bermakna kami boleh mendedahkan maklumat yang ditambah baik di dalam kawasan HTML yang tidak mengganggu seperti elemen di sebelah kiri atau kanan halaman yang sedia ada, atau dengan menggunakan mod JavaScript yang mengikat pilihan bahasa dan SmartSearch tanpa mengganggu susun atur atau skrip asal.
-
Enjin Chrome sebenar.
Segala-galanya berjalan di Chrome itu sendiri - hanya tanpa tingkap yang kelihatan. Jika ia berfungsi di Chrome untuk pengunjung anda, ia berfungsi di Jit-Browser. -
Sedar tentang Dasar Keselamatan Kandungan.
Kebanyakan laman web mengunci skrip dengan CSP. Dalam mod tanpa kepala kami boleh menggunakansetBypassCSP(true)(https://pptr.dev/api/puppeteer.page.setbypasscsp) untuk menyuntikkan Jit-TR ke dalam persekitaran tangkapan. Kami tidak memerlukan mana-mana laman pengeluaran untuk melemahkan dasar keselamatan mereka. -
Masa penuh dan log.
Kami merekodkan masa pelancaran, masa muat halaman, permulaan Jit-TR, langkah aliran, dan tangkapan. Anda boleh melihat ke mana milisaat pergi dan apa yang sebenarnya dilakukan Jit-TR di halaman. -
Pemisahan skrip dan lapisan.
Hari ini, Jit-TR boleh menjadi "hanya skrip" yang anda tambahkan ke laman. Dalam Jit-Browser, kami menganggapnya sebagai lapisan stabil yang sentiasa berjalan. Itu sangat dekat dengan cara vendor pelayar boleh menyambungkannya secara asli.
Apa yang sudah diselesaikan oleh API Jit-TR
Bahagian yang sukar bukanlah Chrome tanpa kepala. Bahagian yang sukar adalah secara boleh dipercayai menukar halaman web langsung yang berantakan menjadi versi pelbagai bahasa yang selamat. Runtime proprietari kami di api.jit-tr.com sudah melakukan kerja itu.
Hari ini, runtime API mengendalikan:
-
Pemilihan bahasa.
Ia membaca parameter sepertijittr=ES-419, menormalkan kes tepi, dan merekodkan bahasa yang dipilih, contohnya:[Jit-TR] Bahasa yang dipilih → ES-419. -
Ekstraksi DOM, terjemahan, dan penulisan semula semantik.
Runtime berjalan melalui DOM Chrome yang sebenar, mengekstrak hanya teks yang boleh dilihat, membina muatan terjemahan yang terstruktur, dan menulis hasil kembali ke dalam halaman. Semua kes tepi yang sukar adalah automatik: urutan emoji, entiti HTML, peraturan tanda baca dan jarak, rentetan bahasa campuran, dan penukaran Kiri ke Kanan / Kanan ke Kiri. Ia juga menulis semula blok skrip khusus bahasa — termasukdan tag data terstruktur lain — memastikan bahawa setiap bahasa mempunyai metadata yang betul, bebas, dan disimpan untuk enjin carian dan sistem AI. -
Tingkah laku klien.
Ia memaparkan bendera bahasa, menghormati akar yang tidak selamat, dan berfungsi seaman mungkin dengan aplikasi dan rangka kerja halaman tunggal.
Semua ini sudah berjalan di laman Jit-TR hari ini. Jit-Browser hanya menggunakan semula dalam persekitaran tanpa kepala yang terkawal.
Apa yang masih diperlukan untuk ciri pelayar asli
Apa yang masih diperlukan untuk ciri pelayar asli
Untuk menjadikan Jit-Browser sebagai ciri pelayar terbina dalam, tiada siapa yang memerlukan keajaiban - hanya keupayaan untuk meletakkan satu set perubahan kecil yang ditakrifkan dengan baik yang sudah difahami oleh enjin pelayar.
Untuk menjadikan Jit-Browser sebagai ciri pelayar terbina dalam. Ini bukan keajaiban, hanya satu set kecil perubahan yang sudah difahami oleh pelayar.
-
Sambungan asli dalam enjin.
Hari ini kami mensimulasikan ini dengan menyuntikkan skrip dari Chrome tanpa kepala. Integrasi sebenar akan memberikan Jit-TR slot terjemahan khusus supaya ia boleh membaca dan menulis teks DOM pada titik yang betul dalam saluran rendering. -
Cara standard untuk menyatakan niat bahasa.
Kami sudah menggunakan?jittr=LANGdan kuki. Penyelesaian peringkat pelayar boleh menghormati tetapan bahasa pelayar dan pilihan pengguna seperti "sentiasa terjemahkan laman ini ke ES-419". -
Rangka kerja keselamatan dan privasi yang jelas.
Peraturan untuk teks apa yang boleh meninggalkan peranti, berapa lama ia boleh disimpan, dan bagaimana laman atau pengguna boleh memilih keluar harus jelas dan didokumenkan. Pelaksanaan asli di dalam pelayar sebenarnya boleh lebih selamat daripada skrip ad-hoc.
Contoh: HarmonyOS dalam ES-419
Berikut adalah contoh konkrit saluran dalam tindakan.
Kami memanggil:
getpageJtrBrowser \
"https://www.harmonyos.com/" \
"jittr=ES-419" \
null \
"ES-419/index.php"
Jit-Browser:
- Melancarkan Chrome tanpa kepala di dalam Docker.
- Memuat
https://www.harmonyos.com/. - Menyuntikkan petikan Jit-TR dengan parameter ES-419.
- Membiarkan Jit-TR menterjemahkan teks Cina yang boleh dilihat ke dalam bahasa Sepanyol (Amerika Latin).
- Menyimpan hasil sebagai
ES-419/index.php.
Laman HarmonyOS tidak perlu diubah. Dari perspektif pengguna, ia kelihatan seperti laman tersebut hanya menyokong bahasa mereka.
Mengapa halaman ini wujud
HeadlessChrome101 adalah ringkasan yang menunjukkan:
- Kami menggunakan enjin pelayar sebenar dan peraturan CSP sebenar.
- Kami sudah mempunyai runtime terjemahan proprietari yang berfungsi.
- Jurang yang tinggal untuk ciri pelayar asli adalah kecil dan ditakrifkan dengan baik.
Jika anda membina pelayar, sistem pengendalian, atau platform besar dan ingin lapisan multibahasa universal yang menghormati model keselamatan anda, kami sedia untuk berbincang. Kodnya wujud. Tingkah lakunya boleh diukur. Langkah seterusnya adalah kerjasama.