搭建一个代理池让你的青龙面板js脚本也能使用代理IP
[scode type="blue" ]感谢M佬提供[/scode]
下面是我自己搭建的流程使用给大家参考下,自己在用的部分功能,内容收集与互联网
代理池搭建
[scode type="green"]
使用的是docker安装,没装docker的自行安装docker
进入ssh终端,运行以下代码进行安装:[/scode]
/root/data/proxy-pool可自行修改自己想放的目录
端口根据自己需要的端口进行修改,我这用的18080
docker run -dit \
--name auto-proxy-pool \ # 容器名
--hostname auto-proxy-pool \ # 主机名
--network bridge \ # 容器网络类型
--restart always \ # 开机自启
-p 18080:8080 \ # 端口映射,主机端口:容器端口
-v /root/data/proxy-pool:/run/data \ # 配置文件的主机挂载目录
--privileged=true \
mzzsfy/auto-proxy-pool:latest
[scode type="green"]简单部署[/scode]
docker run -dit \
--name proxy-pool \
-p 18080:8080 \
-v /root/data/proxy-pool:/run/data \
mzzsfy/auto-proxy-pool:latest
docker logs -f auto-proxy-pool 命令查看容器日志
[scode type="green"]运行后会生成proxy.template.yml文件(该文件每次重启都会被覆盖)
将文件改名为proxy.yml,然后参考最简配置修改,需要重启服务[/scode]
[scode type="green"]配置文件表,可自定义修改自己需要的参数,[font color="#DC143C"] 替换所有 [/font] 即可; [font color="#DC143C"] +.xxx.com [/font]里面的xxx改成需要进行代理的域名比如[font color="#DC143C"]jd[/font] ,如果提示配置错误,删除注释的文字即可。
[/scode]
defaultCheckUrl: http://baidu.com/ # 代理默认检测地址,用于检测通过代理池提取到的代理IP是否有效
changeRequest:
- hostRegex: .+\.xxx\.com #正则表达式 ,用于指定通过代理的请求链接(根据正则表达式匹配,` .* `表示匹配全部,若请求链接不在此规则内则会通过本机自身网络快速放通)
proxy: proxy #指定配置
#- hostRegex: .+.xxx\.com
#proxy: noproxy #自定义名称里没有则不用代理
#- hostRegex: (.+\.xxx\.com)|(.*xxx\.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地址,换行(带有\n字样)格式的
#指定该代理检验是否有效url # <你的代理池API> 接口回传需为txt格式
checkUrl: http://jd.com/
#api重试超时,最多共重试10秒
#apiRetryTimeout: 10s
#api上游重试次数,最多重试3次,超过次数则采用直连
apiRetryNumber: 2
#检测代理次数,防止误检测,超过次数则获取新代理
checkRetryNumber: 2
# 代理IP的生命周期,即从代理池提取到的IP的有效时长(填-1为自动检测即不指定,若需指定直接定义正整数,单位/秒)
lifecycle: -1
# 保留几个上游,IP数量即同时维护几个有效ip,代理池消耗速度的倍数等于该设定值
maxSize: 1
# 从代理池获取代理IP的请求时间间隔,注意不要太快否则可能会被服务器拉黑
requestInterval: 2000ms
[scode type="green"]最简配置,直接复制涵盖文件[font color="#DC143C"] 替换所有 [/font] 填入apiUrl的[font color="#DC143C"] api代理 [/font] 即可;
[/scode]
defaultCheckUrl: http://baidu.com/
changeRequest:
- hostRegex: .+\.jd\.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代理
checkUrl: http://jd.com/
apiRetryNumber: 4
checkRetryNumber: 3
lifecycle: -1
maxSize: 1
requestInterval: 3000ms
[scode type="green"]
api代理可以用
熊猫代理(质量稍好价格稍贵):2元1000个IP
星空代理(质量一般价格稍便宜) :每日签到送 100 IP - 10元10000个IP
巨量IP代理(质量差价格便宜) :每日签到送 1000 IP
携趣代理(质量差价格便宜) :每日签到送 1000 IP
品易代理(质量好价格巨贵):注册送1G流量 - 50元1G流量
代理自行选择,购买代理后
进入-订单管理-API提取/生成API-生成API链接-复制下面的API链接填入配置文件的-apiUrl:
[/scode]
[scode type="green"]
api代理获取设置:
读取数量选择: 1
读取格式:txt
分 隔 符:换行(\n)
配置好后重启即可
[/scode]
[scode type="green"]
图例为星空代理设置
[/scode]
[scode type="green"]
图例为熊猫代理设置
[/scode]
[scode type="green"]
图例为携趣代理设置
[/scode]
[scode type="green"]
图例为品易代理设置
[/scode]
[scode type="yellow"]品易代理不会自动更新IP白名单,如果是家宽使用,使用前每次都需要先去提取下APi,提取API后会自动更新本地IP才能使用[/scode]
[scode type="green"]重启后显示如下图例就属于正常配置
[/scode]
青龙面板使用代理池
JavaScript脚本代理
[scode type="green"]
js脚本文档最简使用方式
安装依赖global-agent
青龙依赖管理里面-NodeJs-添加global-agent
依赖
[/scode]
npm i global-agent
[scode type="green"]
然后在你的要使用代理的js脚本顶部中加入以下代码
[/scode]
//js脚本开头加入这段代码
require("global-agent/bootstrap");
global.GLOBAL_AGENT.HTTP_PROXY="http://代理池docker地址:18080";
JavaScript脚本全局代理
[scode type="green"]
只需要在青龙的config.sh文件添加GLOBAL_AGENT_HTTP_PROXY、GLOBAL_AGENT_HTTPS_PROXY环境变量即可
[/scode]
//仅支持http代理
export GLOBAL_AGENT_HTTP_PROXY="http://代理池docker地址:18080"
//支持http和https代理
export GLOBAL_AGENT_HTTPS_PROXY="http://代理池docker地址:18080"
Python脚本代理
proxies = {"http":"http://ip:port","https":"http://代理池docker地址:18080"}
requests.get(url,proxies=proxies)
Python全局脚本代理
[scode type="green"]
只需要在青龙的config.sh文件添加http_proxy、https_proxy环境变量
[/scode]
//仅支持http代理
export GLOBAL_AGENT_HTTP_PROXY="http://代理池docker地址:18080"
//支持http和https代理
export GLOBAL_AGENT_HTTPS_PROXY="http://代理池docker地址:18080"
[scode type="green"]
青龙面板是使用node命令来执行js脚本的,因此我们可以设置node运行-r参数来达到全局代理的目的:
[/scode]
node -r 'global-agent/bootstrap' your-script.js
[scode type="yellow"]目前个人使用的面板版本是2.10.13,该版本面板并不提供设置运行参数的功能(高版本有),只能通过修改源码加入-r参数了。[/scode]
[scode type="green"]
进入青龙面板容器的目录后,打开ql/shell/task.sh,部分源码如下:
修改node的运行命令,即加入-r参数,保存即可:
[/scode]
#!/usr/bin/env bash
## 导入通用变量与函数
dir_shell=/ql/shell
. $dir_shell/share.sh
. $dir_shell/api.sh
## 选择python3还是node
define_program() {
local first_param=$1
if [[ $first_param == *.js ]]; then
which_program="node -r 'global-agent/bootstrap'"
elif [[ $first_param == *.py ]]; then
which_program="python3"
elif [[ $first_param == *.sh ]]; then
which_program="bash"
elif [[ $first_param == *.ts ]]; then
which_program="ts-node-transpile-only"
else
which_program=""
fi
}
[scode type="green"]
运行脚本,出现图例即表示代理成功
[/scode]
TG频道地址:https://t.me/autoProxyPool
[scode type="green"]
如果还有遇到问题,可留言探讨
[/scode]
当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »