Skip to content

तृतीय-पक्ष पोर्टल के खिलाफ UI-निर्भर स्वचालन

प्रत्येक एंटरप्राइज़ में ऐसे पोर्टल की एक सूची होती है जिनमें कर्मचारी प्रतिदिन मैन्युअल रूप से लॉग इन करते हैं, ऐसे कार्य करने के लिए जो स्वचालित होने चाहिए लेकिन नहीं हैं। ऑर्डर स्थिति जाँचने के लिए विक्रेता पोर्टल। नियामक प्रस्तुतियाँ दर्ज करने के लिए सरकारी साइटें। पात्रता सत्यापित करने और दावा स्थिति जाँचने के लिए इंश्योरेंस पेयर पोर्टल। क्रेडेंशियल सत्यापन के लिए राज्य लाइसेंसिंग बोर्ड। अनुपालन फाइलिंग के लिए कर प्राधिकरण पोर्टल।

इन पोर्टल के पास API नहीं हैं। या उनके पास API हैं जो अनदस्तावेज़ीकृत, दर-सीमित, या "पसंदीदा भागीदारों" तक सीमित हैं जो पहुँच के लिए भुगतान करते हैं। डेटा लॉगिन पृष्ठ के पीछे रहता है, HTML में रेंडर किया जाता है, और इसे बाहर निकालने का एकमात्र तरीका लॉग इन करना और UI नेविगेट करना है।

पारंपरिक स्वचालन ब्राउज़र स्क्रिप्ट का उपयोग करती है। Selenium, Playwright, या Puppeteer स्क्रिप्ट जो लॉग इन करती हैं, सही पृष्ठ पर नेविगेट करती हैं, CSS सेलेक्टर या XPath द्वारा तत्व खोजती हैं, डेटा निकालती हैं, और लॉग आउट करती हैं। ये स्क्रिप्ट तब तक काम करती हैं जब तक नहीं करतीं। एक पोर्टल रीडिज़ाइन CSS क्लास नाम बदलता है। एक नया CAPTCHA लॉगिन प्रवाह में जोड़ा जाता है। नेविगेशन मेनू साइडबार से हैमबर्गर मेनू में चला जाता है। एक कुकी सहमति बैनर सबमिट बटन को ढकने लगता है। स्क्रिप्ट चुपचाप टूट जाती है, और कोई नहीं जानता जब तक डेटा पर निर्भर डाउनस्ट्रीम प्रक्रिया त्रुटियाँ उत्पन्न करना शुरू नहीं कर देती।

राज्य चिकित्सा बोर्ड एक विशेष रूप से कठिन उदाहरण हैं। पचास हैं, प्रत्येक एक अलग वेबसाइट, अलग लेआउट, अलग प्रमाणीकरण विधियों, और अलग डेटा प्रारूपों के साथ। वे बिना सूचना के अपने स्वयं के शेड्यूल पर पुनः डिज़ाइन करते हैं। एक क्रेडेंशियल सत्यापन सेवा जो इन साइटों को स्क्रैप करने पर निर्भर करती है, किसी भी समय उनकी पचास स्क्रिप्ट में से पाँच या दस टूटी हो सकती हैं, प्रत्येक के लिए एक डेवलपर की आवश्यकता होती है नए लेआउट का निरीक्षण करने और सेलेक्टर फिर से लिखने के लिए।

Triggerfish इसे कैसे हल करता है

Triggerfish का ब्राउज़र स्वचालन CDP-नियंत्रित Chromium को LLM-आधारित दृश्य नेविगेशन के साथ जोड़ता है। एजेंट पृष्ठ को रेंडर किए गए पिक्सल और एक्सेसिबिलिटी स्नैपशॉट के रूप में देखता है, DOM ट्री के रूप में नहीं। यह तत्वों को उनके दिखने और करने के आधार पर पहचानता है, उनके CSS क्लास नाम से नहीं। जब एक पोर्टल पुनः डिज़ाइन होता है, तो एजेंट अनुकूलित होता है क्योंकि लॉगिन फॉर्म अभी भी लॉगिन फॉर्म की तरह दिखते हैं, नेविगेशन मेनू अभी भी नेविगेशन मेनू की तरह दिखते हैं, और डेटा तालिकाएँ अभी भी डेटा तालिकाओं की तरह दिखती हैं।

