青龙面板教程(五):代理设置

一.前言

在某些情况下我们需要脚本通过代理来请求,尤其是容器部署在公网服务器上的时候,IP会出现被限制的情况。

注意,IP限制有两种情况,一种是限制IP请求频率,一种是限制IP类型(来源)。对于后者,可以将下面链接在浏览器中打开(更换IP为要测试的IP)。

https://ip.useragentinfo.com/json?ip=223.104.73.26

你将得到下面的内容,请注意 'net'字段,如果为'数据中心',服务器大概率判定该请求来源于云端而加以限制。

{"country": "中国", "short_name": "CN", "province": "广东省", "city": "东莞市", "area": "", "isp": "移动", "net": "城域网", "ip": "223.104.73.26", "code": 200, "desc": "success"}

下面介绍为青龙面板脚本网络请求设置代理的方法。

二.正文

青龙面板运行的脚本编程语言主要是Python和JavaScript,下面介绍这两种类型脚本的代理设置。

1.Python设置代理

1.1局部代理

局部代理主要针对开发者来使用,如果是自己写的脚本,配置代理就是配置requests模块的代理:

proxies = {"http":"http://ip:port","https":"http://ip:port"}

requests.get(url,proxies=proxies)

1.2全局代理

Python会默认使用系统环境变量代理设置,因此我们只需要在面板中添加http_proxyhttps_proxy环境变量即可:

 

2.JavaScript设置代理

JavaScript脚本(.js)并不像Python那样默认使用系统代理变量,如果需要使用代理进行请求,那只能在代码中设置。

2.1global-agent介绍

global-agent支持对js脚本配置网络代理,只需要简单的配置环境变量即可。

扫描二维码关注公众号,回复: 14717927 查看本文章

1.安装global-agent依赖

 2.设置环境变量

有如下两种变量设置,一般选第二种就行,注意两种设置的代理协议均是http

//仅支持http代理
export GLOBAL_AGENT_HTTP_PROXY=http://ip:port
//支持http和https代理
export GLOBAL_AGENT_HTTPS_PROXY=http://ip:port

在青龙面板中设置环境变量即可

3.使用

global-agent的使用也有两种形式,第一种是在js脚本中设置:

//js脚本开头加入这段代码
require('global-agent/bootstrap');

第二种是在命令行中执行脚本时使用node的-r参数把 global-agent导入

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

2.2局部代理

 通过以上的介绍,可以知道js脚本要使用代理,只需要配置好环境变量,然后在该脚本开头加入一行代码:

//js脚本开头加入这段代码
require('global-agent/bootstrap');

但这种方法有很大的问题,一是如果你不是库作者,库文件一更新就要重新加入代码,二是库文件多时逐个加入很麻烦。

2.3全局代理

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

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

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

进入青龙面板容器的目录后,打开ql/shell/task.sh,部分源码如下:

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

修改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
}

注意,大多数代理是'数据中心'代理,如果你是为了解除IP类型限制,请参照前面教程进行测试以选择合适的代理。

如果你设置代理后出现'SSL routines:ssl3_get_record:wrong version number'错误,可参考博客解决SSL错误

猜你喜欢

转载自blog.csdn.net/wsfsp_4/article/details/128366173
今日推荐