---
title: 'Feed 端點'
description: '用 blocklist 跟結構化 JSON 格式取得威脅情報 feed。'
icon: 'rss'
---

Feed 端點提供針對防火牆、DNS resolver、Panguard agent 最佳化格式的威脅情報。Blocklist feed 回純文字；結構化 feed 回 JSON。

## GET /api/feeds/ip-blocklist

回傳惡意 IP 的純文字清單，一行一個。設計成讓防火牆（iptables、pf、Windows Firewall）跟網路設備直接吃。

<ParamField query="minReputation" type="number" default="30">
  要納入的最高聲譽分數（0 = 最惡意）。值越低清單越保守。
</ParamField>

<ParamField query="category" type="string">
  依威脅類別篩選：`malware`、`botnet`、`bruteforce`、`scanner`、`c2`。
</ParamField>

<CodeGroup>
```bash cURL
curl -X GET "https://tc.panguard.ai/api/feeds/ip-blocklist?minReputation=20" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

```bash 直接餵 iptables
curl -s "https://tc.panguard.ai/api/feeds/ip-blocklist" \
  -H "Authorization: Bearer YOUR_API_KEY" | \
  while read ip; do
    iptables -A INPUT -s "$ip" -j DROP
  done
```

</CodeGroup>

### Response

```text
# Panguard AI IP Blocklist
# Generated: 2026-03-07T12:00:00Z
# Total: 1423 IPs
198.51.100.42
198.51.100.78
203.0.113.15
203.0.113.99
192.0.2.50
...
```

<Info>
  回應的 content type 是 `text/plain`。`#` 開頭的行是含 metadata
  的註解。清單依聲譽分數排序（最惡意的排前面）。
</Info>

---

## GET /api/feeds/domain-blocklist

回傳惡意 domain 的純文字清單，一行一個。適合 DNS sinkhole 設定（Pi-hole、dnsmasq、Unbound）。

<ParamField query="minReputation" type="number" default="30">
  要納入的最高聲譽分數。
</ParamField>

<ParamField query="category" type="string">
  依威脅類別篩選：`malware`、`phishing`、`c2`、`exploit`。
</ParamField>

<CodeGroup>
```bash cURL
curl -X GET "https://tc.panguard.ai/api/feeds/domain-blocklist" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

```bash Pi-hole 格式
curl -s "https://tc.panguard.ai/api/feeds/domain-blocklist" \
  -H "Authorization: Bearer YOUR_API_KEY" | \
  sed 's/^/0.0.0.0 /' > /etc/pihole/panguard-blocklist.txt
```

</CodeGroup>

### Response

```text
# Panguard AI Domain Blocklist
# Generated: 2026-03-07T12:00:00Z
# Total: 892 domains
malware-c2.example.net
phishing-bank.example.org
dropper.example.com
evil-redirect.example.io
...
```

---

## GET /api/feeds/iocs

以結構化 JSON 回傳完整 IoC feed 加 metadata，適合接 SIEM 或自動化處理。

<ParamField query="since" type="string">
  ISO 8601 時間戳。只回傳這之後更新的 IoC（增量同步用）。
</ParamField>

<ParamField query="type" type="string">
  依 IoC 型別篩選：`ip`、`domain`、`hash`、`url`。
</ParamField>

<ParamField query="limit" type="number" default="1000">
  回傳的最大 IoC 數（最大 5000）。
</ParamField>

<CodeGroup>
  ```bash cURL curl -X GET
  "https://tc.panguard.ai/api/feeds/iocs?since=2026-03-06T00:00:00Z&type=ip" \ -H "Authorization:
  Bearer YOUR_API_KEY" ```
</CodeGroup>

<ResponseExample>
```json 200
{
  "ok": true,
  "data": {
    "generatedAt": "2026-03-07T12:00:00.000Z",
    "count": 156,
    "iocs": [
      {
        "value": "198.51.100.42",
        "type": "ip",
        "reputation": 12,
        "category": "bruteforce",
        "sightings": 47,
        "firstSeen": "2026-02-15T10:00:00.000Z",
        "lastSeen": "2026-03-07T08:15:00.000Z",
        "metadata": {
          "asn": "AS64496",
          "country": "CN",
          "mitreIds": ["T1110"]
        }
      }
    ]
  }
}
```
</ResponseExample>

---

## GET /api/feeds/agent-update

回傳 Panguard Guard agent 的打包更新，含最新偵測規則跟 IoC 資料。Agent 在更新週期會自動呼叫這個 endpoint。

<ParamField query="currentVersion" type="string">
  Agent 目前的規則版本。只回傳這個版本之後的差異。
</ParamField>

<ParamField query="agentId" type="string">
  請求端 agent 的 ID，做存取控制用。
</ParamField>

<CodeGroup>
  ```bash cURL curl -X GET "https://tc.panguard.ai/api/feeds/agent-update?currentVersion=v20260306"
  \ -H "Authorization: Bearer YOUR_API_KEY" ```
</CodeGroup>

<ResponseExample>
```json 200
{
  "ok": true,
  "data": {
    "version": "v20260307",
    "rules": {
      "atr": {
        "added": 12,
        "updated": 3,
        "removed": 1,
        "files": [
          {
            "id": "ATR-2025-0125",
            "name": "Detect Cryptominer via Agent Action",
            "content": "..."
          }
        ]
      }
    },
    "iocs": {
      "ipBlocklist": ["198.51.100.42", "203.0.113.99"],
      "domainBlocklist": ["malware-c2.example.net"],
      "hashBlocklist": ["e3b0c44298fc1c149afbf4c8996fb924"]
    },
    "config": {
      "heartbeatInterval": 60,
      "logLevel": "info"
    }
  }
}
```
</ResponseExample>

<Tip>
  帶了 `currentVersion` 的話，agent-update endpoint 走差異更新。只傳 agent
  上次更新之後新增或修改的規則，省頻寬。
</Tip>
