Docker容器搭建IP代理池

1,605 阅读2分钟

资源准备

部署使用

一、购买IP,关键词:IP代理 代理池

image.png

二、搭建调用服务

创建安装目录并进入此目录

mkdir -p /root/auto_proxy_pool && cd /root/auto_proxy_pool

拉取镜像、配置、部署运行

#给外部服务器使用,防火墙记得开放对应的端口
docker run -dit \
--name auto_proxy_pool  \
--network bridge  \
--restart always  \
-p 8090:8080  \    #前面端口为服务器端口,后面为容器服务端口,即容器8080端口映射到服务器8090端口,可自行修改
-v /root/auto_proxy_pool:/run/data \
--privileged=true \
mzzsfy/auto-proxy-pool:latest

更新命令:一般不用执行

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower -c --run-once auto_proxy_pool

复制proxy.template.yml到proxy.yml中

运行后会生成proxy.template.yml文件(该文件每次重启都会被覆盖)
将文件改名为proxy.yml,然后参考最简配置修改,需要重启服务`

cp /root/auto_proxy_pool/proxy.template.yml /root/auto_proxy_pool/proxy.yml

配置

#hostRegex中是需要代理的域名,正则规则 (.+\域名名称\.后缀名称)
#api代理自行选择购买代理后生成api填写下面apiUrl中,格式:txt,换行\n,提取1个


changeRequest:
  - hostRegex: (.+\.jd\.com)|(.+\.isvjd\.com)|(.+\.isvjcloud\.com) #正则表达式
    proxy: proxy
upstream:
  proxy:
    template: '{{$x := regexFindAll "\\d{1,3}(\\.\\d{1,3}){3}:\\d{2,5}" . -1}}{{range $s := $x}}{{printf "http://%s" $s}}{{end}}'
    apiUrl: #这里是填写代理api地址,格式:txt,换行\n,提取1个
    checkRetryNumber: 2 #检测代理次数,超过次数则获取新代理
    apiRetryNumber: 5 #上游重试次数,超过次数则采用直连
    checkUrl: http://jd.com/,http://baidu.com/,http://bilibili.com/ #检测代理是否有效,不用改
    lifecycle: -1 #自动失效时间,-1为不自动失效,单位秒
    maxSize: 5 #保留几个上游
    checkTimeout: 2s #单个check超时时间
    checkRetryWait: 500ms #重试check前等待时间
    requestInterval: 1000ms #请求时间间隔,在这个时间内只会请求一次api

三、调用

接口

1.服务器内调用请使用

http://容器IP:port

2.外部服务器调用

http://服务器IP:port

python

proxies = {"http":"http://ip:port","https":"http://ip:port"}

requests.get(url,proxies=proxies)

node

npm install global-agent
import globalagent from 'global-agent/bootstrap';
global.GLOBAL_AGENT.HTTP_PROXY="http://代理池docker地址:服务监听端口";

global.GLOBAL_AGENT.HTTP_PROXY="http://代理池docker服务器地址:映射端口";