搭建代理池,给青龙面板配置代理教程,避免黑ip
2023年5月9日更新
这里的全局代理类型为HTTP/HTTPS代理池
前提:已搭建docker
一:搭建代理池教程
1、创建并运行代理池docker
docker run -dit \
--name DaiLiC \`# DaiLiC是容器名`
--hostname auto-proxy-pool \`# 主机名`
--network bridge \`# 容器网络类型`
--restart always \`# 开机自启`
-p 8080:8080 \`# 端口映射,"主机端口:容器端口"`
-v /root/auto-proxy-pool:/run/data \`# 映射目录:配置文件的主机挂载目录`
--privileged=true \
mzzsfy/auto-proxy-pool:latest
第一个8080可修改,防止已占用,记得开放对应的端口防火墙
更新容器命令(通用,改容器名,我的是DaiLiC)
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower -c --run-once DaiLiC
2、配置proxy.yml文件
运行后root/auto_proxy_pool会生成proxy.template.yml文件(该文件每次重启都会被覆盖)
将文件改名为proxy.yml,只需要替换你代理网站提取的代理链接apiUrl即可
#频道&教程: https://t.me/autoProxyPool/2
########################################
# 配置中带有default前缀的都能被覆盖 #
########################################
#!!!!!!!!!!请将本文件改名为proxy.yml,本文件每次重启都会被覆盖!!!!!!!!!!
#!!!!!!!!!!请将本文件改名为proxy.yml,本文件每次重启都会被覆盖!!!!!!!!!!
#!!!!!!!!!!请将本文件改名为proxy.yml,本文件每次重启都会被覆盖!!!!!!!!!!
#!!!!!!!!!!请将本文件改名为proxy.yml,本文件每次重启都会被覆盖!!!!!!!!!!
#是否解密https,不解密https无法获取请求内容,解密则需要安装根证书
decryptHttps: false
#是否默认拦截请求
#defaultBlack: false
#检查代理是否可用url,要求:get请求,http状态码100-399,可填写多个用','分隔
defaultCheckUrl: http://baidu.com
#代理多久检查一次是否有效
#proxyCheckInterval: 1500ms
#检查上游是否有效超时时间
defaultCheckTimeout: 3s
#默认重复check次数
defaultCheckRetryNumber: 3
#重试check前等待时间
defaultCheckRetryWait: 200ms
#默认使用的代理名称,不配置则不使用
defaultProxy: proxy1
#默认用作匹配的ck
#defaultProxyCk: ck1
#启用日志等级
#logLevel: debug
#没有使用代理时的日志等级
#noProxyLogLevel: debug
#黑名单时日志等级
#blackLogLevel: debug
#白名单时日志等级
#whiteLogLevel: debug
#信息详细程度等级,规则个位为请求详细程度,越大越详细,十位为返回结果详细程度,越大约详细
#infoLevel: 1
#启动时输出实际生效的配置,请求路径/help/showConfig也能查看
#showConfig: true
#服务相关一些配置
server:
#服务端口
port: 8080
#本服务读超时
readTimeout: 30s
#本服务写超时,秒
writeTimeout: 30s
#设置本代理池的密码
#users:
# username: password
#核心配置
changeRequest:
# 支持多项,从上到下匹配
###########################################################################
# !!!!!!!!未配置decryptHttps:true 遇到https只能匹配host其他匹配将不生效!!!!!!!!!!
# !!!!!!!!未配置decryptHttps:true 遇到https只能匹配host其他匹配将不生效!!!!!!!!!!
# !!!!!!!!未配置decryptHttps:true 遇到https只能匹配host其他匹配将不生效!!!!!!!!!!
# !!!!!!!!未配置decryptHttps:true 遇到https只能匹配host其他匹配将不生效!!!!!!!!!!
###########################################################################
# 目前为或者关系,只要匹配其中一项就生效,后续会改为与关系,有填写的全部匹配才生效
# 匹配host的正则,性能最高
- hostRegex: .+\.jd\.com
#匹配完整url正则,携带参数,功能最全
#urlRegex: https://.+\.baidu\.com\?.+
#匹配路径正则
#pathRegex:/path
#参数匹配正则
#paramsRegex:
#支持多项,写了就会去匹配,如果没有该参数会使用空字符串匹配,后续看是否需要优化
#name: 正则
#headersRegex
#支持多项,写了就会去匹配,如果没有该参数会使用空字符串匹配,后续看是否需要优化
#name: 正则
#cookiesRegex
#支持多项,写了就会去匹配,如果没有该参数会使用空字符串匹配,后续看是否需要优化
#name: 正则
#使用哪一个代理,这样写会尝试按顺序从proxy1取2次,然后去proxy2取一次,按最先取到有效计算
proxy: proxy1
#是否放行,true直接屏蔽该请求
black: false
#用来做上游匹配的ck,当ck值一致时会分配到同一上游,https需要配置decryptHttps:true
#proxyCk: xxxx
#该规则的日志等级
#logLevel: debug
#是否记录未知大小的jsonBody
#logUnknownSizeBody: true
#拦截指定路径
#- pathRegex: /xxxx
# black: true
#带有test 这个header的单独指定上游为proxy2
# - headersRegex:
#test: test
#指定上游
#proxy: proxy1
upstream:
proxy1:
#请求url,只能为get请求,要求返回为json
apiUrl: http://api2.xkdaili.com/tools/XApi.ashx?apikey= #这里的链接替换成自己代理链接,见第3步、购买代理,提取的apiUrl
#api重试超时,最多共重试10秒
apiRetryTimeout: 10s
#api重试次数,最多重试3次
apiRetryNumber: 3
#go template语法,内置函数 https://masterminds.github.io/sprig/,一次返回多个使用换行符分隔
#json例子
template: '{{$x := regexFindAll "\\d{1,3}(\\.\\d{1,3}){3}:\\d{2,5}" . -1}}{{range $s := $x}}{{printf "http://%s" $s}}{{end}}'
#文本例子
#template: '{{$x := regexFindAll "\\d{1,3}(\\.\\d{1,3}){3}:\\d{2,5}" . -1}}{{range $s := $x}}{{printf "http://%s\n" $s}}{{end}}'
#获取到的上游多久后失效,单位:秒,-1不自动生效
lifecycle: -1
#保留几个上游,
maxSize: 4
#指定该代理检验是否有效url,可填写多个用','分隔
checkUrl: http://jd.com/,http://baidu.com,http://bilibili.com
#检验次数,防止误检测
checkRetryNumber: 2
#检验重试前等待时间
checkRetryWait: 500ms
#请求间隔,在这个时间内只会请求一次api
requestInterval: 1000ms
#使用该代理时的日志等级
#logLevel: warn
#proxy2:
#固定为同一上游
#template: 'http://xxx'
3、购买代理,提取apiUrl
提供一个代理购买地址:
星空代理 每日签到送 100 IP。
进入-订单管理-API提取/生成API-生成API链接-复制生成后的API链接填入配置文件proxy.yml的apiUrl的冒号后面。
提取格式如下:
api代理获取设置:
读取数量选择: 1
读取格式:txt
分 隔 符:换行(\n)
配置好后重启即可
二:青龙配置代理
1、Python设置代理
1.1、局部代理
proxies = {"http":"http://ip:port","https":"http://ip:port"}
requests.get(url,proxies=proxies)
1.2、全局代理
我们只需要在青龙的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"
2、JavaScript设置代理
JavaScript脚本并不像Python那样默认使用系统代理变量,如果需要使用代理进行请求,那只能在代码中设置。
2.1、nodejs中安装global-agent依赖
2.2、局部代理
在需要用代理的js脚本开头加入一行代码:
require('global-agent/bootstrap');
global.GLOBAL_AGENT.HTTP_PROXY="http://ip:port";
2.3、全局代理
我们只需要在青龙的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"
0