跳转至

API 使用

接口列表

启动 ProxyPool 的 server 后会提供如下 HTTP 接口:

接口 方法 说明 参数
/ GET 返回 API 列表
/get GET 随机返回一个代理 可选:?type=https 过滤 HTTPS 代理
/pop GET 返回并删除一个代理 可选:?type=https 过滤 HTTPS 代理
/all GET 返回所有代理 可选:?type=https 过滤 HTTPS 代理
/count GET 返回代理数量统计
/delete GET 删除指定代理 ?proxy=host:port

调用示例

在爬虫中使用

通过调用 API 接口来使用代理池:

import requests


def get_proxy():
    return requests.get("http://127.0.0.1:5010/get/").json()


def delete_proxy(proxy):
    requests.get("http://127.0.0.1:5010/delete/?proxy={}".format(proxy))


def get_html():
    retry_count = 5
    proxy = get_proxy().get("proxy")
    while retry_count > 0:
        try:
            # 使用代理访问
            html = requests.get(
                "http://www.example.com",
                proxies={
                    "http": "http://{}".format(proxy),
                    "https": "https://{}".format(proxy),
                },
            )
            return html
        except Exception:
            retry_count -= 1
            # 删除代理池中代理
            delete_proxy(proxy)
    return None

本例中在本地 127.0.0.1 启动端口为 5010server,使用 /get 接口获取代理,/delete 删除代理。

获取 HTTPS 代理

# 只获取支持 HTTPS 的代理
proxy = requests.get("http://127.0.0.1:5010/get/?type=https").json()

获取代理统计

# 返回代理数量、类型分布、来源分布
stats = requests.get("http://127.0.0.1:5010/count/").json()
# 示例返回: {"http_type": {"http": 10, "https": 5}, "source": {"freeProxy01": 8, "freeProxy02": 7}, "count": 15}

直接读取数据库

除了通过 API 接口,也可以直接读取数据库获取代理。目前支持两种数据库:Redis 和 SSDB。

  • Redis:存储结构为 hash,hash name 为配置项中的 TABLE_NAME(默认 use_proxy
  • SSDB:存储结构为 hash,hash name 为配置项中的 TABLE_NAME

可以在代码中自行读取数据库获取代理列表。