我正在尝试解析Shodan查询结果,并只打印与我设置的条件匹配的结果。输出需要是JSON格式,以便稍后集成到Splunk中。
我想遍历元素集,如果一个元素与"US“的位置country_code不匹配,则删除该元素。
下面是我的代码:
import shodan
import os
import sys
import json
SHODAN_API_KEY = os.environ.get("SHODAN_API_KEY")
api = shodan.Shodan(SHODAN_API_KEY)
query = sys.argv[1]
try:
query_results = api.search(query)
except shodan.APIError as err :
print('Error: {}'.format(err))
for element in query_results['matches']:
if 'US' in format(element['location']['country_code']):
del element
print(query_results['matches'])但使用此代码时,我的element不会从query_result['matches']中删除。
发布于 2019-12-23 09:35:38
这里有几件事:
Shodan.search_cursor(query)方法,而不仅仅是Shodan.search(query)。如果有超过100个结果,search_cursor()方法将为您处理结果分页。否则,您需要通过向search()方法提供page参数来自行完成此操作。这里有一篇文章进一步解释了这一点:https://help.shodan.io/guides/how-to-download-data-with-apiquery_results = api.search(f'{query} -country:US')https://stackoverflow.com/questions/59323244
复制相似问题