सेलेक्टर स्क्रिप्ट के बजाय दृश्य नेविगेशन

ब्राउज़र स्वचालन टूल सात ऑपरेशन के माध्यम से काम करते हैं: navigate, snapshot, click, type, select, scroll, और wait। एजेंट एक URL पर नेविगेट करता है, रेंडर किए गए पृष्ठ का स्नैपशॉट लेता है, जो देखता है उसके बारे में तर्क करता है, और तय करता है कि क्या कार्रवाई करनी है। कोई evaluate टूल नहीं है जो पृष्ठ संदर्भ में मनमाना JavaScript चलाता है। यह एक जानबूझकर सुरक्षा निर्णय है। एजेंट पृष्ठ के साथ उसी तरह इंटरैक्ट करता है जैसे एक मानव करता, UI के माध्यम से, और वह कोड निष्पादित नहीं कर सकता जिसे एक दुर्भावनापूर्ण पृष्ठ द्वारा शोषित किया जा सके।

जब एजेंट एक लॉगिन फॉर्म का सामना करता है, तो यह दृश्य लेआउट, प्लेसहोल्डर टेक्स्ट, लेबल, और पृष्ठ संरचना के आधार पर उपयोगकर्ता नाम फील्ड, पासवर्ड फील्ड, और सबमिट बटन की पहचान करता है। इसे यह जानने की आवश्यकता नहीं है कि उपयोगकर्ता नाम फील्ड में id="auth-input-email" या class="login-form__email-field" है। जब वे पहचानकर्ता एक पुनः डिज़ाइन में बदलते हैं, तो एजेंट ध्यान नहीं देता क्योंकि उसने कभी उन पर निर्भर नहीं किया।

साझा डोमेन सुरक्षा

ब्राउज़र नेविगेशन वेब फेच ऑपरेशन के समान डोमेन सुरक्षा कॉन्फ़िगरेशन साझा करता है। triggerfish.yaml में एक एकल कॉन्फ़िग ब्लॉक SSRF denylist, डोमेन allowlist, डोमेन denylist, और डोमेन-से-वर्गीकरण मैपिंग परिभाषित करता है। जब एजेंट CONFIDENTIAL पर वर्गीकृत एक विक्रेता पोर्टल पर नेविगेट करता है, तो सत्र taint स्वचालित रूप से CONFIDENTIAL तक बढ़ता है।

SSRF denylist हार्डकोड और गैर-ओवरराइड करने योग्य है। निजी IP रेंज, लिंक-लोकल पते, और क्लाउड मेटाडेटा एंडपॉइंट हमेशा ब्लॉक होते हैं। अनुरोध से पहले DNS रिज़ोल्यूशन की जाँच की जाती है, DNS rebinding हमलों को रोकते हुए। यह मायने रखता है क्योंकि ब्राउज़र स्वचालन किसी भी एजेंट सिस्टम में उच्चतम-जोखिम आक्रमण सतह है।

ब्राउज़र प्रोफाइल वॉटरमार्किंग

प्रत्येक एजेंट अपना स्वयं का ब्राउज़र प्रोफाइल बनाए रखता है, जो समय के साथ पोर्टल के साथ इंटरैक्ट करते हुए कुकीज़, लोकल स्टोरेज, और सत्र डेटा संग्रहीत करता है। प्रोफाइल एक वर्गीकरण वॉटरमार्क वहन करता है जो उच्चतम वर्गीकरण स्तर रिकॉर्ड करता है जिस पर इसका उपयोग किया गया है। यह वॉटरमार्क केवल बढ़ सकता है, कभी कम नहीं हो सकता।

