搭建自有流媒体解锁检测机器人

本文最后更新于:2023年11月21日 下午

搭建自有流媒体解锁检测机器人

变量获取

User_id

随便转发一条你自己发的消息给这个bot

https://t.me/getUserID_Robot

user id

实测,直接发消息不行,只能转发。

API_id & API_hash

登录Telegram应用管理页面

https://my.telegram.org/

填写手机号,记得加区号,如+86,之后Telegram客户端会收到验证码(注意不是发短信)。

login

登录后,点击API development tools并填写表格。其中App titleShort name可以随意填写,Platform选择你的开发平台,Description是对你的应用的简短描述。

dev tools

提交表格后,你将获得一个App api_idApp api_hash。这就是你的 API ID API Hash,复制备用。

ID & hash

bot_token

https://t.me/BotFather

BotFather创建一个机器人,获得该机器人的bot_token,如:bot_token = "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"

newbot

bot_token

后端-FullTClash

后端依旧基于Docker搭建

运行以下代码:

1
2
3
4
5
6
docker run -d \
-e ADMINID={{user_id}} \
-e APIID={{api_id}} \
-e APIHASH={{api_hash}} \
-e BOTTOKEN={{bot_token}} \
weleven11/fulltclash

可选参数:

1
2
3
4
5
6
7
# CORE:测速使用的CPU核心数。可选,默认1
# PROXY:TG代理。可选,socks5协议,格式为 host:端口:用户名:密码 ,用户名密码可不填。
# THREAD:测速使用线程数。可选,默认4

-e CORE=4 \
-e THREAD=1 \
-e PROXY=127.0.0.1:7891 \

或者使用配置文件映射:

1
2
3
4
5
# `/path/to/config.yaml` 替换为你自己的配置文件路径,配置文件内容见后文。

docker run -d \
-v /path/to/config.yaml:/app/resources/config.yaml \
weleven11/fulltclash

目前机器人已经搭建完成了,去瞧瞧吧。

bot

config.yaml

