博文

电报防广告机器人 telegram antispam bot 新成员入群时需要人机验证 增加一个命令手动触发

图片
背景 今天在查看机器人日志的时候, 发现有4个异常. 异常的原因不完全清楚, 猜测是网络原因, 机器人程序向Telegram服务器要求设置用户权限时 超时了. 这样就带来一个漏洞, 这4个新用户没有被设置禁言, 没有通过人机验证流程. 需求 需要能对特定用户 主动发起 就像是新成员入群时一样的流程 (禁言, 要求在与机器人的私聊中完成人机验证, 再解除禁言) 实践 通过阅读代码, 发现 新成员的验证流程 track_chat_member 函数中, 需要的外部数据就是chat和user. 很适合进行重构. 那么我们再一次地, 面向GPT编程 对 track_chat_member 函数进行重构,  目的是为机器人新增一个命令 /new_member_verify <telegram user> 这样可以主动将某个成员当作好像新成员一样进行验证流程. (禁言, 与机器人私聊, 回答问题, 等等) 结果让我非常满意. 不仅是按我的想法重构了函数, 再生成新的 new_member_verify 函数. 而且, 新函数中也考虑了调用命令的用户的身份(需要是管理员或群主). 只是 GPT 改动了原程序中本不需要改动的部分(比如把注释的文字描述换了一种写法, 把提示性的消息的文字内容换了一种写法, ...). 我并不是全选-复制-粘贴, 而且走读代码, 再手工合并. 因为原程序的代码量就小, 涉及到的修改代码量也很小, 所以合并工作比较轻松. 调试过程中发现了GPT写代码的错误. GPT生成的代码以为 get_chat_member 函数不仅可以传入userid, 还可以传入 username, 甚至还假模假样地写了相关代码.  结果传入username时报错, 再查 官方文档 . 发现只支持传入 userid 我自己再做了一点小小的优化.  机器人在群组中发出的提示消息都在一段时间后自动删除.  在群组中, 忽略 /start 命令 提交 Github https://github.com/crazypeace/tg-join-group-exam-bot ======== 后记 这样的 new_member_verify 命令除了解决一开始的原始问题, 还有一个好处就是 当...

极简一键脚本 搭Hysteria2梯子 UDP 使用BBR策略

