青龙面板教程(四):线报监控系统开发
一.前言
青龙面板挂活动,那就少不了线报,尤其是JD系活动的环境变量。通常线报都是在TG上发布的,由于网络限制的原因,获取也很不方便。市面上也有TG线报系统,不过大多都是付费的,我们完全可以自己开发一个定制的线报系统,监控活动和自动更新环境变量执行任务,解放双手,无需时刻守护。
二.原理介绍
核心是TDLib,TG官方提供了TG数据库库(或简称为 TDLib),这是一种供第三方开发人员使用的工具,可以轻松构建快速、安全且功能丰富的 TG应用程序。
TDLib 负责所有网络实现细节、加密和本地数据存储,以便开发人员可以将更多时间用于设计响应式界面和精美动画。
TDLib 支持所有 TG功能,并使在任何平台上开发 TG应用程序变得轻而易举。它可以在 Android、iOS、Windows、macOS、Linux 和几乎任何其他系统上使用。该库是开源的,几乎与任何编程语言兼容。
简而言之,就是利用了TDLib开发一个TG客户端来接收消息,然后提取我们需要的内容。
三.系统开发
TDLib支持的编程语言很多,为了开发和部署方便,这里选择了Python语言,同时官方也提供了Python+TDLib环境的Docker容器,我们只需要安装好容器,编写我们业务逻辑代码就行。
1.安装环境
宝塔面板——终端,拉取官方python-telegram镜像并建立容器,容器默认命名为py-tg,最大内存为512MB,不映射端口和目录,无特殊要求,输入如下命令即可:
docker run -dit --name py-tg -m 512MB akhmetov/python-telegram:latest
为了方便操作,我们采用宝塔面板自带的Docker模块进行接下来的操作,宝塔面板——Docker,可以看到刚创建的py-tg容器
至此,环境已搭建完毕。
2.业务代码
利用python-telegram的接口,我们可以实现TG客户端接收消息。在这里只实现自动更新环境变量的功能。
(1)在宝塔面板——Docker中打开py-tg容器的目录,可看到目录结构如下:
点击进入app目录,里面有个examples文件夹,这是官方提供的例子我们不管,接下来在app目录下创建三个文件:ql.py、config.json和main.py
(2)先编写青龙面板的环境变量提取和导入的逻辑代码,利用到了青龙面板的OpenApi,新建文件,命名为ql.py,代码如下:
import re
import requests
from json import dumps as jsonDumpsclass QL:def __init__(self, address: str, id: str, secret: str) -> None:"""初始化"""self.address = addressself.id = idself.secret = secretself.valid = Trueself.login()def handleMessage(self, update: dict) -> None:"""处理消息"""try:text = update["message"]["content"]["text"]["text"]except:returnenvs = re.findall("export \w+=\"[^\"]+\"", text)if(len(envs) < 1):returnself.log(f"监测到{len(envs)}个环境变量")targets = []for env in envs:name = env.split(" ", 1)[1].split("=", 1)[0]value = env.split(" ", 1)[1].split("=", 1)[1][1:-1]targets.append({"name": name, "value": value})self.addEnvs(targets)def log(self, content: str) -> None:"""日志 这里只简单打印"""print(content)def login(self) -> None:"""登录"""url = f"{self.address}/open/auth/token?client_id={self.id}&client_secret={self.secret}"try:rjson = requests.get(url).json()if(rjson['code'] == 200):self.auth = f"{rjson['data']['token_type']} {rjson['data']['token']}"else:self.log(f"登录失败:{rjson['message']}")except Exception as e:self.valid = Falseself.log(f"登录失败:{str(e)}")def addEnvs(self, envs: list) -> bool:"""新建环境变量"""url = f"{self.address}/open/envs"headers = {"Authorization": self.auth,"content-type": "application/json"}try:rjson = requests.post(url, headers=headers,data=jsonDumps(envs)).json()if(rjson['code'] == 200):self.log(f"新建环境变量成功:{len(envs)}")return Trueelse:self.log(f"新建环境变量失败:{rjson['message']}")return Falseexcept Exception as e:self.log(f"新建环境变量失败:{str(e)}")return False
(3)编写配置文件,命名为config.json,代码如下:
{"api_id": "xxxx",//my.telegram.org申请得到"api_hash": "xxxx",//my.telegram.org申请得到"phone": "xxxxx",//TG手机号"database_encryption_key": "changeme1234",//默认即可"proxy_type": {"@type": "proxyTypeSocks5"//代理类型,默认socks5},"proxy_port": "7891",//代理端口"proxy_server": "127.0.0.1",//代理地址"ql_address": "http://127.0.0.1:5700",//青龙面板地址"ql_id": "C9Wi0E6N9-wS",//青龙面板应用Client_ID"ql_secret": "id-ZWzSD_dqr43m6bHF_Y9FN"//青龙面板应用Client_Secret
}
(4)TG客户端,实现消息的接收,文件命名为main.py,代码如下:
from telegram.client import Telegram
from json import loads as jsonLoads
from ql import QLdef getConfig():"""读取配置文件"""file = open("config.json", mode="r")return jsonLoads(file.read())if __name__ == "__main__":config = getConfig()tg = Telegram(api_id=config["api_id"],api_hash=config["api_hash"],phone=config["phone"],database_encryption_key=config["database_encryption_key"],proxy_server=config["proxy_server"],proxy_port=config["proxy_port"],proxy_type=config["proxy_type"],)ql = QL(config["ql_address"], config["ql_id"], config["ql_secret"])tg.login()tg.add_message_handler(ql.handleMessage)tg.idle()
至此系统开发已结束。
四.系统运行
宝塔面板——Docker,进入py-tg容器的终端,进入/app目录:
安装python的requests模块,执行命令:
pip3 install requests
运行服务:
python3 main.py
首次运行需要验证身份,在TG客户端上会收到一个验证码,查看并输入即可完成
当有新消息到达时,会自动识别出环境变量并导入青龙面板:
这样启动关闭终端系统也会关闭,先Ctrl+c关闭系统,执行以下命令:
python3 main.py &
这样可以关闭终端系统也能在后台运行了。
五.结语
以上只是个小例子,TDLib支持的编程语言很多,可以自己去官方网站查看相关文档,或者在上面代码的基础上增加更多功能。
青龙面板教程(四):线报监控系统开发相关推荐
- 四信塔式起重机监控系统应用方案
方案背景 塔式起重机是当前工业建设进行起重运输作业的重要设备,其设备性能.参数.技术指标的可靠性都关系起重机设备的危险,塔式起重机安全事故关系国计民生.危害面广,给国家财产和生命安全带来严重损失. 目 ...
- 智能农业大棚监控系统开发
近年来,我国农业温室大棚得到了迅速发展,但这些大棚的管理主要是由人工来完成的,管理的技术含量很低.随着温室种植面积的迅速增加,单纯依靠人工管理已经不能满足高效农业生产的需求.随着物联网技术的进一步发展 ...
- Python自动化开发基础 分布式监控系统开发实战 day8-李杰-专题视频课程
Python自动化开发基础 分布式监控系统开发实战 day8-10994人已学习 课程介绍 从0基础开始讲解Python语法.流程控制.函数式编程.面向对象开发等重要的Python开发 ...
- 青龙面板教程系列-青龙面板Spy监控教程 自动更新环境变量
Spy亮点介绍 Faker库已添加开卡等活动通用监控脚本. 无需手动执行,解放双手. 自动监控执行开卡,加购等放水活动,无需时刻守护. Spy全天候监控,自动更新环境变量执行任务. 注意事项 本教程基 ...
- OpenWRT 软路由部署青龙面板教程
前言 在服务器上部署青龙面板有非常多弊端: 数据中心 IP 相较于家宽 IP 更容易黑号,而且服务器所在地往往不和自己在同一个城市,异地登录可能会被风控 服务器 IP 固定,一但被拉黑 IP 无法或者 ...
- 青龙面板教程(五):代理设置
一.前言 在某些情况下我们需要脚本通过代理来请求,尤其是容器部署在公网服务器上的时候,IP会出现被限制的情况. 注意,IP限制有两种情况,一种是限制IP请求频率,一种是限制IP类型(来源).对于后者, ...
- 5.15日 搭建青龙面板教程——狗东跑跑跑~
搭个青龙面板,不是有手就行嘛. 每次很无奈,我发现我这文章 吸引的全是小白粉,被迫每次 写文章,都要详细再详细! 直接上教程吧,懒得磨叽了~ 早晨刚在公众号写了一遍,这边就直接搬运吧 1. 服务器购买 ...
- 本地安装青龙面板教程【详细版】2022-5.5
目录 前言 1️⃣安装虚拟机VMware15.5 2️⃣安装Linux系统 3️⃣进入Linux系统 4️⃣打开终端 5️⃣获取ROOT权限 6️⃣Centos安装脚本 7️⃣安装完成,登录宝塔面板 ...
- 艺龙十万级服务器监控系统开发的架构和心得
一.监控系统架构 经历了许多公司,监控系统大概都是从无到有,该经历的也都经历了.所谓监控系统,大概的架构如下: ◆在服务器布置一个Agent,它负责采集数据: ◆由网上转发到一个分布式管道再转接,就 ...
最新文章
- 使用POI将doc文件转换为html
- 阿里云叔同:以容器为代表的云原生技术,已经成为释放云价值的最短路径
- Navicat——MySQL之delimiter默认设置问题
- matlab 传输速率,处理速率转换
- MATLAB Simulink
- MathWorks 中国
- VS2012如何显示行号
- 公务员考试中公共基础知识计算机,2012山东省公务员考试公共基础知识最新考试试题库(完整版)...
- 还在死磕 Ajax?那可就 out 了!
- 图卷积网络(Graph Convolutional Network)
- grafna监控Java接口_性能测试之 JVM 的监控 Grafana
- Git——Gitlab服务单机构建
- 抽象与具体,形而上者谓之道,形而下者谓之器
- 电脑桌面只显示计算机不显示文件夹,如何解决电脑桌面不显示拷贝文件的问题?...
- Win10激活(家庭版升级到专业版)带你5分钟解决
- 学生信息管理系统(面向对象版本)V3.0
- Visual Studio2019新手C++教程(一)
- Field ‘xxx‘ doesn‘t have a default value
- VB中使用DirectX库的简明教程(3)
- Python tkinter库
- 如何通过IE浏览器下载视频?
- 如何进入VMware Fusion虚拟机BIOS