我尝试向 VtAPI 发送 POST 请求来扫描文件,但收到 403 错误
钥匙完全正确,我检查了好几遍。
这是一个包含使用 API 密钥示例的页面https://developers.virustotal.com/v2.0/reference/file-scan
这是我发送 API 请求的方式:
static async Task Main(string[] args)
{
var apiKey = "";
var filePath = "C:/exmpl/exmpl.jpg";
var result = await ScanFileWithVirusTotal(apiKey, filePath);
Console.WriteLine(result);
}
static async Task<string> ScanFileWithVirusTotal(string apiKey, string filePath)
{
byte[] fileBytes = File.ReadAllBytes(filePath);
string fileBase64 = Convert.ToBase64String(fileBytes);
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var requestContent = new StringContent($"{{\"apikey\":\"{apiKey}\",\"file\":\"{fileBase64}\"}}");
requestContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var requestUri = new Uri("https://www.virustotal.com/vtapi/v2/file/scan");
using (var response = await client.PostAsync(requestUri, requestContent))
{
response.EnsureSuccessStatusCode();
var responseBody = await response.Content.ReadAsStringAsync();
return responseBody;
}
}
}
据我在 v3 api 中的理解,他们将文件上传和获取文件扫描结果分开。有两个API:
示例测试代码: