SecLens 插件开发指南

网安资讯,一网打尽。汇集权威漏洞通告与行业要闻,结合分组浏览、智能过滤、RSS订阅 和 Webhook 推送,多通道拓展您的安全情报视野。

采集器开发指南

SecLens 采用众包采集架构:任何人都可以开发独立的采集器,通过 Ingest API 向平台推送安全情报数据。

快速开始

  1. 获取凭据:联系管理员获取 Collector Token(slct_ 前缀)。
  2. 开发采集器:使用任何语言编写采集逻辑,将数据格式化为 BulletinCreate 结构。
  3. 推送数据:调用 POST /v1/ingest/bulletins 提交采集结果。
  4. 部署运行:使用 Cron、Airflow 或任何调度系统定期运行采集器。

Ingest API

POST /v1/ingest/bulletins
Authorization: Bearer slct_your_token_here
Content-Type: application/json

[
  {
    "source": {
      "source_slug": "your_source_slug",
      "external_id": "unique-item-id",
      "origin_url": "https://example.com/advisory/123"
    },
    "content": {
      "title": "安全公告标题",
      "summary": "简要描述",
      "published_at": "2026-01-15T10:00:00Z"
    },
    "severity": "high",
    "labels": ["vulnerability"],
    "topics": ["official_bulletin"]
  }
]

Python 采集器示例

import requests

INGEST_URL = "https://your-seclens.example.com/v1/ingest/bulletins"
TOKEN = "slct_your_token_here"

def collect():
    # 从目标源获取数据
    resp = requests.get("https://example.com/api/advisories", timeout=30)
    resp.raise_for_status()
    items = resp.json()

    # 格式化为 BulletinCreate 结构
    bulletins = []
    for item in items:
        bulletins.append({
            "source": {
                "source_slug": "example_advisories",
                "external_id": str(item["id"]),
                "origin_url": item["url"],
            },
            "content": {
                "title": item["title"],
                "summary": item.get("description"),
                "published_at": item["published"],
            },
        })

    # 推送到 SecLens
    headers = {
        "Authorization": f"Bearer {TOKEN}",
        "Content-Type": "application/json",
    }
    resp = requests.post(INGEST_URL, json=bulletins, headers=headers, timeout=30)
    resp.raise_for_status()
    print(f"提交成功: {resp.json()}")

if __name__ == "__main__":
    collect()

数据字段说明

注意事项