เมื่อไคลเอ็นต์เลือกใช้ Google Safe Browsing v5 ในโหมดเรียลไทม์แบบไม่จัดเก็บ ไคลเอ็นต์ไม่จำเป็นต้องดูแลฐานข้อมูลในเครื่องแบบถาวร อย่างไรก็ตาม คาดว่าไคลเอ็นต์จะยังคงต้องดูแลแคชในเครื่อง แคชในเครื่องดังกล่าวไม่จำเป็นต้องอยู่ในพื้นที่เก็บข้อมูลแบบถาวร และอาจล้างได้ในกรณีที่หน่วยความจำเต็ม
เมื่อใดก็ตามที่ไคลเอ็นต์ต้องการตรวจสอบ URL ที่เฉพาะเจาะจง ไคลเอ็นต์จะเชื่อมต่อกับเซิร์ฟเวอร์เพื่อทำการตรวจสอบเสมอ โหมดนี้คล้ายกับสิ่งที่ไคลเอ็นต์ของ Lookup API เวอร์ชัน 4 อาจนำไปใช้
เมื่อเทียบกับโหมดเรียลไทม์ โหมดนี้อาจใช้แบนด์วิดท์เครือข่ายมากกว่า แต่ก็อาจเหมาะสมกว่าหากไคลเอ็นต์ไม่สะดวกที่จะรักษาสถานะภายในที่ต่อเนื่อง
ขั้นตอนการตรวจสอบ URL แบบเรียลไทม์โดยไม่มีฐานข้อมูลในเครื่อง
ขั้นตอนนี้จะใช้ URL เดียว u และแสดงผล SAFE หรือ UNSAFE
- ให้
expressionsเป็นรายการนิพจน์คำต่อท้าย/คำนำหน้าที่สร้างโดย URLu - ให้
expressionHashesเป็นรายการที่องค์ประกอบเป็นแฮช SHA256 ของแต่ละนิพจน์ในexpressions - ให้
expressionHashPrefixesเป็นรายการที่องค์ประกอบคือ 4 ไบต์แรกของแต่ละแฮชในexpressionHashes - สำหรับแต่ละ
expressionHashPrefixของexpressionHashPrefixesให้ทำดังนี้- ค้นหา
expressionHashPrefixในแคชในเครื่อง - หากพบรายการที่แคชไว้ ให้ทำดังนี้
- พิจารณาว่าเวลาปัจจุบันมากกว่าเวลาหมดอายุหรือไม่
- หากมากกว่า ให้ทำดังนี้
- นำรายการที่แคชที่พบออกจากแคชในเครื่อง
- เล่นลูปต่อ
- หากไม่มากกว่า ให้ทำดังนี้
- นำ
expressionHashPrefixนี้ออกจากexpressionHashPrefixes - ตรวจสอบว่าพบแฮชแบบเต็มที่เกี่ยวข้องภายใน
expressionHashesในรายการที่แคชไว้หรือไม่ - หากพบ ให้ส่งคืน
UNSAFE - หากไม่พบ ให้ดำเนินการต่อในลูป
- นำ
- หากไม่พบรายการที่แคชไว้ ให้ดำเนินการต่อในลูป
- ค้นหา
- ส่ง
expressionHashPrefixesไปยังเซิร์ฟเวอร์ Google Safe Browsing v5 โดยใช้ RPC SearchHashes หรือเมธอด REST hashes.search หากเกิดข้อผิดพลาด (รวมถึงข้อผิดพลาดเกี่ยวกับเครือข่าย ข้อผิดพลาด HTTP ฯลฯ) ให้แสดงผลSAFEไม่เช่นนั้น ให้การตอบกลับเป็นresponseที่ได้รับจากเซิร์ฟเวอร์ SB ซึ่งเป็นรายการแฮชแบบเต็มพร้อมกับข้อมูลเสริมบางอย่างที่ระบุลักษณะของภัยคุกคาม (วิศวกรรมสังคม มัลแวร์ ฯลฯ) รวมถึงเวลาหมดอายุของแคชexpiration - สำหรับแต่ละ
fullHashของresponseให้ทำดังนี้- แทรก
fullHashลงในแคชในเครื่องพร้อมกับexpiration
- แทรก
- สำหรับแต่ละ
fullHashของresponseให้ทำดังนี้- ให้
isFoundเป็นผลลัพธ์ของการค้นหาfullHashในexpressionHashes - หาก
isFoundเป็น False ให้ดำเนินการต่อในลูป - หาก
isFoundเป็นจริง ให้แสดงผลUNSAFE
- ให้
- กลับ
SAFE
เช่นเดียวกับโหมดเรียลไทม์ ขั้นตอนนี้ไม่ได้ระบุวิธีส่งคำนำหน้าแฮชไปยังเซิร์ฟเวอร์อย่างชัดเจน เช่น ลูกค้าสามารถส่ง expressionHashPrefixes ทั้งหมดในคำขอเดียวได้ และลูกค้ายังสามารถส่งแต่ละคำนำหน้าใน expressionHashPrefixes ไปยังเซิร์ฟเวอร์ในคำขอแยกกันได้ (อาจดำเนินการแบบขนาน) นอกจากนี้ ไคลเอ็นต์ยังส่งคำนำหน้าแฮชที่ไม่เกี่ยวข้องหรือสร้างขึ้นแบบสุ่มพร้อมกับคำนำหน้าแฮชใน expressionHashPrefixes ได้ด้วย ตราบใดที่จำนวนคำนำหน้าแฮชที่ส่งในคำขอเดียวไม่เกิน 30 รายการ