Virustotal API v3 Python Wrapper: Panduan & Implementasi

VirusTotal API v3 menyediakan akses terprogram ke pangkalan data ancaman siber global untuk menganalisis file, domain, IP, dan URL secara otomatis menggunakan Python. Implementasi standar saat ini menggunakan pustaka resmi virustotal-python atau pustaka pihak ketiga seperti vt-py yang dikembangkan langsung oleh tim VirusTotal untuk mendukung seluruh endpoint API v3 secara asinkron maupun sinkron.

Untuk memulai otomatisasi analisis keamanan menggunakan Python, pastikan Anda telah memiliki kunci API aktif dari akun VirusTotal pribadi atau korporat. Pustaka resmi vt-py dirancang khusus untuk menangani respons JSON, manajemen kuota rate-limit, dan penanganan kesalahan HTTP secara native tanpa perlu menulis kode boilerplate tambahan untuk setiap permintaan HTTP.

Persiapan dan Instalasi Pustaka Resmi

Instalasi pustaka resmi VirusTotal API v3 untuk Python dapat dilakukan melalui manajer paket pip. Buka terminal atau command prompt Anda, lalu jalankan perintah instalasi berikut:

pip install vt-py

Setelah instalasi selesai, simpan kunci API Anda ke dalam variabel lingkungan (environment variable) demi keamanan kredensial, atau masukkan langsung ke dalam skrip pengujian lokal.

Tabel Perbandingan Metode Integrasi Python

Pustaka Python Dukungan API Fitur Utama Rekomendasi Penggunaan
vt-py (Resmi) API v3 Penuh Async/Await, Penanganan Kuota Otomatis Produksi & Skrip Skala Besar
requests (Manual) Custom Endpoint Kontrol penuh header & parameter HTTP Pengujian cepat / Endpoint spesifik
virustotal-python API v3 & v2 Mendukung versi lama dan baru Migrasi sistem lama

Contoh Kode: Memeriksa Hash File

Berikut adalah contoh implementasi skrip Python menggunakan pustaka vt-py untuk memeriksa laporan analisis file berdasarkan nilai hash (SHA-256, SHA-1, atau MD5) yang sudah ada di database VirusTotal:

import os
import vt

# Mengambil API key dari environment variable
API_KEY = os.getenv("VT_API_KEY")
file_hash = "49818e6992d9d961e1b12b5d4e13835f8b725c86c342f0a1c6a237f3743c3938"

async def check_file_report(file_id):
    async with vt.Client(API_KEY) as client:
        try:
            analysis = await client.get_object_async(f"/files/{file_id}")
            print(f"Nama file: {analysis.meaningful_name}")
            print(f"Total Deteksi Antivirus: {analysis.last_analysis_stats['malicious']}")
        except vt.APIError as e:
            print(f"Terjadi kesalahan API: {e}")

import asyncio
asyncio.run(check_file_report(file_hash))

Langkah-Langkah Pemindaian File Baru

Jika file belum pernah diunggah ke VirusTotal, Anda harus mengunggahnya terlebih dahulu melalui endpoint pemindaian file:

  1. Inisialisasi klien VirusTotal dengan kunci API yang valid.
  2. Buka file target dalam mode biner baca (rb).
  3. Gunakan metode client.scan_file_async() untuk mengirimkan file ke server VirusTotal.
  4. Ambil ID analisis yang dikembalikan untuk memantau status pemindaian secara berkala.
import os
import vt

API_KEY = os.getenv("VT_API_KEY")
file_path = "path/to/suspicious_file.exe"

async def scan_local_file(path):
    async with vt.Client(API_KEY) as client:
        with open(path, "-rb" if False else "rb") as f:
            analysis = await client.scan_file_async(f)
            print(f"ID Analisis: {analysis.id}")
            print(f"Status: {analysis.status}")

import asyncio
asyncio.run(scan_local_file(file_path))

Tips Troubleshooting dan Manajemen Kuota

Kunci API gratis (public API) VirusTotal memiliki batasan ketat berupa 4 permintaan per menit dan maksimal 500 permintaan per hari. Jika Anda melanggar batasan ini, server akan mengembalikan kode status HTTP 424 (Quota Exceeded). Gunakan fungsi penundaan waktu (asyncio.sleep) atau tangani pengecualian vt.APIError untuk mengantisipasi lonjakan permintaan otomatis dalam skrip Anda.