VirusTotal API v3 menyediakan sekumpulan titik akhir (endpoints) berbasis RESTful untuk mengotomatiskan pengiriman dan pengambilan analisis ancaman siber, termasuk file, URL, alamat IP, dan domain. Seluruh permintaan menggunakan basis URL resmi https://www.virustotal.com/api/v3 dan memerlukan penyertaan header kunci API (x-apikey) pada setiap eksekusi HTTP.
Daftar Utama VirusTotal API v3 Endpoints
Berikut adalah tabel komparasi endpoints esensial yang paling sering digunakan dalam pengembangan skrip keamanan dan otomatisasi Security Operations Center (SOC):
| Kategori | Metode HTTP | Endpoint URI | Fungsi Utama |
|---|---|---|---|
| Files | GET | /files/{id} |
Mengambil laporan analisis file berdasarkan hash (SHA-256, SHA-1, MD5). |
| Files | POST | /files |
Mengunggah file baru untuk dipindai (maksimal ukuran file tergantung kuota akun). |
| Files | GET | /files/{id}/upload_url |
Mendapatkan URL khusus untuk mengunggah file berukuran besar (>32MB). |
| URLs | GET | /urls/{id} |
Mengambil laporan analisis URL (ID adalah base64 encoded URL tanpa padding). |
| URLs | POST | /urls |
Mengirimkan URL baru untuk dipindai ulang atau dianalisis. |
| IP Addresses | GET | /ip_addresses/{ip} |
Mendapatkan laporan reputasi dan informasi keamanan alamat IP. |
| Domains | GET | /domains/{domain} |
Mendapatkan data analitik, resolusi DNS, dan reputasi sebuah domain. |
| Comments | POST | /{type}/{id}/comments |
Menambahkan komentar komunitas pada objek tertentu (files, urls, dll). |
Panduan Teknis Penggunaan Endpoint
Dalam mengimplementasikan integrasi VirusTotal API v3, pengembang harus memperhatikan beberapa aturan teknis dasar:
- Autentikasi: Header permintaan wajib menyertakan
x-apikey: [KUNCI_API_ANDA]. - Format ID URL: Khusus untuk endpoint
/urls, ID objek dihitung menggunakan string URL yang telah di-encode ke format Base64 standar, kemudian karakter=,+, dan/disesuaikan (URL safe base64 tanpa padding). - Batasan Rate Limit: Akun publik (gratis) dibatasi hingga 4 permintaan per menit dan maksimal 500 permintaan per hari. Akun premium (Enterprise/Intelligence) memiliki kuota yang lebih tinggi sesuai tingkat langganan.
Contoh Implementasi Permintaan (Python)
Berikut adalah contoh cuplikan kode Python menggunakan pustaka requests untuk memeriksa reputasi sebuah hash file:
import requests
url = "https://www.virustotal.com/api/v3/files/44d88612fea8a8f36de82e1278abb02f"
headers = {
"accept": "application/json",
"x-apikey": "KUNCI_API_ANDA_DI_SINI"
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
print(response.json())
else:
print(f"Error: {response.status_code}")
Troubleshooting Kendala Umum
Jika pengujian API mengalami kegagalan, periksa beberapa kode status HTTP yang sering muncul:
- 401 Unauthorized: Kunci API salah atau tidak disertakan pada header permintaan.
- 403 Forbidden: Endpoint memerlukan hak akses premium (Enterprise) yang tidak tersedia pada akun gratis.
- 429 Too Many Requests: Batasan rate limit terlampaui. Kurangi frekuensi pengiriman permintaan atau terapkan jeda waktu (sleep) antar eksekusi skrip.