感谢M佬提供

下面是我自己搭建的流程使用给大家参考下,自己在用的部分功能,内容收集与互联网

代理池搭建


使用的是docker安装,没装docker的自行安装docker
进入ssh终端,运行以下代码进行安装:

/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

简单部署

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 命令查看容器日志

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

配置文件表,可自定义修改自己需要的参数, 替换所有 即可; +.xxx.com 里面的xxx改成需要进行代理的域名比如jd ,如果提示配置错误,删除注释的文字即可。

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

最简配置,直接复制涵盖文件 替换所有 填入apiUrl的 api代理 即可;

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


api代理可以用

熊猫代理(质量稍好价格稍贵):2元1000个IP

熊猫代理注册

星空代理(质量一般价格稍便宜) :每日签到送 100 IP - 10元10000个IP

星空代理每日自动签到github项目

星空代理注册

巨量IP代理(质量差价格便宜) :每日签到送 1000 IP

巨量巨量IP代理注册

携趣代理(质量差价格便宜) :每日签到送 1000 IP

携趣代理

品易代理(质量好价格巨贵):注册送1G流量 - 50元1G流量

品易代理

代理自行选择,购买代理后

进入-订单管理-API提取/生成API-生成API链接-复制下面的API链接填入配置文件的-apiUrl:


api代理获取设置:
读取数量选择: 1
读取格式:txt
分 隔 符:换行(\n)

配置好后重启即可


图例为星空代理设置


图例为熊猫代理设置

图例为携趣代理设置


图例为品易代理设置

品易代理不会自动更新IP白名单,如果是家宽使用,使用前每次都需要先去提取下APi,提取API后会自动更新本地IP才能使用

重启后显示如下图例就属于正常配置

青龙面板使用代理池

JavaScript脚本代理


js脚本文档最简使用方式
安装依赖global-agent
青龙依赖管理里面-NodeJs-添加
global-agent 依赖

npm i global-agent


然后在你的要使用代理的js脚本顶部中加入以下代码

//js脚本开头加入这段代码
require("global-agent/bootstrap");
global.GLOBAL_AGENT.HTTP_PROXY="http://代理池docker地址:18080";

JavaScript脚本全局代理


只需要在青龙的config.sh文件添加GLOBAL_AGENT_HTTP_PROXY、GLOBAL_AGENT_HTTPS_PROXY环境变量即可

//仅支持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全局脚本代理


只需要在青龙的config.sh文件添加http_proxy、https_proxy环境变量

//仅支持http代理
export GLOBAL_AGENT_HTTP_PROXY="http://代理池docker地址:18080"
//支持http和https代理
export GLOBAL_AGENT_HTTPS_PROXY="http://代理池docker地址:18080"


青龙面板是使用node命令来执行js脚本的,因此我们可以设置node运行-r参数来达到全局代理的目的:

node -r 'global-agent/bootstrap' your-script.js

目前个人使用的面板版本是2.10.13,该版本面板并不提供设置运行参数的功能(高版本有),只能通过修改源码加入-r参数了。


进入青龙面板容器的目录后,打开ql/shell/task.sh,部分源码如下:
修改node的运行命令,即加入-r参数,保存即可:

#!/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
}


运行脚本,出现图例即表示代理成功

TG频道地址:https://t.me/autoProxyPool


如果还有遇到问题,可留言探讨

最后修改:2023 年 01 月 08 日
如果觉得我的文章对你有用,别忘了点赞或赞赏,让我知道路上有你陪伴。