यदि एक एजेंट अपने ब्राउज़र प्रोफाइल का उपयोग CONFIDENTIAL विक्रेता पोर्टल में लॉग इन करने के लिए करता है, तो प्रोफाइल CONFIDENTIAL पर वॉटरमार्क किया जाता है। PUBLIC वर्गीकरण पर चलने वाला एक बाद का सत्र उस प्रोफाइल का उपयोग नहीं कर सकता, संवेदनशील जानकारी को कम-वर्गीकृत सत्र में कैश किए गए क्रेडेंशियल, कुकीज़, या सत्र टोकन के माध्यम से लीक होने से रोकता है।

क्रेडेंशियल प्रबंधन

पोर्टल क्रेडेंशियल OS keychain (व्यक्तिगत स्तर) या एंटरप्राइज़ vault (एंटरप्राइज़ स्तर) में संग्रहीत होते हैं, कभी कॉन्फ़िगरेशन फ़ाइलों या एनवायरनमेंट वेरिएबल में नहीं। SECRET_ACCESS hook हर क्रेडेंशियल पुनर्प्राप्ति को लॉग करता है। क्रेडेंशियल निष्पादन समय पर वर्कफ़्लो इंजन द्वारा हल किए जाते हैं और ब्राउज़र सत्रों में टाइपिंग इंटरफेस के माध्यम से इंजेक्ट किए जाते हैं, प्रोग्रामेटिक रूप से फॉर्म मूल्य सेट करके नहीं।

सामान्य पोर्टल परिवर्तनों के प्रति लचीलापन

यहाँ वह होता है जब सामान्य पोर्टल परिवर्तन होते हैं:

लॉगिन पृष्ठ पुनः डिज़ाइन। एजेंट एक नया स्नैपशॉट लेता है, अपडेट किए गए लेआउट की पहचान करता है, और दृश्य संदर्भ द्वारा फॉर्म फील्ड खोजता है। जब तक पोर्टल एक पूरी तरह अलग प्रमाणीकरण विधि (SAML, OAuth, हार्डवेयर टोकन) पर स्विच न करे, लॉगिन किसी भी कॉन्फ़िगरेशन परिवर्तन के बिना काम करना जारी रखता है।

नेविगेशन पुनर्संरचना। एजेंट लॉगिन के बाद पृष्ठ पढ़ता है और URL पैटर्न के बजाय लिंक टेक्स्ट, मेनू लेबल, और पृष्ठ शीर्षकों के आधार पर लक्ष्य अनुभाग पर नेविगेट करता है। यदि विक्रेता पोर्टल "Order Status" को बाएँ साइडबार से शीर्ष नेविगेशन ड्रॉपडाउन में ले गया, तो एजेंट वहाँ खोजता है।

नई कुकी सहमति बैनर। एजेंट बैनर देखता है, accept/dismiss बटन की पहचान करता है, उस पर क्लिक करता है, और मूल कार्य के साथ जारी रहता है। यह LLM की सामान्य पृष्ठ समझ द्वारा संभाला जाता है, न कि किसी विशेष-उद्देश्य कुकी हैंडलर द्वारा।

CAPTCHA जोड़ा गया। यहीं दृष्टिकोण की ईमानदार सीमाएँ हैं। सरल छवि CAPTCHA LLM की दृष्टि क्षमताओं के आधार पर हल करने योग्य हो सकती है, लेकिन reCAPTCHA v3 और इसी तरह की व्यवहार विश्लेषण प्रणालियाँ स्वचालित ब्राउज़र को ब्लॉक कर सकती हैं। वर्कफ़्लो इन्हें चुपचाप विफल होने के बजाय एक मानव हस्तक्षेप कतार में रूट करती है।

