首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -删除shodan结果中的结果

Python -删除shodan结果中的结果
EN

Stack Overflow用户
提问于 2019-12-13 21:07:12
回答 1查看 347关注 0票数 0

我正在尝试解析Shodan查询结果,并只打印与我设置的条件匹配的结果。输出需要是JSON格式,以便稍后集成到Splunk中。

我想遍历元素集,如果一个元素与"US“的位置country_code不匹配,则删除该元素。

下面是我的代码:

代码语言:javascript
复制
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']中删除。

EN

回答 1

Stack Overflow用户

发布于 2019-12-23 09:35:38

这里有几件事:

  1. 考虑使用Shodan.search_cursor(query)方法,而不仅仅是Shodan.search(query)。如果有超过100个结果,search_cursor()方法将为您处理结果分页。否则,您需要通过向search()方法提供page参数来自行完成此操作。这里有一篇文章进一步解释了这一点:https://help.shodan.io/guides/how-to-download-data-with-api
  2. You实际上可以过滤掉搜索查询中的非美国结果!只需将“-country:US”添加到您的查询,您将不会得到任何关于美国的服务的结果。例如,假设您有Python3.7,请执行以下操作:

代码语言:javascript
复制
query_results = api.search(f'{query} -country:US')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59323244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档