Google berkomitmen untuk mendorong terwujudnya keadilan rasial bagi komunitas Kulit Hitam. Lihat caranya.

SafetyNet Safe Browsing API

SafetyNet menyediakan layanan untuk menentukan apakah URL telah ditandai sebagai ancaman yang diketahui oleh Google atau tidak.

Aplikasi Anda dapat menggunakan API ini untuk menentukan apakah URL tertentu telah diklasifikasikan oleh Google sebagai ancaman yang diketahui atau tidak. Secara internal, SafetyNet menerapkan klien untuk Safe Browsing Network Protocol v4 yang dikembangkan oleh Google. Baik kode klien maupun protokol jaringan v4 dirancang untuk melindungi privasi pengguna dan menjaga konsumsi baterai dan bandwidth seminimal mungkin. Gunakan API ini untuk memanfaatkan sepenuhnya layanan Safe Browsing Google di Android dengan cara yang paling hemat resource, tanpa menerapkan protokol jaringannya.

Dokumen ini menjelaskan cara menggunakan SafetyNet untuk memeriksa ancaman yang diketahui di URL.

Persyaratan layanan

Dengan menggunakan Safe Browsing API, Anda setuju untuk terikat dengan Persyaratan Layanan. Harap baca dan pahami semua persyaratan dan kebijakan yang berlaku sebelum mengakses Safe Browsing API.

Meminta dan mendaftarkan kunci Android API

Untuk membuat kunci API, ikuti langkah-langkah berikut:

  1. Buka Google Developers Console.
  2. Di toolbar atas, pilih Pilih project > nama-project-Anda.
  3. Di kotak penelusuran, masukkan Safe Browsing API; saat nama Safe Browsing API ditampilkan dalam tabel, pilih nama tersebut.
  4. Setelah halaman ditampilkan kembali, pilih Aktifkan, lalu pilih Buka Kredensial.
  5. Saat jendela Menambahkan kredensial ke project Anda ditampilkan, pilih parameter, lalu pilih Kredensial apa yang saya perlukan?.
  6. Masukkan nama untuk kunci API Anda, lalu pilih Buat kunci API.
  7. Kunci API baru Anda akan ditampilkan; salin dan simpan kunci ini untuk digunakan pada lain waktu.

    Catatan: Kunci API memungkinkan Anda melakukan pemeriksaan URL 10.000 kali sehari. Dalam hal ini, kunci hanya boleh berupa string heksadesimal, bukan bagian dari URL.

  8. Pilih Selesai untuk menyelesaikan proses.

Jika memerlukan bantuan lebih lanjut, buka Pusat Bantuan Google Developers Console.

Menginisialisasi API

Untuk menggunakan Safe Browsing API, Anda harus menginisialisasi API dengan memanggil initSafeBrowsing() dan menunggu hingga selesai. Cuplikan kode berikut menunjukkan sebuah contoh:

Kotlin

    Tasks.await(SafetyNet.getClient(this).initSafeBrowsing())
    

Java

    Tasks.await(SafetyNet.getClient(this).initSafeBrowsing());
    

Catatan: Untuk meminimalkan dampak inisialisasi aplikasi, panggil initSafeBrowsing() sedini mungkin dalam metode onResume() aktivitas Anda.

Meminta pemeriksaan URL

Aplikasi Anda dapat menggunakan pemeriksaan URL untuk menentukan apakah URL menimbulkan ancaman yang diketahui atau tidak. Beberapa jenis ancaman mungkin tidak relevan dengan aplikasi tertentu. API ini memungkinkan Anda memilih jenis ancaman yang sesuai dengan kebutuhan Anda. Anda dapat menentukan beberapa jenis ancaman yang diketahui.

Menentukan jenis ancaman yang relevan

Konstanta dalam class SafeBrowsingThreat berisi jenis ancaman yang saat ini didukung:

    package com.google.android.gms.safetynet;

    public class SafeBrowsingThreat {

      /**
       * This threat type identifies URLs of pages that are flagged as containing potentially
       * harmful applications.
       */
      public static final int TYPE_POTENTIALLY_HARMFUL_APPLICATION = 4;

      /**
       * This threat type identifies URLs of pages that are flagged as containing social
       * engineering threats.
       */
      public static final int TYPE_SOCIAL_ENGINEERING = 5;
    }
    

Saat menggunakan API ini, Anda harus menggunakan konstanta yang tidak ditandai sebagai tidak digunakan lagi. Tambahkan konstanta jenis ancaman sebagai argumen ke API. Anda dapat menambahkan sebanyak mungkin konstanta jenis ancaman sesuai kebutuhan aplikasi.

Mengirim permintaan pemeriksaan URL

API ini tidak bergantung pada skema yang digunakan, jadi Anda dapat meneruskan URL dengan atau tanpa skema. Misalnya, baik

Kotlin

    var url = "https://www.google.com"
    

Java

    String url = "https://www.google.com";
    

maupun

Kotlin

    var url = "www.google.com"
    

Java

    String url = "www.google.com";
    

valid.

Kotlin

    SafetyNet.getClient(this).lookupUri(
            url,
            SAFE_BROWSING_API_KEY,
            SafeBrowsingThreat.TYPE_POTENTIALLY_HARMFUL_APPLICATION,
            SafeBrowsingThreat.TYPE_SOCIAL_ENGINEERING
    )
            .addOnSuccessListener(this) { sbResponse ->
                // Indicates communication with the service was successful.
                // Identify any detected threats.
                if (sbResponse.detectedThreats.isEmpty()) {
                    // No threats found.
                } else {
                    // Threats found!
                }
            }
            .addOnFailureListener(this) { e: Exception ->
                if (e is ApiException) {
                    // An error with the Google Play Services API contains some
                    // additional details.
                    Log.d(TAG, "Error: ${CommonStatusCodes.getStatusCodeString(e.statusCode)}")

                    // Note: If the status code, s.statusCode,
                    // is SafetyNetstatusCode.SAFE_BROWSING_API_NOT_INITIALIZED,
                    // you need to call initSafeBrowsing(). It means either you
                    // haven't called initSafeBrowsing() before or that it needs
                    // to be called again due to an internal error.
                } else {
                    // A different, unknown type of error occurred.
                    Log.d(TAG, "Error: ${e.message}")
                }
            }
    

Java

    SafetyNet.getClient(this).lookupUri(url,
              SAFE_BROWSING_API_KEY,
              SafeBrowsingThreat.TYPE_POTENTIALLY_HARMFUL_APPLICATION,
              SafeBrowsingThreat.TYPE_SOCIAL_ENGINEERING)
        .addOnSuccessListener(this,
            new OnSuccessListener<SafetyNetApi.SafeBrowsingResponse>() {
                @Override
                public void onSuccess(SafetyNetApi.SafeBrowsingResponse sbResponse) {
                    // Indicates communication with the service was successful.
                    // Identify any detected threats.
                    if (sbResponse.getDetectedThreats().isEmpty()) {
                        // No threats found.
                    } else {
                        // Threats found!
                    }
             }
        })
        .addOnFailureListener(this, new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    // An error occurred while communicating with the service.
                    if (e instanceof ApiException) {
                        // An error with the Google Play Services API contains some
                        // additional details.
                        ApiException apiException = (ApiException) e;
                        Log.d(TAG, "Error: " + CommonStatusCodes
                            .getStatusCodeString(apiException.getStatusCode()));

                        // Note: If the status code, apiException.getStatusCode(),
                        // is SafetyNetstatusCode.SAFE_BROWSING_API_NOT_INITIALIZED,
                        // you need to call initSafeBrowsing(). It means either you
                        // haven't called initSafeBrowsing() before or that it needs
                        // to be called again due to an internal error.
                    } else {
                        // A different, unknown type of error occurred.
                        Log.d(TAG, "Error: " + e.getMessage());
                    }
                }
        });
    

Membaca respons pemeriksaan URL

Menggunakan objek SafetyNetApi.SafeBrowsingResponse yang ditampilkan, panggil metode getDetectedThreats(), yang akan menampilkan daftar objek SafeBrowsingThreat. Jika daftar yang dikembalikan kosong, berarti API tidak mendeteksi ancaman apa pun yang diketahui. Namun, jika daftar tidak kosong, panggil getThreatType() pada setiap elemen dalam daftar untuk menentukan ancaman yang diketahui yang terdeteksi oleh API.

Mematikan sesi Safe Browsing

Jika aplikasi Anda tidak akan menggunakan Safe Browsing API dalam waktu lama, periksa semua URL yang diperlukan dalam aplikasi Anda, lalu matikan sesi Safe Browsing menggunakan metode shutdownSafeBrowsing():

Kotlin

    SafetyNet.getClient(this).shutdownSafeBrowsing()
    

Java

    SafetyNet.getClient(this).shutdownSafeBrowsing();
    

Sebaiknya panggil shutdownSafeBrowsing() dalam metode onPause() aktivitas Anda, dan panggil initSafeBrowsing() dalam metode onResume() aktivitas Anda. Namun, Anda harus memastikan bahwa initSafeBrowsing() telah selesai dijalankan sebelum memanggil lookupUri(). Dengan memastikan sesi Anda selalu baru, Anda akan membantu mengurangi error internal dalam aplikasi Anda.

Bahasa peringatan yang disarankan

Untuk melihat bahasa peringatan yang disarankan, lihat Panduan Developer Safe Browsing API.