2

VirusTotalサービス APIで URL をスキャンしようとしていますがresponse_code = 1、URL が存在しない場合でも常に受信します:

stdClass Object
(
    [permalink] => https://www.virustotal.com/url/a92faaf82a911b2fe10ecbc51c6432f903b2a66d0686d6be0eeec78abf17cded/analysis/1348649385/
    [resource] => http://www.sdfjiodsffnsdklfjksdhf.com/
    [url] => http://www.sdfjiodsffnsdklfjksdhf.com/
    [response_code] => 1
    [scan_date] => 2012-09-26 08:49:45
    [scan_id] => a92faaf82a911b2fe10ecbc51c6432f903b2a66d0686d6be0eeec78abf17cded-1348649385
    [verbose_msg] => Scan request successfully queued, come back later for the report
)

しかし、上記のマニュアルでは、次のように書いています。

"response_code: 検索したアイテムが VirusTotal のデータセットに存在しない場合、この結果は 0 になります。要求されたアイテムがまだ分析のためにキューに入れられている場合、-2 になります。アイテムが実際に存在し、取得できた場合は、次のようになります。 1. その他のケースについては、次のセクションで詳しく説明します。」

そのためにVirusTotalApiV2 クラスを使用しています。

4

1 に答える 1

6

サポートから回答を受け取りました:

こんにちは、

おそらく、ドキュメントは十分に明確ではありません。

スキャンのために URL を送信するときはいつでも、URL は同じ瞬間にスキャンされる場合とされない場合があります。つまり、スキャンのために URL をキューに入れているということです。response_code が 1 の場合は、キューへの登録が成功し、スキャンができるだけ早く実行されることを意味します (API の優先度は Web インターフェイスよりも低くなります)。

スキャン結果を取得するには、後で戻ってきて、以下を使用して要求する必要があります。

https://www.virustotal.com/documentation/public-api/#getting-url-scans

理想的なワークフローは次のようになります。

1) 以下を使用して、URL が過去に既にスキャンされているかどうかを確認します。

https://www.virustotal.com/documentation/public-api/#getting-url-scans

それが実際にスキャンされ、スキャン日が十分に新しい場合は、取得したばかりのレポートを使用し、そうでない場合は [2] に進みます。

2) 以下を使用してスキャンを依頼します。

https://www.virustotal.com/documentation/public-api/#scanning-urls

3) しばらく待ってから (安全のために数時間)、次の URL でレポートを要求します。

https://www.virustotal.com/documentation/private-api/#getting-url-scans

それでもスキャンされない場合は、しばらく待ってから API をポーリングしてください。

問題が解決しない場合は、お気軽にお問い合わせください。

よろしく。

于 2012-09-27T07:43:57.480 に答える