前言
全自动代理池,镜像mzzsfy/auto-proxy-pool,将多个api代理池或者固定上游转化为透明代理池,多规则控制请求上游,也支持请求拦截、修改请求等功能
先在 星空注册 一个账号
巨量注册
创建容器
mkdir -p /root/proxypool && cd /root/proxypool && docker run -itd -v "$(pwd)":/run/data -p 8899:8080 --restart=always --name=auto-proxy-pool mzzsfy/auto-proxy-pool
更新
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower -c --run-once auto-proxy-pool
修改proxy.yml
proxy.template.yml 复制proxy.yml
cp proxy.template.yml proxy.yml
修改配置(京东配置)
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
全部请求生效
defaultCheckUrl: http://baidu.com/,http://connect.rom.miui.com/generate_204 #检测代理是否有效的url
changeRequest:
- hostRegex: .+\.xxx\.com #正则表达式
proxy: proxy
- hostRegex: .+.xxx\.com #正常使用只用上方一条规则,本行和以下内容可删除
proxy: noproxy #自定义名称里没有则不用代理
- hostRegex: (.+\.xxx\.com)|(.*xxx\.com) #匹配多个
proxy: proxy
- hostRegex: .* #匹配全部
proxy: proxy #本行和以上内容可删除
upstream:
proxy: #自定义名字
template: '{{$x := regexFindAll "\\d{1,3}(\\.\\d{1,3}){3}:\\d{2,5}" . -1}}{{range $s := $x}}{{printf "http://%s\n" $s}}{{end}}'
apiUrl: 这里是填写api地址,txt换行(带有\n字样)格式的
lifecycle: 20 #提取后主动过期时间,-1不主动过期,只定期检测
maxSize: 1 #同时维护几个有效ip
requestInterval: 100ms #请求api间隔,避免请求太快服务器拉黑
修改完成之后记得重启
docker restart auto-proxy-pool
成功
Python设置代理
局部代理
proxies = {"http":"http://ip:port","https":"http://ip:port"}
requests.get(url,proxies=proxies)
全局代理
我们只需要在青龙的config.sh文件添加http_proxy、https_proxy环境变量即可:
//仅支持http代理
export GLOBAL_AGENT_HTTP_PROXY="http://ip:port"
//支持http和https代理
export GLOBAL_AGENT_HTTPS_PROXY="http://ip:port"
JavaScript设置代理
JavaScript脚本并不像Python那样默认使用系统代理变量,如果需要使用代理进行请求,那只能在代码中设置。
nodejs中安装global-agent依赖
局部代理
在需要用代理的js脚本开头加入一行代码:
require('global-agent/bootstrap');
global.GLOBAL_AGENT.HTTP_PROXY="http://ip:port";
全局代理
我们只需要在青龙的config.sh文件添加GLOBAL_AGENT_HTTP_PROXY、GLOBAL_AGENT_HTTPS_PROXY环境变量即可:
//仅支持http代理
export GLOBAL_AGENT_HTTP_PROXY="http://ip:port"
//支持http和https代理
export GLOBAL_AGENT_HTTPS_PROXY="http://ip:port"