Method: hashes.search

तय किए गए प्रीफ़िक्स से मैच करने वाले पूरे हैश खोजें.

यह https://google.aip.dev/136 के मुताबिक, कस्टम तरीका है. कस्टम तरीके का मतलब है कि Google के सामान्य एपीआई डेवलपमेंट के नामकरण में, इस तरीके का कोई कस्टम नाम है. इसका मतलब, कस्टम एचटीटीपी तरीके का इस्तेमाल करने से नहीं है.

एचटीटीपी अनुरोध

GET https://safebrowsing.googleapis.com/v5/hashes:search

यूआरएल में gRPC ट्रांसकोडिंग सिंटैक्स का इस्तेमाल किया गया है.

क्वेरी पैरामीटर

पैरामीटर
hashPrefixes[]

string (bytes format)

ज़रूरी है. खोजे जाने वाले हैश प्रीफ़िक्स. क्लाइंट को 1,000 से ज़्यादा हैश प्रीफ़िक्स नहीं भेजने चाहिए. हालांकि, यूआरएल प्रोसेस करने के तरीके के मुताबिक, क्लाइंट को 30 से ज़्यादा हैश प्रीफ़िक्स नहीं भेजने चाहिए.

फ़िलहाल, हर हैश प्रीफ़िक्स की लंबाई चार बाइट होनी चाहिए. आने वाले समय में, इस शर्त में ढील दी जा सकती है.

base64 कोड में बदली गई स्ट्रिंग.

अनुरोध का मुख्य भाग

अनुरोध का मुख्य हिस्सा खाली होना चाहिए.

जवाब का मुख्य भाग

खतरे के हैश खोजने के बाद मिला जवाब.

अगर कोई डेटा नहीं मिलता है, तो सर्वर NOT_FOUND स्टेटस (एचटीटीपी स्टेटस कोड 404) दिखाने के बजाय, fullHashes फ़ील्ड को खाली करके OK स्टेटस (एचटीटीपी स्टेटस कोड 200) दिखाएगा.

V5 में नया क्या है: FullHash और FullHashDetail के बीच अंतर है. अगर कोई हैश, ऐसी साइट के बारे में बताता है जिस पर कई तरह के खतरे हैं (जैसे, MALWARE और SOCIAL_ENGINEERING, दोनों), तो V4 की तरह पूरा हैश दो बार भेजने की ज़रूरत नहीं है. इसके अलावा, कैश मेमोरी की अवधि को एक ही cacheDuration फ़ील्ड में आसानी से बदला जा सकता है.

अगर एपीआई सही से जुड़ जाता है, ताे जवाब के मुख्य भाग में नीचे दिए गए स्ट्रक्चर शामिल होता है.

JSON के काेड में दिखाना
{
  "fullHashes": [
    {
      object (FullHash)
    }
  ],
  "cacheDuration": string
}
फ़ील्ड
fullHashes[]

object (FullHash)

बिना क्रम वाली सूची. मिले पूरे हैश की बिना क्रम की सूची.

cacheDuration

string (Duration format)

क्लाइंट-साइड कैश मेमोरी में डेटा सेव रहने की अवधि. ऐक्सेस खत्म होने का समय तय करने के लिए, क्लाइंट को इस अवधि को मौजूदा समय में जोड़ना होगा. इसके बाद, खत्म होने का समय, अनुरोध में क्लाइंट की ओर से क्वेरी किए गए हर हैश प्रीफ़िक्स पर लागू होता है. भले ही, जवाब में कितने पूरे हैश दिखाए गए हों. भले ही, सर्वर किसी खास हैश प्रीफ़िक्स के लिए कोई पूरा हैश न दिखाए, लेकिन क्लाइंट को यह जानकारी कैश मेमोरी में सेव करनी होगी.

अगर fullHashes फ़ील्ड खाली है, तो क्लाइंट cacheDuration को बढ़ा सकता है, ताकि सर्वर की तय की गई समयसीमा के बाद की नई समयसीमा तय की जा सके. किसी भी मामले में, कैश मेमोरी में डेटा सेव रखने की अवधि 24 घंटे से ज़्यादा नहीं होनी चाहिए.