MFA प्रॉम्प्ट। यदि पोर्टल MFA की आवश्यकता शुरू कर देता है जो पहले आवश्यक नहीं था, तो एजेंट अप्रत्याशित पृष्ठ का पता लगाता है, अधिसूचना प्रणाली के माध्यम से स्थिति की रिपोर्ट करता है, और वर्कफ़्लो को तब तक रोकता है जब तक एक मानव MFA चरण पूरा नहीं कर लेता। वर्कफ़्लो को MFA पूरा होने की प्रतीक्षा करने और फिर जहाँ छोड़ा था वहाँ से फिर से शुरू करने के लिए कॉन्फ़िगर किया जा सकता है।

एकाधिक पोर्टल में बैच प्रोसेसिंग

वर्कफ़्लो इंजन का for लूप समर्थन का मतलब है कि एक एकल वर्कफ़्लो एकाधिक पोर्टल लक्ष्यों पर iterate कर सकती है। एक क्रेडेंशियल सत्यापन सेवा एक वर्कफ़्लो परिभाषित कर सकती है जो एकल बैच रन में सभी पचास राज्य चिकित्सा बोर्डों में लाइसेंस स्थिति की जाँच करती है। प्रत्येक पोर्टल इंटरैक्शन अपने स्वयं के ब्राउज़र सत्र, अपने स्वयं के वर्गीकरण ट्रैकिंग, और अपनी स्वयं की त्रुटि हैंडलिंग के साथ एक अलग उप-चरण के रूप में चलता है। यदि पचास में से तीन पोर्टल विफल होते हैं, तो वर्कफ़्लो अन्य सैंतालीस पूर्ण करती है और विस्तृत त्रुटि संदर्भ के साथ तीन विफलताओं को समीक्षा कतार में रूट करती है।

व्यवहार में यह कैसा दिखता है

एक क्रेडेंशियलिंग संगठन प्रदाता नामांकन प्रक्रिया के भाग के रूप में राज्य चिकित्सा बोर्डों में हेल्थकेयर प्रदाता लाइसेंस सत्यापित करता है। पारंपरिक रूप से, सत्यापन सहायक प्रत्येक बोर्ड की वेबसाइट में मैन्युअल रूप से लॉग इन करते हैं, प्रदाता खोजते हैं, लाइसेंस स्थिति का स्क्रीनशॉट लेते हैं, और क्रेडेंशियलिंग सिस्टम में डेटा दर्ज करते हैं। प्रत्येक सत्यापन में पाँच से पंद्रह मिनट लगते हैं, और संगठन प्रति सप्ताह सैकड़ों प्रोसेस करता है।

Triggerfish के साथ, एक वर्कफ़्लो पूर्ण सत्यापन चक्र को संभालती है। ब्राउज़र स्वचालन संबंधित राज्य बोर्ड पोर्टल पर नेविगेट करता है, संग्रहीत क्रेडेंशियल के साथ लॉग इन करता है, प्रदाता खोजता है, लाइसेंस स्थिति और समाप्ति तिथि निकालता है, और परिणाम संग्रहीत करता है। निकाला गया डेटा CONFIDENTIAL पर वर्गीकृत होता है क्योंकि इसमें प्रदाता PII होता है।

जब एक राज्य बोर्ड अपना पोर्टल पुनः डिज़ाइन करता है, तो एजेंट अगले सत्यापन प्रयास पर अनुकूलित होता है। जब एक बोर्ड एक CAPTCHA जोड़ता है जो स्वचालित पहुँच को ब्लॉक करता है, तो वर्कफ़्लो उस राज्य को मैन्युअल सत्यापन के लिए फ्लैग करती है और शेष बैच को प्रोसेस करना जारी रखती है। सत्यापन सहायक सभी सत्यापन मैन्युअल रूप से करने से केवल उन अपवादों को संभालने में स्थानांतरित होते हैं जो स्वचालन हल नहीं कर सकता।