Shodan Proxy 不是为了把 API 公开给所有人,而是为了在受控环境里少分发真实 Key、多加一道访问边界。它在客户端和 Shodan API 之间处理 Key 池、来源 IP、敏感路径和管理配置,适合内网工具、共享开发和受控实验环境。

核心结论

当多个客户端需要访问 Shodan,但不应各自持有生产 Key 时使用

把 Key 分散到浏览器、脚本、测试机和多人配置中,泄露与失控风险会快速增加。Proxy 让调用方继续使用近似 Shodan 原始路径,而真实 Key 保留在服务端,再通过白名单与路径规则限制访问范围。

五项核心能力

API 请求转发

按 Shodan 兼容路径接收请求,再附加服务端管理的认证信息。

多 Key 轮询

维护多个 API Key,并以 Round-robin 方式选择,减少客户端配置数量。

IP 白名单

只允许明确来源访问,适合内网、VPN 或固定出口环境。

路径阻止

对扫描、修改、企业接口等不希望开放的路径进行显式限制。

认证管理面板

通过管理界面维护配置与 Key,但管理端必须单独保护。

Docker 部署

提供 Compose 入口,适合快速放入现有容器化环境。

最小 Docker 部署流程

mkdir shodan-proxy && cd shodan-proxy
curl -O https://raw.githubusercontent.com/liuweitao/shodan-proxy/main/compose.yaml
docker compose up -d

启动前应编辑 config/config.yaml 和 Key 配置文件,至少确认以下内容:

  • allowed_ips 只包含可信来源,不使用过宽网段。
  • trusted_proxies 与实际反向代理链一致,避免伪造来源地址。
  • blocked_paths 阻止不需要开放的扫描、告警或管理类接口。
  • 管理账号使用强、唯一密码,配置文件权限不允许普通用户读取。

请求方式与 Key 选择逻辑

调用方通常不需要在每个请求中提供真实 Key。没有传 Key,或使用项目约定的占位值时,Proxy 会从自己的 Key 池中选择;调用方显式传入其他 Key 时,则使用调用方提供的 Key。

请求情况实际使用的 Key建议
未传 keyProxy Key 池适合受控客户端
项目约定的占位 KeyProxy Key 池适合 Explorer 等兼容前端
显式传入其他 Key调用方 Key仅在明确需要时使用,避免日志泄露

轮询只是 Key 选择策略,不会改变 Shodan 的权限、积分或速率限制。生产使用仍应记录匿名化调用指标,并对认证错误、额度耗尽与异常请求做告警。

不要直接把默认配置暴露到公网

示例管理凭据必须立即替换。不要把仓库示例中的管理账号或密码用于实际部署。管理端应监听本机,通过 SSH 隧道、VPN 或受控反向代理访问。
  1. 在防火墙层只开放业务必需端口,并把管理端绑定到 127.0.0.1
  2. 使用 TLS,限制可信代理,避免错误信任任意 X-Forwarded-For
  3. 定期更新镜像并检查白名单、阻止路径和不再使用的 Key。
  4. 不要在响应、访问日志或错误追踪中输出完整 Key。
  5. 为高成本或可改变状态的接口设置更严格的路径策略。

与 Shodan Explorer 的推荐组合

Browser → Shodan Explorer → Shodan Proxy → Key Pool → Shodan API

这个组合把“界面”和“凭据”分开:Explorer 负责表单、请求预览和响应展示;Proxy 负责真实 Key、来源限制和路径控制。这样比把生产 Key 直接注入公开网页更可控。

适合与不适合的部署场景

适合

内网研发、固定出口主机、VPN 用户、共享 API 调试台、多个内部脚本统一接入。

不适合

匿名公网代理、规避官方额度、未经授权的扫描服务,或没有能力维护访问控制和密钥安全的环境。

References

参考资料

本文用于产品理解、开发学习与合法授权场景说明。第三方文档、软件版本和平台规则可能更新,请以来源页面最新内容为准。

FAQ

常见问题

Shodan Proxy 能绕过 Shodan 的额度或权限吗?

不能。它只转发请求、选择已配置的 Key 并执行本地访问控制,最终权限和额度仍由每个 Shodan Key 的计划与官方规则决定。

适合直接暴露到公网吗?

不推荐。项目说明明确建议在受控网络中使用。确需远程访问时,应增加强认证、TLS、防火墙、可信代理配置和严格白名单,并把管理端限制在本机或 VPN。

多个 API Key 会怎样分配?

代理可维护多个 Key,并以轮询方式选择。它不是完整的额度调度系统,仍应监控每个 Key 的状态、剩余额度和错误。

为什么和 Shodan Explorer 搭配?

Explorer 需要一个兼容 Shodan 请求约定的后端。通过 Proxy,浏览器可以使用占位 Key,而真实 Key 留在服务端,并受 IP 白名单和阻止路径控制。