जब क्लाइंट इस मोड में Google Safe Browsing v5 का इस्तेमाल करते हैं, तो क्लाइंट का व्यवहार v4 Update API जैसा ही होता है. हालांकि, इसमें v5 के बेहतर एपीआई का इस्तेमाल किया जाता है. क्लाइंट, अपने लोकल डेटाबेस में खतरों की ऐसी सूचियां बनाए रखेंगे जिन्हें SHA256 हैश प्रीफ़िक्स के तौर पर फ़ॉर्मैट किया गया है. ये सूचियां, होस्ट-सफ़िक्स/पाथ-प्रीफ़िक्स यूआरएल एक्सप्रेशन की होंगी. जब भी क्लाइंट को किसी यूआरएल की जांच करनी होती है, तब स्थानीय थ्रेट लिस्ट का इस्तेमाल करके जांच की जाती है. अगर और सिर्फ़ तब कोई मैच होता है, तो क्लाइंट सर्वर से कनेक्ट होता है, ताकि जांच जारी रखी जा सके.
ऊपर दिए गए उदाहरण की तरह ही, क्लाइंट भी एक लोकल कैश मेमोरी बनाए रखेगा. इसे परसिस्टेंट स्टोरेज में रखने की ज़रूरत नहीं है.
लोकल थ्रेट लिस्ट के यूआरएल की जांच करने की प्रक्रिया
यह तरीका तब भी अपनाया जाता है, जब क्लाइंट रीयल-टाइम मोड का इस्तेमाल कर रहा हो और यह वैल्यू UNSURE दिखाता हो.
यह तरीका, एक यूआरएल u लेता है और SAFE या UNSAFE दिखाता है.
- मान लें कि
expressions, यूआरएलuसे जनरेट किए गए प्रत्यय/उपसर्ग एक्सप्रेशन की सूची है. - मान लें कि
expressionHashesएक सूची है, जिसमेंexpressionsके हर एक्सप्रेशन के SHA256 हैश शामिल हैं. - मान लें कि
expressionHashPrefixesएक सूची है, जिसमें एलिमेंट,expressionHashesमें मौजूद हर हैश के पहले चार बाइट हैं. expressionHashPrefixesके हरexpressionHashPrefixके लिए:- स्थानीय कैश में
expressionHashPrefixको ढूंढें. - अगर कैश मेमोरी में सेव की गई एंट्री मिल जाती है, तो:
- यह तय करता है कि मौजूदा समय, कुकी के खत्म होने के समय से ज़्यादा है या नहीं.
- अगर यह ज़्यादा है, तो:
- लोकल कैश से, कैश की गई एंट्री को हटाता है.
- लूप को जारी रखें.
- अगर यह संख्या ज़्यादा नहीं है, तो:
expressionHashPrefixesसे इसexpressionHashPrefixको हटाएं.- देखें कि
expressionHashesमें मौजूद पूरा हैश, कैश मेमोरी में सेव की गई एंट्री में मौजूद है या नहीं. - अगर ऐसा होता है, तो
UNSAFEदिखाएं. - अगर नहीं मिलता है, तो लूप जारी रखें.
- अगर कैश मेमोरी में सेव की गई एंट्री नहीं मिलती है, तो लूप जारी रखें.
- स्थानीय कैश में
expressionHashPrefixesके हरexpressionHashPrefixके लिए:- स्थानीय थ्रेट लिस्ट के डेटाबेस में
expressionHashPrefixखोजें. - अगर
expressionHashPrefixको स्थानीय थ्रेट लिस्ट के डेटाबेस में नहीं ढूँढा जा सकता, तो इसेexpressionHashPrefixesसे हटा दें.
- स्थानीय थ्रेट लिस्ट के डेटाबेस में
- RPC SearchHashes या REST तरीके hashes.search का इस्तेमाल करके,
expressionHashPrefixesको Google Safe Browsing v5 सर्वर पर भेजें. अगर कोई गड़बड़ी हुई है (जैसे, नेटवर्क की गड़बड़ियां, एचटीटीपी गड़बड़ियां वगैरह), तोSAFEदिखाएं. इसके अलावा, एसबी सर्वर से मिलेresponseको रिस्पॉन्स के तौर पर सेट करें. यह पूरी हैश की सूची होती है. इसमें कुछ अन्य जानकारी भी होती है. जैसे, खतरे का टाइप (सोशल इंजीनियरिंग, मैलवेयर वगैरह) और कैश मेमोरी के खत्म होने का समयexpiration. responseके हरfullHashके लिए:fullHashकोexpirationके साथ लोकल कैश मेमोरी में डालें.
responseके हरfullHashके लिए:- मान लें कि
expressionHashesमेंfullHashको खोजने परisFoundमिलता है. - अगर
isFoundकी वैल्यू False है, तो लूप जारी रखें. - अगर
isFoundसही है, तोUNSAFEदिखाएं.
- मान लें कि
- वापसी की तारीख:
SAFE.