Menggunakan Update API
Ringkasan
Update API memungkinkan aplikasi klien Anda mendownload versi yang di-hash dari daftar Risiko Web untuk disimpan di database lokal atau dalam memori. URL kemudian dapat diperiksa secara lokal. Jika kecocokan ditemukan di database lokal, klien akan mengirim permintaan ke server Web Risk untuk memverifikasi apakah URL disertakan dalam daftar Risiko Web atau tidak.
Memperbarui database lokal
Agar tetap terbaru, klien harus memperbarui daftar Risiko Web secara berkala di database lokal mereka. Untuk menghemat bandwidth, klien mendownload awalan hash URL, bukan URL mentah. Misalnya, jika "www.badurl.com/" ada dalam daftar Risiko Web, klien akan mendownload awalan hash SHA256 dari URL tersebut, bukan URL itu sendiri. Dalam sebagian besar kasus, awalan hash memiliki panjang 4 byte, yang berarti biaya bandwidth rata-rata untuk mendownload satu entri daftar adalah 4 byte sebelum kompresi.
Untuk memperbarui daftar Risiko Web di database lokal, kirim permintaan HTTP
GET ke metode
threatLists.computeDiff:
- Permintaan
GETHTTP menyertakan nama daftar yang akan diupdate beserta batasan klien untuk memperhitungkan batasan memori dan bandwidth. - Respons
GETHTTP menampilkan update lengkap atau update sebagian. Respons juga dapat menampilkan waktu tunggu yang direkomendasikan hingga operasi komputasi perbedaan berikutnya.
Contoh: threatLists.computeDiff
Permintaan GET HTTP
Dalam contoh berikut, perbedaan untuk daftar Risiko Web MALWARE diminta. Untuk mengetahui detail selengkapnya, lihat parameter kueri
threatLists.computeDiffdan penjelasan yang mengikuti contoh kode.
Metode HTTP dan URL:
GET https://webrisk.googleapis.com/v1/threatLists:computeDiff?threatType=MALWARE&versionToken=Gg4IBBADIgYQgBAiAQEoAQ%3D%3D&constraints.maxDiffEntries=2048&constraints.maxDatabaseEntries=4096&constraints.supportedCompressions=RAW&key=API_KEY
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Jalankan perintah berikut:
curl -X GET \
"https://webrisk.googleapis.com/v1/threatLists:computeDiff?threatType=MALWARE&versionToken=Gg4IBBADIgYQgBAiAQEoAQ%3D%3D&constraints.maxDiffEntries=2048&constraints.maxDatabaseEntries=4096&constraints.supportedCompressions=RAW&key=API_KEY"
PowerShell
Jalankan perintah berikut:
$headers = @{ }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://webrisk.googleapis.com/v1/threatLists:computeDiff?threatType=MALWARE&versionToken=Gg4IBBADIgYQgBAiAQEoAQ%3D%3D&constraints.maxDiffEntries=2048&constraints.maxDatabaseEntries=4096&constraints.supportedCompressions=RAW&key=API_KEY" | Select-Object -Expand ContentAnda akan melihat respons JSON seperti berikut:
{
"recommendedNextDiff": "2020-01-08T19:41:45.436722194Z",
"responseType": "RESET",
"additions": {
"rawHashes": [
{
"prefixSize": 4,
"rawHashes": "AArQMQAMoUgAPn8lAE..."
}
]
},
"newVersionToken": "ChAIARAGGAEiAzAwMSiAEDABEPDyBhoCGAlTcIVL",
"checksum": {
"sha256": "wy6jh0+MAg/V/+VdErFhZIpOW+L8ulrVwhlV61XkROI="
}
}
Java
Python
Daftar Risiko Web
Kolom threatType mengidentifikasi daftar Risiko Web. Dalam contoh ini, perbedaan untuk daftar Risiko Web MALWARE diminta.
Token versi
Kolom versionToken menyimpan status klien saat ini dari daftar Risiko Web.
Token Versi ditampilkan di kolom newVersionToken dari
respons threatLists.computeDiff.
Untuk update awal, biarkan kolom versionToken kosong.
Batasan ukuran
Kolom maxDiffEntries menentukan jumlah total update yang dapat dikelola klien (dalam contoh, 2048). Kolom maxDatabaseEntries menentukan jumlah total entri yang dapat dikelola database lokal (dalam contoh, 4096). Klien harus menetapkan batasan ukuran untuk melindungi batasan memori dan bandwidth serta untuk melindungi pertumbuhan daftar. Untuk
mengetahui informasi selengkapnya, lihat Batasan Update).
Kompresi yang didukung
Kolom supportedCompressions mencantumkan jenis kompresi yang didukung klien. Dalam contoh ini, klien hanya mendukung data mentah yang tidak dikompresi.
Namun, Web Risk mendukung jenis kompresi tambahan. Untuk mengetahui informasi selengkapnya, lihat Kompresi.
Respons GET HTTP
Dalam contoh ini, respons menampilkan update sebagian untuk daftar Risiko Web menggunakan jenis kompresi yang diminta.
Isi respons
Isi respons mencakup informasi perbedaan (jenis respons, penambahan dan penghapusan yang akan diterapkan ke database lokal, token versi baru, dan checksum).
Dalam contoh ini, respons juga menyertakan waktu perbedaan berikutnya yang direkomendasikan. Untuk mengetahui detail selengkapnya, lihat isi respons
threatLists.computeDiff
dan penjelasan yang mengikuti contoh kode.
{
"responseType" : "DIFF",
"recommendedNextDiff": "2019-12-31T23:59:59.000000000Z",
"additions": {
"compressionType": "RAW",
"rawHashes": [{
"prefixSize": 4,
"rawHashes": "rnGLoQ=="
}]
},
"removals": {
"rawIndices": {
"indices": [0, 2, 4]
}
},
"newVersionToken": "ChAIBRADGAEiAzAwMSiAEDABEAFGpqhd",
"checksum": {
"sha256": "YSgoRtsRlgHDqDA3LAhM1gegEpEzs1TjzU33vqsR8iM="
},
"recommendedNextDiff": "2019-07-17T15:01:23.045123456Z"
}Perbedaan database
Kolom responseType akan menunjukkan update sebagian (DIFF) atau lengkap (RESET). Dalam contoh ini, perbedaan sebagian ditampilkan, sehingga respons mencakup penambahan dan penghapusan. Mungkin ada beberapa kumpulan penambahan, tetapi hanya satu kumpulan penghapusan. Untuk mengetahui informasi selengkapnya, lihat
Perbedaan Database.
Token versi baru
Kolom newVersionToken menyimpan token versi baru untuk daftar Risiko Web yang baru diupdate. Klien harus menyimpan status klien baru untuk permintaan
update berikutnya (kolom versionToken dalam permintaan
threatLists.computeDiff.
Checksums
Checksum memungkinkan klien memverifikasi bahwa database lokal tidak mengalami kerusakan. Jika checksum tidak cocok, klien harus menghapus database dan menerbitkan ulang update dengan kolom versionToken kosong. Namun, klien dalam situasi ini tetap harus mengikuti interval waktu untuk update. Untuk mengetahui informasi selengkapnya, lihat Frekuensi Permintaan.
Perbedaan berikutnya yang direkomendasikan
Kolom recommendedNextDiff menunjukkan stempel waktu hingga kapan klien harus menunggu sebelum mengirim permintaan update lainnya. Perhatikan bahwa periode tunggu yang direkomendasikan mungkin atau mungkin tidak disertakan dalam respons. Untuk mengetahui detail selengkapnya,
lihat Frekuensi Permintaan.
Memeriksa URL
Untuk memeriksa apakah URL ada dalam daftar Risiko Web, klien harus menghitung hash dan awalan hash URL terlebih dahulu. Untuk mengetahui detailnya, lihat URL dan Hashing. Klien kemudian mengkueri database lokal untuk menentukan apakah ada kecocokan. Jika awalan hash tidak ada di database lokal, URL akan dianggap aman (yaitu, tidak ada dalam daftar Risiko Web).
Jika awalan hash ada di database lokal (bentrokan awalan hash), klien harus mengirim awalan hash ke server Web Risk untuk verifikasi. Server akan menampilkan semua hash SHA 256 dengan panjang penuh yang berisi awalan hash yang diberikan. Jika salah satu hash dengan panjang penuh tersebut cocok dengan hash dengan panjang penuh dari URL yang dimaksud, URL tersebut akan dianggap tidak aman. Jika tidak ada hash dengan panjang penuh yang cocok dengan hash dengan panjang penuh dari URL yang dimaksud, URL tersebut akan dianggap aman.
Google tidak pernah mempelajari URL yang Anda periksa. Google mempelajari awalan hash URL, tetapi awalan hash tidak memberikan banyak informasi tentang URL sebenarnya.
Untuk memeriksa apakah URL ada dalam daftar Risiko Web, kirim permintaan HTTP GET
ke hashes.search
metode:
- Permintaan
GETHTTP menyertakan awalan hash URL yang akan diperiksa. - Respons
GETHTTP menampilkan hash dengan panjang penuh yang cocok beserta waktu habis masa berlaku positif dan negatif.
Contoh: hashes.search
Permintaan GET HTTP
Dalam contoh berikut, nama dua daftar Risiko Web dan awalan hash dikirim untuk perbandingan dan verifikasi. Untuk mengetahui detail selengkapnya, lihat parameter kueri
hashes.search
dan penjelasan yang mengikuti contoh kode.
curl \ -H "Content-Type: application/json" \ "https://webrisk.googleapis.com/v1/hashes:search?key=YOUR_API_KEY&threatTypes=MALWARE&threatTypes=SOCIAL_ENGINEERING&hashPrefix=WwuJdQ%3D%3D"
Java
Python
Daftar Risiko Web
Kolom threatTypes mengidentifikasi daftar Risiko Web. Dalam contoh ini, dua daftar diidentifikasi: MALWARE dan SOCIAL_ENGINEERING.
Awalan hash ancaman
Kolom hashPrefix berisi awalan hash URL yang ingin Anda periksa. Kolom ini harus berisi awalan hash yang sama persis dengan yang ada di database lokal. Misalnya, jika awalan hash lokal memiliki panjang 4 byte, kolom hashPrefix harus memiliki panjang 4 byte. Jika awalan hash lokal diperpanjang menjadi 7 byte, kolom hashPrefix harus memiliki panjang 7 byte.
Respons GET HTTP
Dalam contoh berikut, respons menampilkan ancaman yang cocok, yang berisi daftar Risiko Web yang cocok, beserta waktu habis masa berlaku.
Isi respons
Isi respons mencakup informasi kecocokan (nama daftar dan hash dengan panjang penuh serta durasi cache). Untuk mengetahui detail selengkapnya, lihat isi respons
hashes.search
dan penjelasan yang mengikuti contoh kode.
{
"threats": [{
"threatTypes": ["MALWARE"],
"hash": "WwuJdQx48jP-4lxr4y2Sj82AWoxUVcIRDSk1PC9Rf-4="
"expireTime": "2019-07-17T15:01:23.045123456Z"
}, {
"threatTypes": ["MALWARE", "SOCIAL_ENGINEERING"],
"hash": "WwuJdQxaCSH453-uytERC456gf45rFExcE23F7-hnfD="
"expireTime": "2019-07-17T15:01:23.045123456Z"
},
}],
"negativeExpireTime": "2019-07-17T15:01:23.045123456Z"
}Mencocokkan dengan
Kolom threats menampilkan hash dengan panjang penuh yang cocok untuk awalan hash.
URL yang sesuai dengan hash ini dianggap tidak aman. Jika tidak ada kecocokan yang ditemukan untuk awalan hash, tidak ada yang ditampilkan; URL yang sesuai dengan awalan hash tersebut dianggap aman.
Masa berlaku
Kolom expireTime dan negativeExpireTime menunjukkan hingga kapan hash harus dianggap tidak aman atau aman. Untuk mengetahui detail selengkapnya,
lihat Menyimpan ke dalam Cache.