← 返回 Day 132 正文

Day 132 · 图解

Day 132 - 代理池搭建 · 图解

1. 代理请求链路(HTTP vs HTTPS)

HTTP 站点:
  爬虫 ──"GET http://site.com/x"──▶ 代理 ──"GET /x Host:site.com"──▶ 站点
  (代理能看到并修改全部明文内容)

HTTPS 站点(CONNECT 隧道):
  爬虫 ──"CONNECT site.com:443"──▶ 代理
  代理 ──"200 Connection Established"──▶ 爬虫
  爬虫 ══(TLS 加密隧道,代理只转发字节)══▶ 站点
  (代理只看得见域名,看不到内容)

2. 代理池架构(Mermaid)

flowchart TD F[Fetcher 抓取器<br>多来源抓免费代理] --> V[Validator 验证器<br>aiohttp 并发验证] V -->|成功 +10| S[(Redis ZSet<br>score 0~100)] V -->|失败 -10| S S -->|score=0 删除| X[🗑 移除] S --> A[API: GET /random] A --> C[爬虫业务] C -->|使用失败| S T[定时调度器<br>每 10 分钟] --> F T --> V
flowchart TD
    F[Fetcher 抓取器<br>多来源抓免费代理] --> V[Validator 验证器<br>aiohttp 并发验证]
    V -->|成功 +10| S[(Redis ZSet<br>score 0~100)]
    V -->|失败 -10| S
    S -->|score=0 删除| X[🗑 移除]
    S --> A[API: GET /random]
    A --> C[爬虫业务]
    C -->|使用失败| S
    T[定时调度器<br>每 10 分钟] --> F
    T --> V

3. 分数流转

   抓取入库(50) ──验证成功──▶ 100(顶)
        │                      │
        │                      └─失败-10─▶ 90 ─失败─▶ ... ─失败─▶ 0 → 删除
        └─首次验证失败─▶ 40 ─失败─▶ 30 ─失败─▶ 20 ─失败─▶ 10 ─失败─▶ 0 → 删除