0

我想在 python 中列出我的脚本搜索特定字符串,但我也想添加国家代码前两个字母,但是当我尝试时它说无效 KeyError:'country_code',但 api 说 ocation.country_code 我怎么能做到这一点?

 #!/usr/bin/python
import shodan
SHODAN_API_KEY="xxxxxxxxxxxxxxxxxxxx"
api = shodan.Shodan(SHODAN_API_KEY)

try:
    # Search Shodan
    results = api.search('ProFTPd-1.3.3c')

    # Show the results
    for result in results['matches']:
        print '%s' % result['ip_str']
        print '%s' % result['country_code']

except shodan.APIError, e:
        print 'Error: %s' % e
4

1 回答 1

2

我认为这是您在 Python https://github.com/achillean/shodan-python/blob/master/shodan/client.py#L324中使用的方法 ,它会触发:

return self._request('/shodan/host/search', args)

Shodan API 文档: https ://developer.shodan.io/api 查看/shodan/host/search API

我刚刚看到答案在您的问题中,但是您从位置(位置)吃了一封信。

尝试这个:

print '%s' % result['location']['country_code']

因此,您正在寻找的字段在那里,但它在另一本字典中。

我建议下次好好阅读 API 文档,正如 Nofal Daud 所说,如果您在 dict 上有 KeyError,则 Python 错误是不言自明的,这意味着该字段不存在。下一次听 Python 就知道真相了。

于 2018-02-17T19:34:42.007 回答