博文

AutoHotKey将剪贴板转换为键盘输入用于VNC

图片
看到有人求助 VNC 中无法粘贴. 在 google 上搜索了一下, 找到一个这样的结果 https://ardalis.com/use-autohotkey-to-paste-text-as-typing/ #NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases. ; #Warn  ; Enable warnings to assist with detecting common errors. SendMode Event  ; Recommended for new scripts due to its superior speed and reliability. SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory. setkeydelay 70 ^+v::GoTo, CMD CMD: ;Send {Raw}%Clipboard% vText := Clipboard Clipboard := vText Loop Parse, vText, % "`n", % "`r" {     Send, % "{Text}" A_LoopField     Send, % "+{Enter}" } return 试用了一下, 效果不对. 但是 AutoHotKey 这个思路是对的. 所以让GPT写了一个. #F3:: ; 快速键 win + f3     TextToSend := Clipboard     ; 检查剪贴板是否为空     if (TextToSend = "") {         MsgBox, clipboard empty         Return     }          DelayMs := 500 ; 设置您想要的延迟时间(毫秒...

电报防广告机器人 telegram antispam bot 我的博客最新一期博文的标题是什么 html解析 rss xml解析

图片
上一期中, 我们实现了自定义 问题-答案 . 但是过于死板. 那么, 除了算术题, 还有什么可以生成灵活 问题-答案 的方式呢? 比如, 我的博客最新一期博文的标题是什么? html解析 如果是人, 怎么找到我的博客的最新一期博文呢?  打开  https://crazypeace.eu.org/ 找到这个位置, 标题就是答案了. 那么, 计算机程序怎么获取这一条呢? 我们 按 F12 打开浏览器开发者工具. 使用选择工具, 选中我们需要的博文标题.  可以看到在html中, 博文标题对应元素是 class="post-title entry-title" 那么, 我们使用GPT编程. python实现如下功能, 访问 https://crazypeace.eu.org/ 在 html 中找到 第1个 class="post-title entry-title" 元素,  输出该元素的文本内容 把GPT编程的结果和原来的 youtube.py 里面的4行代码融合一下, 就得到这样的 blog.py  放到 pset 目录下就生效了.  import requests from bs4 import BeautifulSoup def buildQA():   question = '我的博客的最新一期博文标题是什么?'   correct_answer = ''   url = "https://crazypeace.eu.org/"   # 请求网页   response = requests.get(url)   # 解析 HTML   soup = BeautifulSoup(response.text, "html.parser")   # 找到第一个 class="post-title entry-title" 的元素   element = soup.find(class_="post-title entry-title")   if element:     correct_answer = element.get_text(strip=True)   e...

Cloudflare worker 反代 blogspot 实现免翻墙域名镜像站 path关键词屏蔽

图片
前面实现了一个反代 blogspot 实现免翻墙域名镜像站 .  用KV中保存需要屏蔽的path的方式, 做到了, 指定path显示固定页面, 而不是原页面的功能. 有的用户也许会觉得, 写了一篇不想在墙内显示的博文, 还要去KV里面添加一条记录, 好麻烦呀. 还有一个办法, 就是对path先进行关键字筛选, 含有关键字的path, 直接就显示固定页面, 不需要去查KV了. 比如, 我在写博文的时候, 就有自定义链接的习惯, 会在 xxx.html 的这个xxx里面 包含博文的主题 https://crazypeace.eu.org//2022/01/v2ray-caddy-ws-tls-cdn.html 利用GPT开发, 把 项目的work.js 丢进去, 附上这么一段话 GPT返回的结果有问题. 直接return Response 再多打几句. 这样的结果就对了. 更新到Github https://github.com/crazypeace/cf-worker-proxy-blogspot

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

图片
灵感 我有了一个想法, 想提高我这个博客在GFW墙内搜索引擎的曝光. 思路 1. 需要有一个没有被墙的域名, 用来访问我的博客 2. 我不想使用blogspot的自定义域名方案.  一是, 我原来的域名已经在墙外的搜索引擎中存在多年. 二是, 如果改为使用自己的域名, 我就需要维护域名的解析. 如果遇到攻击, 域名解析受影响, 我需要额外做不少工作.  3. 所以我需要一个没有被墙的域名作为镜像站 4. 作为墙内可以直接访问的域名, 显示的内容也应该是不涉及翻墙的. 所以需要屏蔽掉直接描述翻墙节点搭建, 翻墙工具使用的博文. 具体细节 1. Cloudflare worker反代是好多年的技术了. 可以做到显示 html 的效果. 2. 图片 来自 https://img.crazypeace.eu.org/https://blogger.googleusercontent.com 可以用 uniproxy 的技术. 在第1步获得html之后, 把里面所有访问 https://img.crazypeace.eu.org/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://crazypeace.eu.org/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个群组的上限. 运行多套程序, 分别使用不同的采...

The Hot3 in Last 7 Days

隐形眼镜 的 包装 和 直径 对使用的影响

RackNerd VPS搭Xray Reality梯子 年付 $10.98 1G端口 3T流量 17G存储 1GB内存

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