Traefik 插件

拦截机器人与 VPN 的 Traefik 插件

机器人、Tor、VPN 和代理,每个路由只需一个标签即可检测。默认以 Monitor 模式运行,切换前不会拦截任何请求。

免费,MIT 许可证已在 Traefik v3.7 上测试

流量类别

检测内容

每位访客都会被归入一个类别,您的服务通过 X-IPScanner-Class 收到它。

  • 真人
  • 已验证机器人
  • VPN
  • 隐私中继
  • 主机托管
  • 代理
  • Tor
  • AI 代理
  • 恶意自动化

安装

四个步骤,先用 Monitor 模式

  1. 1

    创建 API 密钥

    将其放入 Traefik 容器的环境变量。所有 ipscanner 中间件都会读取它。

    创建免费 API 密钥
    docker-compose.yml
    environment:
      IPSCANNER_API_KEY: pk_live_...
  2. 2

    声明插件

    写入静态配置,或使用两个 CLI 参数,然后重启 Traefik。

    traefik.yml
    experimental:
      plugins:
        ipscanner:
          moduleName: github.com/ipscanner/ipscanner-traefik
          version: v0.1.0
  3. 3

    添加站点并设置 siteId

    模式和策略随后由控制台下发,无需重新加载。

    在控制台中添加站点
    labels
    traefik.http.middlewares.ipscanner.plugin.ipscanner.siteId=site_...
  4. 4

    挂到路由上

    其他路由可以通过 ipscanner@docker 复用它。

    labels
    traefik.http.routers.app.middlewares=ipscanner

您的技术栈

Coolify、Compose 或 Kubernetes

无论 Traefik 从哪里读取配置,都是同一个插件。

Servers › 您的服务器 › Proxy
command:
  # ...the flags Coolify set
  - '--experimental.plugins.ipscanner.modulename=github.com/ipscanner/ipscanner-traefik'
  - '--experimental.plugins.ipscanner.version=v0.1.0'
environment:
  - IPSCANNER_API_KEY=pk_live_...
您的应用 › Configuration › Container Labels
traefik.http.middlewares.ipscanner-myapp.plugin.ipscanner.siteId=site_...
traefik.http.routers.https-0-<uuid>.middlewares=gzip,ipscanner-myapp

每个应用使用一个独立的中间件名称,并追加到 Coolify 生成的每个路由上。如果站点在 Cloudflare 之后,还需设置 trustedProxies=cloudflare 和 ipHeaders=CF-Connecting-IP。

站点控制台

无需改动 Traefik 即可修改策略

在控制台中为每个类别选择允许、标记或拦截。中间件会在 30 秒内应用更改。

  • 经过验证的搜索引擎和 AI 爬虫始终放行。
  • Monitor 模式不拦截任何请求,只显示本应拦截的内容。
  • IPScanner 在 1.5 秒内未响应时,请求照常通过。

选项

中间件选项

在中间件上设置:通过标签、YAML 或 CRD。

选项默认值
siteId控制台中的站点,模式和策略由它决定空
mode未设置 siteId 时使用 monitor 或 enforcemonitor
blockClasses未设置 siteId 时 enforce 模式下拦截的类别malicious_automation
trustedProxies可信任其 IP 请求头的代理:CIDR、private、cloudflare空
ipHeaders按顺序从可信代理读取的请求头X-Forwarded-For
timeout单次检测的时限,超时后请求放行1500ms
cacheTTL每位访客的判定缓存10m
cacheSize缓存中保留的访客数10000
policyTTL已获取策略的有效时长30s
skipPaths跳过检测的路径正则静态资源
apiKeyFile存放 API 密钥的文件,用于 Secret空
debug在响应中添加请求头并记录每次判定false

常见问题

Traefik 插件常见问题

每位访客最多每 10 分钟检测一次,判定结果缓存在内存中,后续请求不会再调用 API。单次检测时限为 1.5 秒,超时后请求放行。

从 Monitor 模式开始

添加中间件,在控制台观察一周流量,再开始拦截。