You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用Shodan API使用过滤器搜索时报错求助

解决Shodan API带过滤器搜索报错的问题

问题背景

你提到用Shodan API搜索带特定过滤器(比如port:21)时总是报错,但普通关键词搜索正常,贴出的代码如下:

import sys
import shodan

SHODAN_API_KEY = "xxxxxxxxxxxxxxxxxx"

try:
    api = shodan.Shodan(SHODAN_API_KEY)
    results = api.search("port:21")
    print results["total"]
    for result in results["matches"]:
        print result["ip_str"]+"\n"
except Exception as e:
    print("Code: {c}, Message: {m}".format(c=type(e).__name__, m = str(e)))

可能的原因及解决办法

我整理了几个常见的触发这类问题的点,你可以逐一排查:

1. Python版本语法不兼容

你的代码采用的是Python 2的语法(print直接写语句不带括号),如果当前运行环境是Python 3,这会直接引发语法错误——因为Python 3里print是必须加括号的内置函数。

修正后的代码片段:

# 给print添加括号适配Python3
print(results["total"])
for result in results["matches"]:
    print(result["ip_str"]+"\n")

2. API密钥或配额问题

  • 先确认SHODAN_API_KEY是否替换成了你自己的真实有效密钥,别留着占位符xxxxxxxxxxxxxxxxxx
  • 免费版Shodan API有每月搜索配额限制,如果配额耗尽也会报错,你可以登录Shodan官网查看自己的账户配额状态
  • 虽然port:21属于基础过滤条件,免费版权限应该支持,但也可以确认下你的账户是否有特殊限制

3. 异常信息的精准定位

如果上面的排查都没问题,建议你把报错的具体Code和Message贴出来,这样能更快锁定问题——比如是网络问题、API返回格式问题,还是其他权限类错误。

内容的提问来源于stack exchange,提问作者Troll Sama bin Laden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:23:12