若选择使用配置文件映射,请修改并上传此文件到相应位置,具体内容请参见官方文档[1]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# 注意,yaml配置文件对缩进敏感,请不要强迫症删掉#号之间的空格。
admin:
- 12345678 #管理员,此处写你的id或用户名,必须配置该项,否则程序会自动退出
bot:
api_id: 123456 # Telegram的api_id
api_hash: ABCDEFG # Telegram的api_hash
bot_token: 123456:ABCDEFG #bot的token
# ====================以上为必填项,否则无法启动成功========================
# proxy: host:端口:用户名:密码 #socks5代理,用户名和密码为可选配置,已和下面的proxy单独分离,请勿混用
# strictmode: false # 严格模式,代表测试的时侯,bot内联按钮只有发起测试的主人才能按,否则所有用户用户权限都可以按。默认false,目前未适配,敬请期待。
# scripttext: "⏳联通性测试进行中..." # 解锁脚本测试进度条自定义文本
# analyzetext: "⏳节点测试拓扑进行中..." # 拓扑测试进度条自定义文本
# speedtext: "⏳速度测试进行中..." # 速度测试进度条自定义文本
# bar: "=" #进度条自定义文本
# bleft: "[" #左括号自定义文本
# bright: "]" #右括号自定义文本
# bspace: " " #空格自定义文本,默认为2个
# command: ['mycommand1', 'mycommand2'] #自定义指令,用于适配权限回调。高级用法,不会无需配置。
#以下是fulltclash的buildtoken,可以用默认的,但是安全性得不到保障,具体原因详见文档
#buildtoken: c7004ded9db897e538405c67e50e0ef0c3dbad717e67a92d02f6ebcfd1022a5ad1d2c4419541f538ff623051759ec000d2f426e03f9709a6608570c5b9141a6b
#clash:
# path: './bin/fulltclash-linux-amd64' # 代理客户端的路径,默认为 ./bin/ 下。不会弄不要动这里,用默认的即可。本仓库默认仅提供win-amd64与linux-amd64两种(意味着如果为这两种架构,这里不用改。),其他架构需要自行编译。
# allow-caching: false #是否缓存测试过程产生的订阅,若否,则测试完成后会自动删除测试订阅,以免造成空间浪费。(此配置暂不生效)
# core: 4 # 核心数,数量越多测试速度越快,但代价是内存会大量占用(每个核心大概10M),自己的机子多少内存自己平衡。默认值为1.
# auto-start: false # bot启动时顺带启动,若为false则需要在 bot上输入/clash start 手动启动,默认false
# startup: 1124 #起始端口。表示从此端口开始往下数占用数量,比如核心数为4,就会占用[1124,1126,1128,1130]共4个端口,遇到端口占用时可配置此项。推荐10000以上作为初始端口
# branch: origin #clash内核上游分支,仅有两个有效值: [origin, meta], meta分支支持更多协议,比如vless、tuic等,但是使用上较为不可控,默认为origin原生内核。
#proxy: "host:端口" # http配置代理(非socks5),括号内可选用于下载获取订阅链接,订阅链接国内打不开可尝试开启(可选配置),本机提供的代理可以这样填: '127.0.0.1:7890'
#如果要http代理要验证,配置格式为: proxy: "用户名:密码@host:端口" 比如: user1:[email protected]:7890
#geoip-api: "ip-api.com" # GEOIP 测试api,取二级域名,目前支持 ip-api.com ip.sb ipleak.net ipdata.co ipapi.co 五种,其中 ipdata 需要配置下面的geoip-key
#geoip-key: xxxxxxx #ipdata 的 apikey,如果使用其他api则无需填写
#subconvertor: #订阅转换(此配置主要开发者已无心维护,能用但不稳定)
# enable: true #是否启用
# host: '127.0.0.1:25500' #域名或者ip加端口
# remoteconfig: "https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/config/ACL4SSR_Online.ini" #远程配置
#pingurl: http://www.gstatic.com/generate_204 #自定义延迟测试URL
#netflixurl: "https://www.netflix.com/title/80113701" #自定义奈飞非自制剧检测网页,注意在更换此链接时请确保是非自制的链接。
#speedfile: #自定义测速文件,可以添加多个诸如以下格式或者[https://1.com, https://2.com]
#- https://dl.google.com/dl/android/studio/install/3.4.1.0/android-studio-ide-183.5522156-windows.exe
#- https://dl.google.com/dl/android/studio/install/3.4.1.0/android-studio-ide-183.5522156-windows.exe
#speednodes: 300 # 测速节点数量限制,超过将不会进行测速
#speedthread: 4 #测速线程
#nospeed: true #禁用测速,开启后将无法测速。
#speed_end_colors_switch: false #速度测试渐变色模式,默认关闭
#end_colors_switch: false #联通性测试渐变色模式,默认关闭
#ipstack: true #开启ipv4,ipv6双栈检测。默认关闭(false),开启后可以检测节点是否支持ipv4和ipv6,代价是检测时间会延长。
#localip: false #本地ip数据库(MaxMind格式) ,请将asn数据库与city数据库放入"/resources/databases"文件夹
#dasn: "GeoLite2-ASN.mmdb" #ASN数据库名称,用于获取AS编号
#dorg: "GeoLite2-ASN.mmdb" #org数据库mingc,用于获取组织名称
#dcity: "GeoLite2-City.mmdb" #city数据库名称,用于获取地区代码
#speedconfig: #测速相关配置
# interval: 10 #每个节点的测速时长
#entrance: #入口显示配置
# switch: "ip" #设置为ip将显示入口ip段,设置为cluster将显示簇,默认设置为ip,PS:这里的簇为入口域名绑定的ip地址数量
#user: 12345678 #用户列表,/grant 命令授权的目标会保存在这。推荐使用bot进行授权,而非手动配置。(可选配置)
#emoji: #emoji可选配置
# enable: true #是否启用,默认启用。若否,则在输出图片时emoji将无法正常显示。关闭该项可解决部分图片生成失败的问题。(可选配置)
# emoji-source: 'TwemojiLocalSource' #emoji表情源。默认值为TwemojiLocalSource。分为web源与本地源。可配置的值参考 ./libs/emoji_custom/__all__ 里面的成员变量。目前本地源仅支持: TwemojiLocalSource
#font: './resources/苹方黑体-准-简.ttf' #自定义字体,这里填字体的路径
#slaveconfig:
# default-slave: # 默认后端配置。
# comment: "本地测试后端" # 默认测试后端的备注。
# username: "local" # 默认测试后端的ID,此项请勿修改,会影响本地后端的运行。
#userconfig: #用户权限组相关配置
# rule: #测试时的默认规则,3.6.0加入
# "规则名":
# enable: true #是否启用激活该规则
# slaveid: local #slaveid的有效值参照配置里的 slaveconfig下的所有键。
# script: ["Netflix", "Youtube", "Disney+", "维基百科"] #script的有效值参照连通性测试绘图结果中显示的名称(大小写敏感)。
# sort: "HTTP升序"
# 查看你的机器人的所有可用测试项的python变量:
# from utils.cleaner import addon
# print(addon.global_test_item)

#---------------------------- 以下为绘图相关配置 --------------------------------#

