一.前言
!!!前提需要有代理池,搭建代理池教程看文最后!!!
在某些情况下我们需要脚本通过代理来请求,尤其是容器部署在公网服务器上的时候,IP会出现被限制的情况。本文介绍了为青龙面板脚本网络请求设置代理的方法。
二.正文
青龙面板运行的脚本编程语言主要是Python和JavaScript,下面介绍这两种类型脚本的代理设置。
1.JavaScript设置代理
JavaScript脚本并不像Python那样默认使用系统代理变量,如果需要使用代理进行请求,那只能在代码中设置。
1.1安装global-agent依赖
1.2局部代理
通过以上的介绍,可以知道js脚本要使用代理,只需要配置好环境变量,然后在该脚本开头加入一行代码:
//js脚本开头加入这段代码
require('global-agent/bootstrap');
global.GLOBAL_AGENT.HTTP_PROXY="http://ip:port";1.3全局代理
我们需要在青龙的 config.sh 文件添加GLOBAL_AGENT_HTTP_PROXY、GLOBAL_AGENT_HTTPS_PROXY环境变量,然后设置node运行参数:
//仅支持http代理
export GLOBAL_AGENT_HTTP_PROXY="http://ip:port"
//支持http和https代理
export GLOBAL_AGENT_HTTPS_PROXY="http://ip:port"青龙面板是使用node命令来执行js脚本的,因此我们可以设置node运行-r参数来达到全局代理的目的:
node -r 'global-agent/bootstrap' your-script.js目前个人使用的面板版本是2.10.13,该版本面板并不提供设置运行参数的功能(高版本有),只能通过修改源码加入-r参数了。
进入青龙面板容器的目录后,
docker exec -it 容器名 bash
vi /ql/shell/task.sh修改node的运行命令,即在node后添加 -r ‘global-agent/bootstrap’,保存即可:
#!/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
}2.Python设置代理
2.1局部代理
局部代理主要针对开发者来使用,如果是自己写的脚本,配置代理就是配置requests模块的代理,小白建议直接使用全局代理:
import requests
proxies = {"http":"http://ip:port","https":"http://ip:port"}
requests.get(url,proxies=proxies)2.2全局代理
我们只需要在青龙的 config.sh 文件添加http_proxy、https_proxy环境变量即可:
//仅支持http代理
export http_proxy="http://ip:port"
//支持http和https代理
export https_proxy="http://ip:port"原文地址:https://blog.csdn.net/qq_44863814/article/details/128530031