अहम जानकारी: क्लाइंट को यह नहीं मानना चाहिए कि सर्वर सभी रिस्पॉन्स के लिए कैश मेमोरी में सेव होने की एक ही अवधि दिखाएगा. सर्वर, स्थिति के हिसाब से अलग-अलग रिस्पॉन्स के लिए, कैश मेमोरी में सेव रखने की अलग-अलग अवधि चुन सकता है.

सेकंड में कुल अवधि, जिसमें दशमलव के बाद नौ अंक हो सकते हैं. यह अवधि 's' पर खत्म होती है. उदाहरण: "3.5s".

FullHash

एक या उससे ज़्यादा मैच के साथ पहचाना गया पूरा हैश.

JSON के काेड में दिखाना
{
  "fullHash": string,
  "fullHashDetails": [
    {
      object (FullHashDetail)
    }
  ]
}
फ़ील्ड
fullHash

string (bytes format)

मैच होने वाला पूरा हैश. यह SHA256 हैश है. इसकी लंबाई 32 बाइट होगी.

base64 कोड में बदली गई स्ट्रिंग.

fullHashDetails[]

object (FullHashDetail)

बिना क्रम वाली सूची. इस पूरे हैश से जुड़ी जानकारी की पहचान करने वाला दोहराया गया फ़ील्ड.

FullHashDetail

मैच करने वाले पूरे हैश के बारे में जानकारी.

आने वाले समय में काम करने की सुविधा के बारे में अहम जानकारी: सर्वर किसी भी समय, खतरे के नए टाइप और एट्रिब्यूट जोड़ सकता है. इन जोड़ों को वर्शन में हुए छोटे बदलाव माना जाता है. Google की नीति के मुताबिक, एपीआई में माइनर वर्शन नंबर नहीं दिखाए जाते. वर्शन से जुड़ी नीति के बारे में जानने के लिए, https://cloud.google.com/apis/design/versioning पर जाएं. इसलिए, क्लाइंट को FullHashDetail मैसेज पाने के लिए तैयार रहना चाहिए. इन मैसेज में ThreatType एनम वैल्यू या ThreatAttribute एनम वैल्यू हो सकती हैं, जिन्हें क्लाइंट अमान्य मानता है. इसलिए, सभी ThreatType और ThreatAttribute एनम वैल्यू की पुष्टि करना क्लाइंट की ज़िम्मेदारी है. अगर किसी वैल्यू को अमान्य माना जाता है, तो क्लाइंट को पूरे FullHashDetail मैसेज को अनदेखा करना होगा.

JSON के काेड में दिखाना
{
  "threatType": enum (ThreatType),
  "attributes": [
    enum (ThreatAttribute)
  ]
}
फ़ील्ड
threatType

enum (ThreatType)

खतरे का टाइप. यह फ़ील्ड कभी खाली नहीं होगा.

attributes[]

enum (ThreatAttribute)

बिना क्रम वाली सूची. पूरे हैश के बारे में अन्य एट्रिब्यूट. यह खाली हो सकता है.

ThreatAttribute

खतरों के एट्रिब्यूट. इन एट्रिब्यूट से किसी खास खतरे के बारे में ज़्यादा जानकारी मिल सकती है. हालांकि, इससे खतरे के टाइप पर कोई असर नहीं पड़ेगा. उदाहरण के लिए, किसी एट्रिब्यूट में कॉन्फ़िडेंस लेवल कम हो सकता है, जबकि किसी दूसरे एट्रिब्यूट में कॉन्फ़िडेंस लेवल ज़्यादा हो सकता है. आने वाले समय में, और एट्रिब्यूट जोड़े जा सकते हैं.

Enums
THREAT_ATTRIBUTE_UNSPECIFIED ऐसा एट्रिब्यूट जिसकी जानकारी नहीं है. अगर सर्वर से यह वैल्यू मिलती है, तो क्लाइंट को FullHashDetail को पूरी तरह से अनदेखा करना चाहिए.
CANARY इससे पता चलता है कि नीति उल्लंघन ठीक करने के लिए, threatType का इस्तेमाल नहीं किया जाना चाहिए.
FRAME_ONLY इससे पता चलता है कि threatType का इस्तेमाल सिर्फ़ फ़्रेम पर लागू करने के लिए किया जाना चाहिए.