调用VirusTotal API获取IP扫描报告返回Missing IP address报错
故障原因
报错核心原因是你传入的ip参数值开头多了一个半角空格:' 192.10.1.01'。VirusTotal v2 API不会自动对传入的参数值做首尾空白字符裁剪,带前导空格的字符串无法被识别为合法IP地址,因此触发参数缺失的报错。
另外你写的IP地址192.10.1.01最后一段带前导0,部分网络组件会将带前导0的数字段识别为八进制数值,可能导致后续IP匹配异常,建议按IPv4标准写法去掉无意义的前导0。
修正后的可运行代码
import requests url = 'https://www.virustotal.com/vtapi/v2/ip-address/report' params = { 'apikey': '<替换为你自己的有效VirusTotal API密钥>', 'ip': '192.10.1.1' # 去掉参数值前的空格,移除IP段的无效前导0 } response = requests.get(url, params=params) # 增加HTTP状态码校验,避免请求失败时直接调用json()抛出异常 response.raise_for_status() print(response.json())
排查同类问题的小技巧
- 调用公开API传参时,不要给参数值加无意义的首尾空格、换行符,绝大多数API服务端不会做自动裁剪,很容易触发参数校验失败
- 写IPv4地址时遵循标准十进制写法,每个地址段取值范围0-255,不要加前导0,避免不同组件解析规则不一致导致的异常
- 如果不确定参数是否正确传递,可以在发请求前打印实际构造的请求URL核对:
查看URL里拼接的req = requests.Request('GET', url, params=params).prepare() print(req.url)ip=后面的地址是否符合预期即可。
内容的提问来源于stack exchange,提问作者dareDevil
相关产品推荐
相关产品推荐

