博文

Cloudflare worker 反代 blogspot 实现免翻墙域名镜像站 绑定KV屏蔽path列表

图片
灵感 我有了一个想法, 想提高我这个博客在GFW墙内搜索引擎的曝光. 思路 1. 需要有一个没有被墙的域名, 用来访问我的博客 2. 我不想使用blogspot的自定义域名方案.  一是, 我原来的域名已经在墙外的搜索引擎中存在多年. 二是, 如果改为使用自己的域名, 我就需要维护域名的解析. 如果遇到攻击, 域名解析受影响, 我需要额外做不少工作.  3. 所以我需要一个没有被墙的域名作为镜像站 4. 作为墙内可以直接访问的域名, 显示的内容也应该是不涉及翻墙的. 所以需要屏蔽掉直接描述翻墙节点搭建, 翻墙工具使用的博文. 具体细节 1. Cloudflare worker反代是好多年的技术了. 可以做到显示 html 的效果. 2. 图片 来自 https://blogger.googleusercontent.com 可以用 uniproxy 的技术. 在第1步获得html之后, 把里面所有访问 https://blogger.googleusercontent.com 的链接前面加上 uniproxy  3. CSS 对于 blogspot 来说, 是内嵌在html中的. 4. js 我不想管了, 在我的blogspot中, 对页面的阅读影响不大.  5. 跳转到其它页面的链接 在第1步获得html之后, 查找替换, 把blogspot域名替换为免翻墙域名. 6. worker绑定一个KV, 里面保存我不希望在墙内显示的链接. 当访问这些链接时, 显示一个固定的页面. 落实 反代 worker 在google中搜索"cloudflare worker 反代 代码", 没想到直接就给了AI结果 因为本项目体量不大, 而现在的各个GPT上下文都足够大, 哪怕我的M$ copilot使用受限了, 我也可以直接把全量代码复制粘贴, 再附上我的功能描述, 丢给gemini啊 chatgpt啊 去生成代码. chatgpt 5.0 有限额, 但是我的项目比较简单, 哪怕降级成 GPT-4 也有用. 具体的调试过程还是有点繁琐的, 就是遇到个问题, 复制代码加上报错信息(或者是自己想要做到什么功能的描述), 丢给GPT, 得到答案, 再部署应用, 再测试, ... 不断循环, ... 最终成果 Github htt...

电报防广告机器人 telegram antispam bot 重构产生问题和回答的方式

图片
上一期我们实现了防广告机器人的基本框架 如果我们想实现丰富的 问题-答案 生成方式, 怎么做呢? 看一下目前的代码. 是生成了 问题-答案 后, 保存起来, 然后新成员再回答问题, 并检查答案. 那么, 我们来做这样一件事. 在一个python文件 main.py 的目录下, 有一个 pset 目录.  pset 目录下有多份 .py 文件.  这些 .py 文件中, 都至少包含1个函数. buildQA buildQA 返回2个字符串, 一个是 question, 一个是 correct_answer 我要在 main.py 中随机调用 pset 目录下的一个 .py 文件中的 buildQA 函数 把这段文字丢给 M$ copilot (或者你手边的任意一个GPT), 很容易就得到答案. 把修改方案应用到项目中. 主 py 文件中. 增加这样一个函数 def get_random_module():     # 找出 pset 目录下的所有 .py 文件(排除 __init__.py)     files = [         f[:-3] for f in os.listdir("pset")         if f.endswith(".py") and f != "__init__.py"     ]     # 随机选择一个     chosen = random.choice(files)     # 动态导入     module = importlib.import_module(f"pset.{chosen}")     return module 再把原来生成 问题-答案的地方改成这样 # 生成验证问题和答案 mod = get_random_module() question, correct_answer = mod.buildQA() 然后在 pset 目录下, 新建一个 add.py 文件. 内容如下: import random def buildQA():...

电报防广告机器人 telegram antispam bot 新成员入群时需要人机验证 用回复文本的方式增加发广告的成本

