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

本文介绍了如何在青龙面板中为Python和JavaScript脚本设置代理,以解决公网服务器上IP限制的问题。对于Python,可以通过设置`requests`模块的代理或者系统环境变量实现。在JavaScript中,可以使用`global-agent`库,通过设置环境变量或在脚本中引入库来配置全局代理。对于青龙面板2.10.13版本,需修改源码添加`node-r`参数以实现全局代理。
摘要由CSDN通过智能技术生成

一.前言

在某些情况下我们需要脚本通过代理来请求,尤其是容器部署在公网服务器上的时候,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脚本配置网络代理,只需要简单的配置环境变量即可。

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错误

 

  • 8
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开发大观园

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值