ہیڈلیس کروم 101: جِٹ-براؤزر کیسے کروم کو ایک مکمل ملٹی-فنکشن براؤزر–سرور-براؤزر لیئر میں تبدیل کرتا ہے
یہ ایک سادہ زبان میں وضاحت ہے کہ جِٹ-براؤزر ہیڈلیس کروم کے ساتھ کیا کرتا ہے، یہ کس طرح ملکیتی جِٹ-ٹی آر رن ٹائم کا استعمال کرتا ہے، اور اسے صرف ایک اور اسکرپٹ کی بجائے ایک اعلیٰ درجے کی براؤزر خصوصیت بنانے کے لیے کیا ابھی بھی درکار ہے۔
ایک سادہ اسکرین شاٹ ٹول سے جِٹ-براؤزر تک
ہم نے ایک چھوٹے کمانڈ لائن ٹول سے آغاز کیا: getpage https://example.com page.png. یہ کروم کو ایک ڈاکر کنٹینر میں چلاتا، پیج سے رینڈر کردہ example.com کا اسکرین شاٹ لیتا، اور باہر نکل جاتا۔
مفید تصور کا ثبوت۔ ہر کال ایک کولڈ اسٹارٹ تھی۔ اسے ترجمہ، سیشنز، یا حالت کے بارے میں کچھ معلوم نہیں تھا۔ یہ صرف ایک ہیڈلیس کیمرہ تھا۔
جِٹ-براؤزر اگلا قدم ہے۔ یہ اب بھی حقیقی کروم کا استعمال کرتا ہے، لیکن اب:
- یہ پیج کے اندر کیا ہوتا ہے اس کا لاگ بناتا ہے۔
- یہ جِٹ-ٹی آر اسکرپٹ کو ایک ترجمہ لیئر کے طور پر انجیکٹ کرتا ہے۔
- یہ کوکی بینرز یا ڈراپ ڈاؤنز جیسے سادہ فلو کو فالو کر سکتا ہے۔
- یہ مکمل ترجمہ شدہ HTML کو کیپچر کرتا ہے، نہ کہ صرف ایک اسکرین شاٹ۔
یہ صفحہ اس پائپ لائن کی وضاحت کرتا ہے تاکہ آپ دیکھ سکیں کہ ہم ہاتھ نہیں ہلا رہے ہیں۔ ہم دکھا رہے ہیں کہ براؤزر سطح کی کثیر لسانی لیئر حقیقت میں کیسے کام کر سکتی ہے۔
جِٹ-براؤزر پائپ لائن 6 مراحل میں
اعلی سطح پر، ہر کیپچر ایک ہی ترتیب کی پیروی کرتا ہے۔
-
ڈاکر کے اندر حقیقی کروم (ہیڈلیس) لانچ کریں۔
ہم پپٹیئر (pptr.dev) کا استعمال کرتے ہیں تاکہ وہی انجن شروع کیا جا سکے جو عام براؤزرز کو طاقت دیتا ہے، لیکن بغیر کسی نظر آنے والی ونڈو کے۔ کوئی کسٹم پارسر نہیں، کوئی جعلی رینڈرنگ نہیں۔ -
کوکیز یا لاگ ان حالت کا اطلاق کریں (اگر ترتیب دی گئی ہو)۔
ان ڈیموز کے لیے جنہیں لاگ ان سیشن کی ضرورت ہوتی ہے، ہم آپ کی کوکیز کو دوبارہ چلاتے ہیں۔ کوئی بروٹ فورس نہیں، کوئی پاس ورڈ گیسنگ نہیں، کوئی ایسے اکاؤنٹس کو اسکریپ نہیں کرتے جنہیں ہم کنٹرول نہیں کرتے۔ -
ہدف صفحہ کو بالکل ایک صارف کی طرح لوڈ کریں۔
HTML، CSS، جاوا اسکرپٹ، فونٹس، تصاویر۔ ہم انتظار کرتے ہیںnetworkidle2(https://pptr.dev/api/puppeteer.page.waitfornetworkidle) تاکہ سست بنڈلز اور فونٹس لوڈنگ مکمل کر سکیں۔ -
جِٹ-ٹی آر اسنیپٹ کو ایک لیئر کے طور پر انجیکٹ کریں۔
ہم اپنے پیٹنٹ زیر التواء رن ٹائم کوڈ کی طرف اشارہ کرنے والا ایک اسکرپٹ ٹیگ شامل کرتے ہیں – مثال کے طور پر:. جِٹ-ٹی آر رن ٹائم ماڈیول ظاہر شدہ DOM (document.head اور document.body) کو چلاتا ہے، نکالا گیا پیلوڈ ہمارے (یا کسی بھی) سرور کو پروسیس کرنے کے لیے بھیجتا ہے، نتائج وصول کرتا ہے (ترجمہ، اضافہ، یا نئی معلومات)، نظر آنے والے متن کو دوبارہ لکھتا ہے، اور اصل کے اوپر معنی کی نئی تہیں شامل کرتا ہے۔ موجودہ پابندیاں سادہ ہیں: اسکرپٹس کو بڑھایا جا سکتا ہے، لیکن نئی ہدایات کبھی بھی سائٹ کے اپنے اسکرپٹس میں مداخلت نہیں کر سکتیں۔ یہ عام طور پرMutationObserverانسٹینسز کا استعمال کرتے ہوئے لاگو کیا جاتا ہے تاکہ DOM میں متعلقہ تبدیلیوں کی نگرانی کی جا سکے، چھوٹے، ہدف شدہ پیچز میں اپ ڈیٹس کا اطلاق کیا جا سکے، اور کسی بھی موجودہ ایپلیکیشن لاجک یا ایونٹ ہینڈلرز کو چھونے سے بچا جا سکے۔ -
اختیاری فلو چلائیں: کوکیز، کلکس، اور اسکرول۔
حقیقی صفحات کو اکثر ایک یا دو اعمال کی ضرورت ہوتی ہے: کوکی بینر کو بند کرنا، مینو کھولنا، مزید آفرز لوڈ کرنے کے لیے اسکرول کرنا۔ جِٹ-براؤزر ایک سادہ فلو اسکرپٹ چلا سکتا ہے تاکہ وہ عناصر کیپچر سے پہلے نظر آئیں۔ -
بڑھائے گئے آؤٹ پٹ کو کیپچر کریں۔
ہم محفوظ کرتے ہیں:- میزبانی یا آڈٹ کے لیے مکمل طور پر ترمیم شدہ HTML۔
- ممکنہ رکاوٹوں کی نشاندہی کرنے کے لیے ایک ٹائمنگ ٹریس۔
یہ ہمارے ہیڈلیس کروم 101 کا بنیادی حصہ ہے۔ یہ ذہنی ماڈل ہے کہ براؤزر نئے یا موجودہ ڈیٹا کو کسی بھی براؤزر کے اندر ایک بلٹ ان لیئر کے طور پر کیسے برت سکتا ہے۔
یہ صرف ایک کھلونا اسکرپٹ کیوں نہیں ہے
جِٹ-براؤزر اہم ہے کیونکہ یہ ثابت کرتا ہے کہ براؤزر سطح کی لیئر کو انہی ٹکڑوں کے ساتھ بنایا جا سکتا ہے جو براؤزر وینڈرز ہر روز استعمال کرتے ہیں، اور یہ کہ یہ لیئر کسی بھی بیرونی سروس کے ساتھ مکمل کلائنٹ-سرور تعامل کو محفوظ طریقے سے ہوسٹ کر سکتی ہے، بشمول ہمارے اپنے جِٹ-ٹی آر رن ٹائم۔ یہ وہ نقطہ بھی ہے جہاں ہم SEO سے آگاہ اضافہ شامل کرتے ہیں جیسے rel="alternate" hreflang="..." لنکس اور افزودہ sitemap.xml اندراجات۔ عملی طور پر، اس کا مطلب یہ ہے کہ ہم غیر مداخلتی HTML علاقوں کے اندر بڑھائی گئی معلومات کو ظاہر کر سکتے ہیں جیسے موجودہ صفحہ کے بائیں یا دائیں عناصر، یا جاوا اسکرپٹ موڈلز کا استعمال کرتے ہوئے جو زبان کے انتخاب اور اسمارٹ سرچ کو اصل لے آؤٹ یا اسکرپٹس میں مداخلت کیے بغیر شامل کرتے ہیں۔
-
حقیقی کروم انجن۔
سب کچھ خود کروم پر چلتا ہے - بس بغیر کسی نظر آنے والی ونڈو کے۔ اگر یہ آپ کے وزیٹرز کے لیے کروم میں کام کرتا ہے، تو یہ جِٹ-براؤزر میں کام کرتا ہے۔ -
مواد کی سیکیورٹی پالیسی سے آگاہ۔
زیادہ تر سائٹس CSP کے ساتھ اسکرپٹس کو لاک کرتی ہیں۔ ہیڈلیس موڈ میں ہم کروم کے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 in 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 قواعد استعمال کر رہے ہیں۔
- ہمارے پاس پہلے سے ہی ایک کام کرنے والا، ملکیتی ترجمہ رن ٹائم ہے۔
- ایک مقامی براؤزر فیچر کے لیے باقی خلا چھوٹا اور اچھی طرح سے متعین ہے۔
اگر آپ براؤزرز، آپریٹنگ سسٹمز، یا بڑے پلیٹ فارمز بناتے ہیں اور ایک عالمی کثیر لسانی پرت چاہتے ہیں جو آپ کے سیکیورٹی ماڈل کا احترام کرتی ہو، تو ہم بات کرنے کے لیے تیار ہیں۔ کوڈ موجود ہے۔ رویہ قابل پیمائش ہے۔ اگلا قدم شراکت داری ہے۔