图片
用了这么久的telegram, 看到的防广告机器人, 都是用选按钮的方式回答问题, 理论上有被穷举题库的可能性. 如果你的群足够有吸引力, 想加群的广告机器人足够多, 总是可以找到入群问题的答案的. 而入群问题如果太变态 ( https://github.com/XTLS/Xray-core/discussions/3487 ) 反而拒绝了一些能力不强的正常人类 (TA们本身并不是想发广告, 只是想入群提问或交流) 所以我有了一个思路, 如果这个人机检查的问题需要回答文本呢? 用干就干, 利用claude进行初步构建. 我要开发这样的一个telegram机器人 机器人在群组中工作 当机器人检测到有新成员加入时, 机器人将新成员设置禁言. 机器人要求新成员在与机器人的私聊过程中完成人机检测. 如果通过人机检测, 那么机器人解除新成员的禁言状态. 人机检测的具体过程是这样的 当新成员向机器人发送/start时, 机器人提问, 新成员输入文本回答. 得到的结果放到 VS Code, 和 M$ Copilot 合作, 进行调试. 效果 Github https://github.com/crazypeace/tg-join-group-exam-bot/ 总代表量(算上空行和注释)不到300行, 是不是很轻量! * 考虑到后续还会有几期更新. 所以本期的代码也复制了一份  tg-join-group-exam-bot1.py 在项目里. 部署方法见项目 readme 目前这只是一个最基础的架子, 后续我们再慢慢优化. 欢迎关注我的博客 https://zelikk.blogspot.com/p/icdyct.html

商业化电报关键词提醒机器人 telegram keyword monitor bot

图片
书接止文. 今天接着说商业化电报关键词提醒机器人 telegram keyword monitor bot 的一些思考. 也就是, 你可以怎样用项目去卖钱. Github https://github.com/crazypeace/tg-keyword-monitor-bot 再复习一下本项目的架构 卖的是搭建项目的劳动 对于项目的使用者来说, 如果还要操作linux系统, 修改配置文件来修改关键字, 使用起来会不方便. 本项目提供向机器人发命令来修改关键字的操作方式, 使用者不需要接触linux环境. 示例, 甲方 提供 tg账号, 作为采集者, 把信息源的群都加好. 你把这个项目搭起来, 把甲方的tg账号设置为 管理员 和 消费者. 使用方式就是, 如果要监听更多的群, 甲方自己操作tg账号去加群. 如果要修改关键字, 甲方自己操作tg账号和机器人交互修改关键字. 甲方在tg账号上接收机器人发送的关键字消息. 卖的是信息源 比如, 某些群 加群要收费, 或者不接收新群成员了.  而你手里有已经加了这些群的tg账号, 作为 采集者. 示例,  在同一个大圈子里, 不同的甲方有不同的关键字需求. 你的采集者是同一个tg账号. 你为每一个甲方, 分别 运行一个项目. (可以共用VPS, python环境. 建不同的目录就行了) 其它设置都和标准流程一样, 只是设置同样的 采集者 (配置文件中的 user_phone 参数) 卖消费者权限 如果这个行业关注的关键字相当同质化, 你也掌握了信息源. 想降低维护成本, 你可以直接卖消费者权限. 示例, 你可以直接修改配置文件的 result_id_list 列表, 添加不同的 接收关键字消息的 tg 账号的ID. 你也可以把一个tg频道的id 设置为 result_id_list. 然后把 发布者的 bot 添加为频道的管理员, 这样就可以发关键字通知了. 你可以把频道设置为私有的, 你控制订阅这个频道的权限就行. 你收了钱, 再把某个tg用户添加进频道. 我自己公开了一个关键字消息的频道示例: https://t.me/FuckGFWNewbieNeedHelp 使用多个采集者 不希望一个tg账号加太多的群, 担心一下子被封号的风险. 或者是你已经触达500个群组的上限. 运行多套程序, 分别使用不同的采...

Win环境下编译 Forkgram 安装Visual Studio 2022 C++桌面开发 Python Git

图片
参考 telegram 官方项目的指南 https://github.com/telegramdesktop/tdesktop/blob/dev/docs/building-win-x64.md 申请 api_id, api_hash https://my.telegram.org/apps 安装 Visual Studio 2022 的 C++ 环境 M$ Store 安装 Visual Studio https://apps.microsoft.com/detail/XPDCFJDKLZJLP8 选择 C++ 桌面开发环境 安装 Python https://www.python.org/downloads/ 安装 Git https://git-scm.com/download/win 建议你新建一个开发目录 比如 c:\dev\ 找个翻墙客户端 开 tun 模式 *  比如 nekoray 或者 clash-party(mihomo-party) 打开 "x64 Native Tools Command Prompt for VS 2022" 工具 开始菜单 在上面这个工具的命令行窗口中, 进入你的开发目录 cd c:\dev\ git clone forkgram的源代码 git clone --recursive https://github.com/forkgram/tdesktop.git 准备环境 在工具的命令行窗口中,  tdesktop\Telegram\build\prepare\win.bat * 这个过程时间比较长, 建议你设置电脑不休眠, 翻墙网络一直保持畅通. 生成 .sln 工程文件 在工具的命令行窗口中,  tdesktop\Telegram\configure.bat x64 -D TDESKTOP_API_ID= 你的api_id -D TDESKTOP_API_HASH= 你的api_hash 在 c:\dev\tdesktop\out 目录下, 找到 Telegram.sln 双击此文件, 应该会以 Visual Studio 打开. 接下来, 你可以使用你习惯的方式 编译项目, 生成可执行文件. * 这个过程时间比较长, 建议你设置电脑不休眠 编译结果在 c:\dev\tdeskt...

搭建电报关键词提醒机器人 telegram keyword monitor bot

图片
前几天 开发了一个电报关键词提醒机器人 已上传Github https://github.com/crazypeace/tg-keyword-monitor-bot 本文描述搭建过程. 首先, 你可以看看Github项目的readme, 那是一个从头到尾按操作顺序手把手的图文教程. 如果你觉得那篇教程有点云里雾里, 那么下面, 我换一个角度来描述. 系统架构 信息源 -> 采集者 -> 本程序 -> 发布者 -> 消费者 系统中的各部分 信息源 是 你想监听的各个tg群组, 频道 采集者 是 一个tg账户   * 推荐你注册一个新tg账户来玩. 本程序 是 本项目 main.py   * 本程序需要 api_id, api_hash. 需要到  https://my.telegram.org/apps 申请. 这里需要登录tg账户, 可以是 采集者同账户, 也可以是不同的账户.  发布者 是 一个tg机器人   * 本程序需要 bot_token, 需要向  https://t.me/BotFather 申请. 向 @BotFather 发起机器人申请的tg账户, 可以和前面同账户, 也可以是不同的账户. 消费者 是 接收关键字通知消息 的用户或群组或频道 本项目的运行环境 安装python 一般你用的比较新版本的操作系统 Debian / Ubuntu, 已经自带了.  略 安装 pip apt install -y python3-pip 拉取项目 apt install -y git git clone https://github.com/crazypeace/tg-keyword-monitor-bot cd tg-keyword-monitor-bot 安装python依赖 pip3 install -r requirements.txt --break-system-packages config.yaml.default 复制为 config.yaml 系统中各部分之间的关系 信息源 与 采集者 之间的关系 你自己登录 采集者账户 的身份, 加入信息源. 入群验证, 不公开群需要别人拉你, 需要管理员审批, ... 等等等等 这些问题, 需要你自己解决. ...

新手使用Debian 安装中文语言 设置主用中文 安装command-not-found 解决"命令找不到"的问题

图片
问题 经常遇到新手小白问下面这样的问题怎么解决. TL;DR apt update apt install -y command-not-found apt update sed -i 's/^# *\(zh_CN.UTF-8 UTF-8\)/\1/' /etc/locale.gen locale-gen 断开SSH连接, 重新SSH登录 export LANG=zh_CN.UTF-8 开始你的linux命令行操作.  效果 解释 安装 command-not-found apt update apt install -y command-not-found 要 command-not-found 起作用, 需要再更新一下 apt 软件源信息 apt update 安装中文语言 sed -i 's/^# *\(zh_CN.UTF-8 UTF-8\)/\1/' /etc/locale.gen locale-gen 要 command-not-found 起作用, 需要新建SSH会话 断开SSH连接, 重新SSH登录 设置系统使用中文语言 export LANG=zh_CN.UTF-8 ======== 后记 为什么我不让 export LANG=zh_CN.UTF-8 持久化? 首先, 将这个设置持久化的方法, google 或 gpt 随便一搜就有答案. 其次, 对于特别新手小白的人来说, 如果系统语言修改了, 以后在参考其它教程的时候, 显示内容与教程不一样, 会不会搞不明白了. ======== 在执行一键命令时的其它问题, 请参考 https://zelikk.blogspot.com/2022/05/bash-curl-error.html

The Hot3 in Last 7 Days

酒馆SillyTavern 玩英文角色卡 也能以中文输出 设置世界书Lorebooks

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