博文

Debian12 用C编译 curl v8.14.1

图片
curl的 Github代码库 https://github.com/curl/curl 这是一个C语言的项目 参考 以前的C编译经验 大部分操作是一样的, 记录一下不同的地方 ./configure 的时候报错 checking for library containing psl_builtin... no configure: error: libpsl was not found 找GPT问了一下, 说要安装 apt install libpsl-dev 然后还会报错 configure: error: select TLS backend(s) or disable TLS with --without-ssl. 于是需要 ./configure --with-openssl 无错完成以后就可以 make 了 生成的 curl 在 src 目录下 * 注意 这个 curl 不是可执行文件 你可以cat看一下文件的内容

AutoHotKey 实现 CapsLock 一键双用 长按=Ctrl 短按=Esc

图片
逛B站的时候看到 <告别腱鞘炎!Vim 党必看! CapsLock 一键双用:Ctrl + Esc 全搞定> 目的是 长按CapsLock实现 Ctrl 的效果, 短按CapsLock实现 Esc 的效果 里面的AutoHotKey代码如下: SendMode Input SetWorkingDir %A_ScriptDir% SetCapsLockState, AlwaysOff CapsLock::   Send {Ctrl Down}   KeyWait, CapsLock   Send {Ctrl Up}      if (A_PriorKey = "CapsLock")     Send {Esc} return 走读代码就能发现问题, 不管是长按还是短按, 都会发出 Ctrl Down 和 Ctrl Up 信号 在大部分环境下, 这个多余的 Ctrl 信号没关系, 但是如果某个环境对这个多余的Ctrl信号有关系的话, ... 我想到的是, 应该加个延迟来判断是短按还是长按. 准备面向GPT开发的时候, 我想到, 不如给GPT一个开放的问题. 分析这段代码有什么问题, 可以怎样改进 结果超出我的期望. 1. 首先来看加延迟的方案 SendMode Input SetWorkingDir %A_ScriptDir% SetCapsLockState, AlwaysOff CapsLock::     KeyWait, CapsLock, T0.2  ; 等待释放 等待0.2秒          if (ErrorLevel)  { ; 长按超过0.2秒         Send {Ctrl Down}         KeyWait, CapsLock  ; 等待释放         Send {Ctrl Up}     }     else  { ; 轻按(短于0.2秒)   ...

丐版VPS装Xfce桌面 Firefox-ESR 支持VNC远程桌面

图片
前言 今天突然想试玩<逃离鸭科夫>(Escape From Duckov) 但是Telegram的资源频道里还没有. https://t.me/maopajia 所以就到网上搜了搜, 有磁力资源 magnet:?xt=urn:btih:de3270d5e38d84c4c79732c86c066af4f4a8180b 也有网盘下载 https://gofile.io/d/GEsP4C 磁力下载没什么说的, 我在VPS上搭建了离线下载系统. https://zelikk.blogspot.com/2022/01/vmess-websocket-tls-caddy-nginx-aria2-ariang-filebrowser.html 网盘下载嘛, 我以前也尝试过. https://zelikk.blogspot.com/2019/01/gcp-vps-xfce-vnc.html 不过, 今天按以前的教程操作下来, 有一些小变化,  所以记录一下.

电报防广告机器人 telegram antispam bot 相关功能 查询群组内的全部成员 增加入群时间信息

图片
前言 在前面一篇博文中 , 我们的入群验证机器人增加了一个功能, 可以手动启动对某个群成员的入群验证. 解决的问题是, 当机器人离开群组(或异常)的时候, 群组有了新的成员, 但是这些群成员没有经历入群验证. 那么一个新问题就随之而来, 我怎么知道哪些成员是在机器人离开群组的时间段入群的呢? 需求 输出群成员的入群时间. 具体实践 想到我们有过一个查群成员信息的工具 https://github.com/crazypeace/tg-get-group-member 我们只要面向GPT编程, 描述我们的需求. 基于以上代码, 增加功能:  保存群组成员加入群组的时间 修改量很小. 发现得到的结果中, 入群时间是无序的. 向GPT追加需求 查询结果需要按入群时间排序 GPT给出的结果 基本功能是正确的, 但是对于保存在文件中的格式, 我有一点特别的要求. 最初这个项目是为了生成一个用户列表, 供  发言验证机器人  作为 已验证用户列表 valid.yaml 所以需要保存在文件中的格式为: 6617181826:   username: atefatman   full_name: 子 肥 7919966027:   username: crazypeace_anti_bot_bot   full_name: CZ_antibot_bot 我尝试了几种方案. 如果用 list , 保存在文件中的形式是 - id: 399932510   username: crazypeace   full_name: ǝɔ∀ǝdʎz∀ɹɔ 👽   joined_at: '2025-10-06T17:47:39.202290' - id: 661519101   username: testuser   full_name: 测试 用户   joined_at: '2025-10-07T12:11:22.501119' 如果用 OrderedDict , 保存在文件中的形式是 !!python/object/apply:collections.OrderedDict - - - 1716213463     - username...

电报防广告机器人 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 ...

The Hot3 in Last 7 Days

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

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