این سند برای روش زیر اعمال می شود: Update API (v4) : gefListUpdates.fetch .
راه اندازی پایگاه داده
مشتریانی که از Update API استفاده میکنند باید یک پایگاه داده محلی راهاندازی کنند و یک بارگیری اولیه از فهرستهای Safe Browsing را که میخواهند با آن کار کنند، انجام دهند. برای شروع، میتوانید بسته Go safebrowsing
را بسازید و به کار بگیرید (یا از بسته برای مدلسازی پیادهسازی خود استفاده کنید). برای اطلاعات بیشتر به https://github.com/google/safebrowsing/ مراجعه کنید.
به روز رسانی پایگاه داده
برای اطمینان از محافظت در برابر آخرین تهدیدات، مشتریان به شدت تشویق می شوند که به طور منظم لیست های مرور ایمن محلی خود را با استفاده از روش gefListUpdates.fetch به روز کنند. درخواست gefListUpdates.fetch لیست هایی را که باید به روز شوند را مشخص می کند. اگر مشتریان محدودیت های حافظه یا پهنای باند دارند، می توانند از درخواست برای تنظیم محدودیت های به روز رسانی نیز استفاده کنند (به محدودیت های به روز رسانی مراجعه کنید). پاسخ gefListUpdates.fetch یک به روز رسانی کامل یا جزئی را برای هر لیست برمی گرداند، همانطور که در زیر توضیح داده شده است.به روز رسانی کامل
بهروزرسانیهای کامل زمانی برگردانده میشوند که کلاینت فیلد state
را در درخواست gefListUpdates.fetch خالی بگذارد یا وقتی سرور تشخیص دهد که بهروزرسانی کامل لازم است. برای به روز رسانی کامل، فقط موارد اضافه شده برگردانده می شود. انتظار می رود مشتری قبل از اعمال به روز رسانی ها و انجام بررسی اعتبار سنجی پایگاه داده محلی را پاک کند.
زمانی که مشتری درخواست اولیه فهرستی را ارسال می کند، به روز رسانی کامل بازگردانده می شود. در این حالت، فیلد state
در درخواست خالی می ماند (چون مقداری برای ارائه وجود ندارد) و فیلد newClientState
در پاسخ وضعیت اولیه را برای لیست محلی برمی گرداند. همچنین زمانی که مشتری عمداً فیلد state
را در درخواستهای بعدی خالی میگذارد، بهروزرسانیهای کامل بازگردانده میشوند. این به روز رسانی کامل را مجبور می کند و وضعیت جدیدی را در قسمت newClientState
پاسخ برمی گرداند.
گاهی اوقات، سرور Safe Browsing یک به روز رسانی کامل را زمانی که فقط یک به روز رسانی جزئی توسط مشتری درخواست شده است، برمی گرداند. این ممکن است زمانی اتفاق بیفتد که مشتری ابتدا نسخه کوچکی از لیست را دانلود کرده و سپس به نسخه بزرگتری از لیست به روز رسانی می کند. سرور به سادگی یک به روز رسانی کامل با کل لیست را برمی گرداند. این ممکن است در صورتی اتفاق بیفتد که مشتری برای مدت طولانی داده را دانلود نکرده باشد و درخواست به روز رسانی جزئی داشته باشد. دوباره، سرور به سادگی یک به روز رسانی کامل را با کل لیست برمی گرداند.
به روز رسانی جزئی
بهروزرسانیهای جزئی زمانی بازگردانده میشوند که کلاینت مقداری را برای فیلد state
در درخواست gefListUpdates.fetch ارائه کند (استثنا، همانطور که در بالا ذکر شد، زمانی است که سرور تشخیص میدهد بهروزرسانی کامل لازم است). برای بهروزرسانیهای جزئی، اضافهها و حذفها برگردانده میشوند. کلاینت لیست ها را در پایگاه داده محلی به روز می کند (اعمال حذف ها قبل از افزودن ها) و سپس بررسی اعتبار سنجی را انجام می دهد.
اضافات
افزودنی ها پیشوندهای هش SHA256 هستند که باید به پایگاه داده محلی اضافه شوند. اکثریت قریب به اتفاق پیشوندهای هش 4 بایت هستند اما برخی از پیشوندهای هش ممکن است طولی بین 4 تا 32 بایت داشته باشند. بنابراین، مجموعه های متعددی از اضافات را می توان برگرداند. برای مثال، یکی حاوی پیشوندهای 4 بایتی و دیگری حاوی پیشوندهای 5 بایتی.
اگر مشتری از فشرده سازی پشتیبانی می کند، پاسخ ممکن است با استفاده از فشرده سازی برنج فشرده شود. با این حال، تنها پیشوندهای هش 4 بایتی فشرده می شوند. پیشوندهای هش طولانی تر همیشه در قالب غیرفشرده و خام ارسال می شوند (به فشرده سازی مراجعه کنید).
حذف ها
حذفها شاخصهای مبتنی بر صفر در پایگاهداده مشتری مرتبشده از نظر لغوی هستند که به ورودیهایی اشاره میکنند که باید از پایگاه داده محلی حذف شوند. فقط یک مجموعه از حذف ها برگردانده می شود.
اگر مشتری از فشردهسازی پشتیبانی کند، «رشتههای برنج» و «شاخصهای برنج» برگردانده میشوند. اگر فشردهسازی پشتیبانی نشود، «هشهای خام» و «شاخصهای خام» برگردانده میشوند (به فشردهسازی مراجعه کنید).
بررسی های اعتبارسنجی
هنگامی که پاسخ gefListUpdates.fetch برگردانده می شود - با یک به روز رسانی کامل یا یک به روز رسانی جزئی - انتظار می رود مشتری یک بررسی اعتبار سنجی را انجام دهد.
مشتری ابتدا لیستها را در پایگاه داده محلی بهروزرسانی میکند (استفاده از حذفها قبل از اضافات). سپس کلاینت هش SHA256 فهرست محلی (طبقهبندی شده از نظر لغوی) را محاسبه میکند و آن را با چکجمع برگشتی در پاسخ مقایسه میکند. اگر دو مقدار برابر باشند، فهرست مرور ایمن "درست" در نظر گرفته می شود.
اگر دو مقدار برابر نباشند، فهرست مرور ایمن "فاسد" در نظر گرفته می شود. کلاینت باید لیست را از پایگاه داده پاک کند و به روز رسانی دوم را با فیلد state
روی رشته خالی تنظیم کند. این به روز رسانی کامل را مجبور می کند و یک لیست و وضعیت کاملاً جدید را برمی گرداند.