Local List Mode

जब क्लाइंट इस मोड में Google Safe Browsing v5 का इस्तेमाल करते हैं, तो क्लाइंट का व्यवहार v4 Update API जैसा ही होता है. हालांकि, इसमें v5 के बेहतर एपीआई का इस्तेमाल किया जाता है. क्लाइंट, अपने लोकल डेटाबेस में खतरों की ऐसी सूचियां बनाए रखेंगे जिन्हें SHA256 हैश प्रीफ़िक्स के तौर पर फ़ॉर्मैट किया गया है. ये सूचियां, होस्ट-सफ़िक्स/पाथ-प्रीफ़िक्स यूआरएल एक्सप्रेशन की होंगी. जब भी क्लाइंट को किसी यूआरएल की जांच करनी होती है, तब स्थानीय थ्रेट लिस्ट का इस्तेमाल करके जांच की जाती है. अगर और सिर्फ़ तब कोई मैच होता है, तो क्लाइंट सर्वर से कनेक्ट होता है, ताकि जांच जारी रखी जा सके.

ऊपर दिए गए उदाहरण की तरह ही, क्लाइंट भी एक लोकल कैश मेमोरी बनाए रखेगा. इसे परसिस्टेंट स्टोरेज में रखने की ज़रूरत नहीं है.

लोकल थ्रेट लिस्ट के यूआरएल की जांच करने की प्रक्रिया

यह तरीका तब भी अपनाया जाता है, जब क्लाइंट रीयल-टाइम मोड का इस्तेमाल कर रहा हो और यह वैल्यू UNSURE दिखाता हो.

यह तरीका, एक यूआरएल u लेता है और SAFE या UNSAFE दिखाता है.

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