#image:
# title: 'FullTclash' # 绘图时的标题
# 以下是颜色配置,其中speed是速度相关,name为颜色名字,value为颜色值,目前仅支持十六进制,label是颜色对应的速度区间(单位MB),不用动,只需改value值,其他项是为了做区分。
# color:
# speed: # 刚刚好有七个颜色,多一个少一个可能会有奇怪的效果。注意缩进。如果不想有太多颜色,可以两个颜色取同样的颜色值。
# - { label: 0, name: '云水', value: '#B4C3D0', alpha: 255, end_color: '#B4C3D0' }
# - { label: 1, name: '晴山', value: '#91AEC4', alpha: 255, end_color: '#91AEC4' }
# - { label: 5, name: '秋波', value: '#8BB8CB', alpha: 255, end_color: '#8BB8CB' }
# - { label: 10, name: '天韵', value: '#5796B3', alpha: 255, end_color: '#5796B3' }
# - { label: 20, name: '鸢尾', value: '#1988AE', alpha: 255, end_color: '#1988AE' }
# - { label: 60, name: '甸子', value: '#238BBC', alpha: 255, end_color: '#238BBC' }
# - { label: 100, name: '景泰', value: '#2A73AC', alpha: 255, end_color: '#2A73AC' }
# delay: #延迟单位: ms
# - { label: 1, name: '云水', value: '#B4C3D0', alpha: 255, end_color: '#B4C3D0' }
# - { label: 100, name: '晴山', value: '#91AEC4', alpha: 255, end_color: '#91AEC4' }
# - { label: 200, name: '秋波', value: '#8BB8CB', alpha: 255, end_color: '#8BB8CB' }
# - { label: 300, name: '天韵', value: '#5796B3', alpha: 255, end_color: '#5796B3' }
# - { label: 500, name: '鸢尾', value: '#1988AE', alpha: 255, end_color: '#1988AE' }
# - { label: 1000, name: '甸子', value: '#238BBC', alpha: 255, end_color: '#238BBC' }
# - { label: 2000, name: '景泰', value: '#2A73AC', alpha: 255, end_color: '#2A73AC' }
# - { label: 99999, name: '景泰', value: '#8d8b8e', alpha: 255 } #第八个为超时,label无用
# out_color: #topo图用于分辨出口的颜色
# - { name: '云水', value: '#B4C3D0', alpha: 255, end_color: '#B4C3D0' }
# - { name: '晴山', value: '#91AEC4', alpha: 255, end_color: '#91AEC4' }
# - { name: '秋波', value: '#8BB8CB', alpha: 255, end_color: '#8BB8CB' }
# - { name: '天韵', value: '#5796B3', alpha: 255, end_color: '#5796B3' }
# - { name: '鸢尾', value: '#1988AE', alpha: 255, end_color: '#1988AE' }
# - { name: '甸子', value: '#238BBC', alpha: 255, end_color: '#238BBC' }
# - { name: '景泰', value: '#2A73AC', alpha: 255, end_color: '#2A73AC' }
# "yes": '#bee47e' #解锁色块的颜色,注意不要去掉双引号
# "yesalpha": 255 #解锁颜色块透明度
# "yesend": '#bee47e' #解锁色块的渐变结束颜色,注意不要去掉双引号
# "no": '#ee6b73' #失败色块的颜色,注意不要去掉双引号
# "noalpha": 255 #失败颜色块透明度
# "noend": '#ee6b73' #失败色块的渐变结束颜色,注意不要去掉双引号
# na: '#8d8b8e' #N/A色块的颜色
# naalpha: 255 #N/A颜色块透明度
# naend: '#8d8b8e' #N/A色块的渐变结束颜色
# wait: '#dcc7e1' #待解锁色块的颜色
# waitalpha: 255 #待解锁色块的颜色
# waitend: '#dcc7e1' #待解锁色块的渐变结束颜色
# iprisk: #IP风险色块颜色,名称后面加alpha为颜色块透明度属性
# low: '#ffffff'
# lowalpha: 255
# lowend: '#ffffff'
# medium: '#ffffff'
# mediumalpha: 255
# mediumend: '#ffffff'
# high: '#ffffff'
# highalpha: 255
# hightend: '#ffffff'
# veryhigh: '#ffffff'
# veryhighalpha: 255
# veryhighend: '#ffffff'
# warn: '#fcc43c' #警告色块,一般为黄色或橙色
# warnalpha: 255 #警告颜色块透明度
# warnend: '#fcc43c' #警告渐变结束色块
# watermark: #水印
# enable: true #是否启用
# text: '只是一个水印' #水印文本
# color: '#000000' #颜色值
# alpha: 16 # 透明度, 可用范围(0-255)
# font_size: 64 #字体大小
# angle: -16.0 #旋转角度
# row_spacing: 0 #行距
# start_y: 0 #纵坐标起始位置
# background: #背景颜色
# backgrounds: '#ffffff' #联通性测试背景色
# ins: '#ffffff' #拓扑测试入口topo背景色
# outs: '#ffffff' #拓扑测试出口topo背景色
# speedtest: '#ffffff' #速度测试
# speedtitle: '#EAEAEA' #速度测试标题栏颜色
# testtitle: '#EAEAEA' #联通性测试标题栏颜色
# topotitle: '#EAEAEA' #拓扑测试标题栏颜色

Reference


搭建自有流媒体解锁检测机器人
https://www.0co.dev/media-unlock-bot/
作者
Konrad Gerrens
发布于
2023年11月10日
许可协议