图片
本文是整理博客补一篇. 并没有新的一键脚本发布. 一键执行 bash <(curl -L https://github.com/crazypeace/hy2/raw/main/install.sh) 这个一键脚本超级简单。有效语句 6 行(其中 安装Hysteria2 1 行, 安装Hysteria2服务 2 行, 生成自签证书 3 行) + 配置文件28行(其中你需要修改 4 行), 其它都是用来检验小白输入错误参数或者搭建条件不满足的。 你如果不放心开源的脚本,你可以自己执行那 6 行有效语句,再修改配置文件中的 4 行,也能达到一样的效果。 Github  https://github.com/crazypeace/hy2 前提条件 一个没有被墙的VPS Hysteria2底层是UDP直连,如果你的VPS已经被墙,那肯定用不了。出门左转  https://github.com/crazypeace/v2ray_wss 如果你能确定只是UDP有问题, 想试试TCP, 那么可以尝试 Reality https://github.com/crazypeace/xray-vless-reality 具体安装过程说明 bash <(curl -L https://github.com/crazypeace/hy2/raw/main/install.sh) 每个需要输入的地方都有提示 如果是IPv4+IPv6双栈的小鸡, 问你IPv4还是IPv6时 请按你的VPS的公网入口IP的情况填写. 公网IP为IPv4就输入 4 , 公网IP为IPv6就输入 6 . 单栈的小鸡直接按回车, 脚本会自动处理. 其它选项都可以回车使用脚本随机生成的默认值. 本项目配置文件不使用Brutal 我建此项目的目的是为了使用UDP这个通路. 不是为了Brutal策略. 所以在配置文件中使用了 ignoreClientBandwidth: true  如果你需要使用Brutal策略, 请自行修改配置文件, 或使用其它一键脚本. 带参数的使用方法 bash <(curl -L https://github.com/crazypeace/hy2/raw/main/install.sh) <netstack> <port>...

极简一键脚本 搭Xray梯子 VLESS + Reality + TLS 偷 x25519 证书

图片
本文是整理博客补一篇. 并没有新的一键脚本发布. 一键执行 bash <(curl -L https://github.com/crazypeace/xray-vless-reality/raw/main/install.sh) 这个一键脚本超级简单。有效语句 8 行(其中BBR 5 行, 安装Xray 1 行, 生成x25519公私钥 1 行,生成UUID 1 行)+Xray配置文件69行(其中你需要修改 4 行), 其它都是用来检验小白输入错误参数或者搭建条件不满足的。 你如果不放心开源的脚本,你可以自己执行那 8 行有效语句,再修改配置文件中的 4 行,也能达到一样的效果。 GitHub: https://github.com/crazypeace/xray-vless-reality 前提条件 一个没有被墙的VPS Reality底层是TCP直连,如果你的VPS已经被墙,那肯定用不了。出门左转  https://github.com/crazypeace/v2ray_wss 如果你能确定只是TCP有问题, 想试试UDP, 那么可以尝试 Hysteria2  https://github.com/crazypeace/hy2 具体安装过程说明 bash <(curl -L https://github.com/crazypeace/xray-vless-reality/raw/main/install.sh) 每个需要输入的地方都有提示 如果是IPv4+IPv6双栈的小鸡, 问你IPv4还是IPv6时 请按你的VPS的公网入口IP的情况填写. 公网IP为IPv4就输入 4 , 公网IP为IPv6就输入 6 . 单栈的小鸡直接按回车, 脚本会自动处理. 其它选项都可以回车使用脚本随机生成的默认值. 最后一步脚本会提示你安装WARP帮你把小鸡添加为IPv4+IPv6双栈出站的小鸡, 方便后续处理比如 Google人机验证,Youtube不让评论 等问题. 如果你不想装WARP, 此时Ctrl+C中断即可. 偷 x25519 证书 如果你不想使用脚本默认的设置, 想指定"偷"哪个域名的证书.  那么你需要确认该域名 使用了 TLS 1.3 x25519  具体操作为, 在浏览器打开你想"偷"的域名, 然后按F12 ...

关于telegram电报防广告机器人想到的

图片
我不支持把各种外部机器人拉到群里面来, 这样会让群里的信息更容易被抓取. 在给了这些机器人管理权限之后, 很难保证这些机器人会不会作恶. 不知道大家对于 双向聊天机器人livegarm bot 发广告的事件还有没有印象. 对于防广告, 基本上是两个思路. 一个是人机验证. 另一个是对消息内容进行分析是否广告. 人机验证有很多办法.  做题啊, 回答问题啊, 调用 cloudflare 的人机验证啊, 等等... 我选择的方案是回复文本. 一来是方便自定义, 二来是容易提升回答问题的难度. 如果要做到有意义的随机问题, 也是可以的, 比如, 我的博客最新一期博文的标题是什么 人机验证理论上无法解决 使用真人来做题的情况. 就看你的群组的规模与发广告的人的决心之间的博弈了. 对消息内容分析是否广告, 难度要大得多. 而且我觉得这中间涉及到一个信任问题, 所以我没有实施. 现在有不少人在做, 基于消息内容分析的防广告机器人. 有很多也提供免费的开放使用. 但是我有一些担心, 1. 如果这个防广告机器人 收广告商的钱,  "故意" 漏掉广告?  2. 如果这个防广告机器人依赖大家提供信息和反馈(广告消息, 非广告消息).  即使这个防广告机器人本身是中立的.  2a. 如果有人故意将广告消息报告成正常消息, 让防广告机器人学习并形成判断规则之后, 自己再用同样的模式发广告消息, 就可以躲过防御. 2b. 如果有人故意将正常消息报告成虚假的广告消息, 让防广告机器人学习并形成判断规则之后, 会产生误伤, 故意让防广告机器人的表现变差, 使得群主们不敢用这个机器人. 3. 如果这个广告机器人依赖作者或者一个小团体来提供 广告与非广告的数据来训练, 那么随着广告消息的模式每天都可能发生变化, 这个广告判断库也需要随之及时更新. 这是我无法想象的精力投入. 如果是我的话, 我不会维护这样一个项目. 像这种业余时间, 因兴趣而起的, 非商业的项目. 我在考虑设计为  大而完美 还是 小而粗糙,  大一统 / 功能强大  还是  各自独立 / 功能灵活 / 够用就好, 我会选择后者. 我最早实践部署的telegram电报关键字监控机器人, 是 别人的项目 .  该项目设计了机器人自动加入群...

电报防广告机器人 telegram antispam bot 相关功能 清除群组Removed Users列表

图片
有很多广告账号在防广告机器人处理下, 被踢出了群组. 也就是在群组的 Permissions - Removed Users 列表中. 而广告账号因为被举报得很多, 所以实际上比较快就会被telegram封禁, 成为 Deleted Account 本项目的目的就是清理这个列表, 把已经被封禁的账号移除. 再一次地, 用GPT开发. 基于我们的前一个项目, 全代码复制粘贴到chatgpt中, 再附上以下要求 基于上面的代码, 实现以下功能: 在群组的 permissions - removed users 里面, 找出被封禁的账户 Deleted Account, 清除掉. Github https://github.com/crazypeace/tg-clear-removed-users 使用效果 📢 群组: FuckGFW-Newbie 翻墙新手村 ✅ 保留: 7887288719 (Trinity Griselda) - 被踢出状态 ⏭️ 跳过: 8125834274 🗑️ 检测到 Deleted Account: 7623369260,正在清理... ✅ 保留: 6331849477 (bk ) - 被踢出状态 ✅ 保留: 6709325050 (易捷支付 机场特惠 ) - 被踢出状态 🗑️ 检测到 Deleted Account: 8173951376,正在清理... 🗑️ 检测到 Deleted Account: 7499278394,正在清理... 🗑️ 检测到 Deleted Account: 7548224690,正在清理... ...略 ✅ 完成检查,共检查 55 人,清理掉 19 个 Deleted Account。 其中 8125834274 是我设置在脚本中测试保留列表用的. 总结 不管是 Exceptions 还是 Removed users, 都是用 iter_participants 函数查询出来的群成员, 只是用的 filter 不同. 不管是清除 Exceptions 还是 Removed users, 都是设置一个空的 ChatBannedRights await client(EditBannedRequest(entity, p.id, ChatBannedRights(until_d...

怎么把梯子分享给长辈

图片
思路 1. 同时搭建多种协议 2. 创建订阅链接 3. 用办法保证墙内访问订阅链接 4. 选用解压即用的翻墙客户端 5. 配置完成后打压缩包 6. 告诉长辈   a. 解压缩包   b. 运行可执行文件   c. 更新订阅的操作   d. 切换节点的操作

第一次翻墙 如何搭建你的第一个梯子

图片
本文针对  第一次 翻墙 的情况, 你除了对墙外事物的向往, 手中没有任何资源, 所有的操作需要从墙内出发. 如何自己搭建第一个梯子呢?

The Hot3 in Last 7 Days

极简一键脚本 搭NaiveProxy梯子 自定义端口 与Caddy V2前置的VLESS/Vmess V2Ray共存 可开CDN

搭 Docker版 Sub-Store 带 http-meta 实现 集合订阅 测延迟 排序 筛选 生成新订阅 定时任务上传Gist