一.前言

在某些情况下我们需要脚本通过代理来请求,尤其是容器部署在公网服务器上的时候,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=$1if [[ $first_param == *.js ]]; thenwhich_program="node"elif [[ $first_param == *.py ]]; thenwhich_program="python3"elif [[ $first_param == *.sh ]]; thenwhich_program="bash"elif [[ $first_param == *.ts ]]; thenwhich_program="ts-node-transpile-only"elsewhich_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=$1if [[ $first_param == *.js ]]; thenwhich_program="node -r global-agent/bootstrap"elif [[ $first_param == *.py ]]; thenwhich_program="python3"elif [[ $first_param == *.sh ]]; thenwhich_program="bash"elif [[ $first_param == *.ts ]]; thenwhich_program="ts-node-transpile-only"elsewhich_program=""fi
}

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

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

青龙面板教程(五):代理设置相关推荐

  1. OpenWRT 软路由部署青龙面板教程

    前言 在服务器上部署青龙面板有非常多弊端: 数据中心 IP 相较于家宽 IP 更容易黑号,而且服务器所在地往往不和自己在同一个城市,异地登录可能会被风控 服务器 IP 固定,一但被拉黑 IP 无法或者 ...

  2. 5.15日 搭建青龙面板教程——狗东跑跑跑~

    搭个青龙面板,不是有手就行嘛. 每次很无奈,我发现我这文章 吸引的全是小白粉,被迫每次 写文章,都要详细再详细! 直接上教程吧,懒得磨叽了~ 早晨刚在公众号写了一遍,这边就直接搬运吧 1. 服务器购买 ...

  3. 青龙面板教程(四):线报监控系统开发

    一.前言 青龙面板挂活动,那就少不了线报,尤其是JD系活动的环境变量.通常线报都是在TG上发布的,由于网络限制的原因,获取也很不方便.市面上也有TG线报系统,不过大多都是付费的,我们完全可以自己开发一 ...

  4. 青龙面板教程系列-青龙面板Spy监控教程 自动更新环境变量

    Spy亮点介绍 Faker库已添加开卡等活动通用监控脚本. 无需手动执行,解放双手. 自动监控执行开卡,加购等放水活动,无需时刻守护. Spy全天候监控,自动更新环境变量执行任务. 注意事项 本教程基 ...

  5. 本地安装青龙面板教程【详细版】2022-5.5

    目录 前言 1️⃣安装虚拟机VMware15.5 2️⃣安装Linux系统 3️⃣进入Linux系统 4️⃣打开终端 5️⃣获取ROOT权限 6️⃣Centos安装脚本 7️⃣安装完成,登录宝塔面板 ...

  6. 青龙面板JDC企业微信设置消息推送教程

    JDC设置企业微信推送教程 感谢订阅VIP教程,码字开始. 注册企业微信 获取ID 百度企业微信官网进行免费注册,点击我的企业 创建应用 依次进入应用管理-应用-自建-创建应用,自己创建完成后获取se ...

  7. Nolan最新版本2.4 Windows和docker安装升级教程, 登陆修复.排除个别需要实名的账号,nvjdc对接青龙面板教程

    首先,展示我自己搭建修改的,我带了优化的:地址:http://jd.51kuaigouwu.com 好了 青龙搭建,服务器什么的自己看我其他文章. 没有基础或者不会都看教程都会,如果不会联系搭建. 提 ...

  8. Windows搭建青龙面板教程

    测试电脑为w10系统 首先我们先去官网下载docker桌面视窗 Docker Hub (https://hub.docker.com/这里是地址,注册并登录. 下载后打开可能会提示缺少wsl文件 下载 ...

  9. 【青龙面板教程】青龙日志分析汇总脚本

    青龙日志分析 今天发现keven1024大佬发布的一个好东西,可以自动分析你的青龙脚本运行状态,以及依赖缺失问题,并且还可以自动补全脚本!! 目前已收录到Faker仓库内. 功能 展示n天内所有的错误 ...

最新文章

  1. 移动应用开发—— 如何搭建开发大型的应用架构?
  2. python图像变形
  3. 从《钢铁侠2》看软件测试的重要性
  4. php根据不同的条件替换一段html代码中的不同的img标签
  5. 影响架构决策的非功能性需求
  6. 前端div里的内容下沉_自学Web前端的五个不同阶段,从浅入深
  7. 前端每日实战:116# 视频演示如何用 CSS 和原生 JS 开发一个监控网络连接状态的页面...
  8. mysql中字典值怎么添加_插入Python字典中的值,包括MySQL的键
  9. cocoscreator editbox 只允许数字_用Cocos做一个数字调节框
  10. 拖拽批量上传图片如何保证 顺序_图片压缩神器和图片分割工具,美工设计和运营终于得救了...
  11. Java网络编程之NIO编程(待补充)
  12. sqlserver主键自增
  13. web python template injection_XCTF Web_python_template_injection
  14. Acwing - 最长公共子序列
  15. 科技爱好者周刊:第 98 期
  16. 滑模鲁棒控制(hm-3)
  17. 正则表达式匹配以xx开头以xx结尾
  18. [架构之美]一款APP从想法-开发-上线-产品的全过程
  19. 求x的n次方编程_C语言 用递归方法求X的n次方
  20. 瑞星微RK3288开发板 (ARM Cortex-A17架构)

热门文章

  1. 在计算机网络中 带宽是什么,在计算机网络中,“带宽”用____表示。
  2. Groovy~Groovy介绍
  3. 谷歌浏览器87版本 iframe_谷歌Chrome的“混合内容”更新将会影响电商网站,自建站卖家如何应对?...
  4. hdu1107+武林+模拟
  5. flex effect
  6. 安装SQL Server 2017遇到“以前的某个安装需要重新引导计算机以便使更改生效”的问题
  7. 面试了一位 46 岁的程序员,思绪万千,最后结局竟让我大惊失色!
  8. 社保的计算及缴纳地及个人部分和公司缴纳部分的一些疑问
  9. E. Exits in Excess
  10. /oa/web应用程序中的服务器错误修复,如何处理OA系统在线阅读或编辑文档时weboffice控件提示“文件存取错误”的问题?...