开源IP代理池

项目地址:https://github.com/jhao104/proxy_pool

使用docker方式部署

部署redis

  • 准备redis.conf配置文件
#注释掉这部分,这是限制redis只能本地访问
bind 0.0.0.0
#默认yes,开启保护模式,限制为本地访问
protected-mode no
#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方#式启动redis失败
daemonize no
#redis持久化(可选)
appendonly yes
#设置密码
requirepass xxxx
  • 启动命令
# 将redis.conf放到usr/local/redis/redis.conf
# --appendonly yes 开启redis 持久化
mkdir -p /usr/local/redis
docker run -p 6379:6379 --name redis -v /usr/local/redis/redis.conf:/etc/redis/redis.conf  -v /usr/local/redis/data:/data  -d redis redis-server /etc/redis/redis.conf  --appendonly yes

部署代理池程序

  • 镜像名称jhao104/proxy_pool
docker pull jhao104/proxy_pool
docker run --env DB_CONN=redis://:password@ip:port/0 -p 5010:5010 jhao104/proxy_pool:latest

使用

  • API
    启动web服务后,默认配置下会开启http://127.0.0.1:5010的api接口服务:
应用程序编程接口 方法 描述 参数
/ 得到 api介绍 没有任何
/得到 得到 随机获取一个代理 可选参数:?type=https过滤支持https的代理
/流行音乐 得到 获取并删除一个代理 可选参数:?type=https过滤支持https的代理
/全部 得到 获取所有代理 可选参数:?type=https过滤支持https的代理
/数数 得到 查看代理数量 没有任何
/删除 得到 删除代理 ?proxy=host:ip
  • 爬虫使用
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))

# your spider code

def getHtml():
    # ....
    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)})
            # 使用代理访问
            return html
        except Exception:
            retry_count -= 1
    # 删除代理池中代理
    delete_proxy(proxy)
    return None
posted @   savagee  阅读(66)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示