博文

目前显示的是 2026的博文

白嫖worker 自建短链服务 Url-Shorten-Worker 变身文件保管站 File Storage 保存到 R2对象存储

图片
前言 之前 我们实现了 Url-Shorten-Worker 变身图床 Image Hosting 把图片转为Base64保存到KV 其实不只保存图片, 也是可以保存各种文件的. pdf啊, zip啊, 等等 都可以的. 那么就会遇到KV保存容量限制的问题. 思路 如果我们把文件保存到 R2 对象存储呢? 面向GPT开发 Hermes 对接 mimo-v2.5-pro Hermes 对接 claude-opus-4.8 把 https://github.com/crazypeace/Url-Shorten-Worker 项目 clone 到本地, 把整个项目学习分析一遍 我要做这样一个新开发, 你与我讨论方案, 不要实施. 开发一个新的系统模式 保存到R2对象存储的文件保管站 file-r2 把图片保存在R2数据库, 把 R2数据库 的链接作为 value, 保存在 KV 用户操作的前端页面保持与 imghost 项目一样 很多细节上的设计, 打磨, 测试, 反复 略. Github https://github.com/crazypeace/Url-Shorten-Worker 简要使用说明 如果你已经参考 以前的教程 搭建了以前的项目. 那么你需要: 更新 worker.js 注意设置  theme: "theme/file-r2-lite", system_type: "file-r2", 再设置5个变量 R2_ACCOUNT_ID        - R2 账户 ID  R2_ACCESS_KEY_ID     - S3 API Access Key ID  R2_SECRET_ACCESS_KEY - S3 API Secret Access Key  R2_BUCKET_NAME       - R2 存储桶名称  R2_PUBLIC_URL        - R2 公开访问 URL, 如 https://pub-xxxx.r2.dev  其实这5个变量, 我比较推荐你与一个有识图功能的AI互动, 来指导你一步一步怎么操作, 如果你搞不懂要点...

极简翻墙客户端(壳) MDPC-my-dream-proxy-client 增强开发 多内核 单outbound

图片
前言 我们已经基于 MDPC实现了 xray, hy2, sing-box 这三个内核的翻墙客户端 如果进一步地, 实现一个像是 v2rayN 那样, 支持多个内核, 在"启用"一个节点之后 , 就自动启动对应的内核呢? 面向GPT开发 开发人员: Hermes 对接 mimo-v2.5-pro 学习基础知识 基于 /home/ubuntu/my-dream-proxy-client/ 这个项目进行开发 你先学习一下这个项目 开发后端  把 配置文件 mdpc-config.yaml.default 的结构改为 listen: 127.0.0.1 port: 18080 log: "" xray:      files-dir: bin/xray/     core-start: "bin/xray/xray run -confdir bin/xray/"     core-test: "bin/xray/xray run -confdir bin/xray/ -test" core1:     files-dir: ""     core-start: ""     core-test: "" 相应的, API 改为 文件操作 — /api/*/files GET    /api/xray/files GET    /api/xray/files/{filename} PUT    /api/xray/files/{filename} DELETE /api/xray/files/{filename} 进程操作 — /api/*/core GET    /api/xray/core/status POST   /api/xray/core/start POST   /api/xray/core/stop POST   /api/xray/core/test 注意 mdpc-config.yaml.default  里面是可以包含多个 翻墙内核结构的, 对于示例来说, 有一个 cor...

释放液体防飞溅指南 Guide for Preventing Liquid Splashing During Discharge (GPLSDD)

图片
操作步骤 出水管口应位于合法区域的垂直上方范围内 Positioning: The outlet of the discharge pipe must be positioned vertically directly above the designated area. 调整出水管瞄准方向,使得延出水管瞄准方向延伸,应落于合法区域内 Aiming: Adjust the direction of the discharge pipe to ensure that its extended trajectory falls entirely within the designated area. 从液体开始流出至停止流动,出水管的位置和方向都应保持稳定 Stability: From the moment the liquid begins to flow until it stops completely, both the position and the direction of the discharge pipe must remain completely stable. 在液体停止流动后,应使用吸水物覆盖/包住出水管口,将出水管轻轻抖动,使得管内残余液体被吸水物吸附。 Post-Discharge Care: Once the liquid stops flowing, use an absorbent material to cover or wrap the pipe outlet, then gently shake the pipe so that any residual liquid inside is fully absorbed. 完 Github https://github.com/crazypeace/gplsdd GIF

在 v2rayN-v7 节点列表 右键菜单 批量计算 证书指纹 pinSHA256

图片
前言 我们已经有了 从客户端查询证书计算pinSHA256的工具 进一步的, 可以在 v2rayN 中调用这个工具 那么, 如果机场提供了多于1条的hy2节点, 需要能批量处理. 面向GPT开发 Hermes 对接 mimo-v2.5-pro 回忆一下 在v2rayN 项目开发 "获取pinSHA256" 的开发过程. 接下来会在此基础上进一步开发 增强开发: 在v2rayN主窗口, 节点列表的右键菜单中, 添加一项 "获取pinSHA256"  支持批量选取多个节点, 右键菜单, "获取pinSHA256" 具体过程为: 批量多个节点, 依次处理, 每次处理1个节点: 1. 节点信息中 传输层安全 是否为 tls 是, 继续; 否, 跳出; 2. 跳过证书验证 (allowInsecure) 是否为 true 是, 继续; 否, 跳出; 3. 调用 hy2-pin-tool 工具获取 pinSHA256, 并保存到节点信息中. Github https://github.com/crazypeace/v2rayN/releases/tag/v7.22.5-pin-sha256 演示视频 https://www.youtube.com/watch?v=eRpVxdrW0X8

Hermes 给 Telegram 聊天底部添加 /stop 按钮

图片
前言 我用的模型不是SOTA, Agent工作的时候需要人在旁边看着. 一旦发现走错了路, 或者是忘了之前的"经验", 我要马上发"/stop". 思路 为了最快的发出 "/stop"  我需要一个像这样的东西 当然了, 实际上我没整这么大的活. 我在Telegram里面找到的最合适的表达方式就是 ReplyKeyboardMarkup回复键盘 就像这样 Github https://github.com/crazypeace/hermes-skill-telegram-stop-button

基于 极简翻墙客户端(壳) MDPC-my-dream-proxy-client 配合 sing-box 内核 支持 anytls 协议

图片
前言 前面我们 基于MDPC-my-dream-proxy-client 很容易实现了一个 hy2 翻墙客户端(壳) 再来试试 sing-box 和 anytls 协议 面向GPT开发 开发人员: Hermes 对接 mimo-v2.5 学习知识 把 https://github.com/SagerNet/sing-box 按最新的 release tag clone一份本地代码. 不要放tmp, 未来要进一步分析. 是长期任务. 分析 sing-box 的使用方法, 配置文件用什么格式 用怎样的命令形式启动 sing-box 内核 有没有测试 配置文件 是否合法的 sing-box 命令? 这是 sing-box 的文档 https://sing-box.sagernet.org/  对照 你的分析, 进行对比验证 把你的分析结论保存为 .md 文件 我要使用 sing-box 的 anytls 协议 你分析源码找到应该如何使用, 包括服务端 和 客户端 另存为一份 .md 文件 开发 - 基本功能 基于 /home/ubuntu/my-dream-proxy-client/ 这个项目进行开发 你先学习一下这个项目 现在要继续 开发支持 sing-box 内核 支持 anytls 协议  参考以下分析报告 - ~/repos/sing-box/ANALYSIS.md — 项目分析(配置格式、启动命令等) - ~/repos/sing-box/ANYTLS.md — AnyTLS 使用指南 先不要实施编码, 先和我讨论设计思路 sing-box 也是独立实例 API 端口 18280 sing-box 配置文件 多文件同目录 启动命令 sing-box run -C confdir/ 确定每个配置文件中只有一个json块,  比如, inbound.json 里面只有 inbound ,  outbound.json 里面只有 outbound 类似 xray 的处理方式, 对每个 json 配置文件, 都有一个HTML页面. 先只实现JSON文本编辑框, 表单以后再设计. 测试和调试 略 功能类的测试, 先让Agent自己搭环境测试, 遍历各种组合环境. 最后再由人上手. UI设计, 操作逻辑, 这些由人设计, 由人测试, ...

在 v2rayN-v7 中 "获取pinSHA256"按钮 调用hysteria2-pinSHA256-tool工具

图片
前言 我们已经实现了一个  hysteria2-pinSHA256-tool 小工具来查询 hysteria2节点自签证书的pinSHA256 现在我们将这个算法合并到 v2rayN 项目 面向GPT开发 Hermes 对接 mimo-v2.5  我要从客户端侧 得到 自签证书的 hysteria2 节点的 pinSHA256 核心算法参考 https://github.com/crazypeace/hysteria2-pinSHA256-tool/ v2rayN 的功能入口 我想设计在附件图片中红色文本框指示的位置 用的方案是调用QUIC库. 进展不顺利, 在不同的平台, 使用的QUIC库不一样. linux 用libmsquic,  win 用 msquic.dll * 不排除我用的AI比较蠢的原因. 我只是实事求是的描述我遇到的困难. 后来采用的方案是, 直接调用 hysteria2-pinSHA256-tool 工具的可执行文件. Github https://github.com/crazypeace/v2rayN/releases/tag/v7.22.5-pin-tool 操作演示

基于 极简翻墙客户端(壳) MDPC-my-dream-proxy-client 配合 Hysteria 内核 支持Hysteria2协议 自签证书指定证书指纹pinSHA256

图片
前言 前面我们实现了一个 配合xray内核 reality协议 的 极简翻墙客户端(壳) MDPC-my-dream-proxy-client   如果我们想 配合 Hysteria 内核呢?  (只为了简单演示, 所以只处理自签证书的情况) 分析 根据 my-dream-proxy-client项目 (下称MDPC)的设计, MDPC的配置文件参数为: listen:  port:  files-dir:  core-start:  core-test:  log:  我们可以填上 hy2 对应的信息, 如: listen: "127.0.0.1" port: "18180" files-dir: "./bin/hy2/" core-start: "bin/hy2/hysteria client -c bin/hy2/config.yaml" core-test: "" log: "" 这样后端就好了. * 是不是很简单! 接下来就是创造前端的HTML, 用来生成hy2客户端配置文件的yaml文本 可以先从简单的YAML文本编辑框作为基础功能. 然后再加表单. 开发过程 Github https://github.com/crazypeace/my-dream-proxy-client 使用方法 见 Github 项目 README.md https://github.com/crazypeace/my-dream-proxy-client/blob/main/README.md#my-dream-proxy-client-使用手册-配合hysteria内核 ======== 后记 本次开发由 hermes 对接 mimo-v2.5-pro

hysteria2-pinSHA256-tool从客户端计算hysteria2节点自签证书的pinSHA256填写到v2rayN-v7的hysteria2节点中

图片
前言 之前, 我们 通过v2ray客户端计算hysteria2节点自签证书的 pinSHA256(base64) 现在xray需要pinSHA256(hex) 解决方案 https://github.com/crazypeace/hysteria2-pinSHA256-tool 使用方法 hy2-pin-tool.exe IP:PORT 取 hex 的结果 Win amd64 环境下 v2rayN 的具体操作流程 从  https://github.com/crazypeace/hysteria2-pinSHA256-tool/releases 下载 执行 hy2-pin-tool.exe hy2节点的IP : hy2节点的PORT 注意 hex 结果 v2rayN 编辑 hy2 节点, 点击 "证书未设置" 右边的3个点 把 hex 结果填写到 "证书指纹(SHA-256)" 就行了. 操作视频

当年有sing-box新版本不认旧版本配置文件 今天有xray对接hy2节点的行为与hy2官方客户端不一致

图片
Telegram 贴纸  https://t.me/addstickers/fuckgfwnewbie

做一个你自己的 翻墙客户端(壳) 以xray内核 reality协议为例 MDPC-my-dream-proxy-client

图片
前言 你可能在使用一个没有可用的翻墙客户端的平台. 你可能觉得目前能找到的翻墙客户端太大, 太笨重了, 你用不到那么多功能, 用不到那么多协议. 你可能看到了某个翻墙内核新出了一个协议, 而你手里的翻墙客户端还没有支持. 你可能就是手痒, 想自己搓轮子. 那么你可以做一个你自己的 翻墙客户端 思路 考虑到翻墙内核都是用go语言, 那么我们的翻墙客户端也用go. 这样, 内核能跑的平台, 客户端也能跑. 客户端的GUI界面部分, 考虑到覆盖尽量广的平台, 以及方便用户自己修改调整界面元素, 用HTML. 探索 以  xray 翻墙内核 + reality协议 为例 启动一个 hermes , 对接 mimo-v2.5.  设计工作从这样的对话开启 我们来分析一个翻墙客户端(壳)的设计方案. 基于xray内核 考虑到覆盖尽可能广的平台, 翻墙客户端的后端基于 go 语言 考虑到方便用户自定义界面, 翻墙客户端的界面基于 HTML 你觉得如何? 很多细节和反复拉扯的部分在此省略. 只记录一些最终保留的重要设计思路 前后端功能设计 后端只负责替换配置文件 和 启/停翻墙内核 前端将配置文件的全量文本发给后端 前后端API设计 配置文件操作 — /api/files GET    /api/files GET    /api/files/{filename} PUT    /api/files/{filename} DELETE /api/files/{filename} 进程操作 — /api/core GET    /api/core/status POST   /api/core/start POST   /api/core/stop POST   /api/core/test 设计前端时, 为了简化, 预设以下一些约束条件 后端的配置文件只会有这一些, 只会少, 不会多. 01-log.json        # log 02-dns.json        # dns 配置 03-router.json...

收集 独树不成林 播客末尾的 byebye~~~

图片
与Hermes对话 我们先来讨论一下做这件事情的方案.  有这么一个播客, rss feed是 https://feed.xyzfm.space/y9qnpfdrctnx   下载这个播客的每一期音频, 分析音频末尾的 byebye~~~~ 并截取下来.   注意, 不是每一期的末尾都有 byebye~~~~ Hermes对接的模型是 mimo-v2.5-pro (我觉得mimo-v2.5应该也干得来这个任务) 已总结成SKILL https://github.com/crazypeace/hermes-skill-moaco-podcast-byebyeee-extraction/tree/main/skill   截止2026-06-01已上传 https://github.com/crazypeace/hermes-skill-moaco-podcast-byebyeee-extraction/tree/main/clips ======== 相关推荐 《下载 独树不成林 播客的全部封面 并做成 电报telegram 贴纸sticker》

Linux 可以用 sh -c 启动新进程 并用进程组管理进程 Windows 用 cmd /c 不方便管理新进程 改用 exec.Command(exe, args...)

图片
纯记录笔记 Linux 可以用 sh -c "command"启动新进程, 再用进程组进行管理. 示例代码  https://github.com/crazypeace/my-dream-proxy-client/blob/main/process_unix.go Windows 有类似的启动方式 cmd /c "command", 但是没有方便的进程组. 只能用 Job Object(作业对象), 代码一下子要加很多. 我考虑到 翻墙客户端(壳) 启动的 xray子进程 并不会启动孙子进程.  所以就先把 "command" 分解为 exe 和 args, 然后 exec.Command(exe, args...) 示例代码  https://github.com/crazypeace/my-dream-proxy-client/blob/main/process_windows.go

Hermes 调用浏览器 用agent-browser工具 调用snap安装的Chromium 加--executable-path参数 Oracle甲骨文 ARM VPS 非root用户

环境 Oracle 甲骨文 ARM VPS  非root用户 需求 Hermes 调用浏览器 用agent-browser工具 问题1 安装了firefox,  但 Hermes 说 TA的agent-browser工具 只能用 Chrome/Chromium 类 问题2 用snap安装了Chromium, sudo snap install chromium 但 Hermes 说 TA的agent-browser工具 只认识apt安装的 解决方案 要求 Hermes 研究了一下TA自己, agent-browser工具 可以加上 --executable-path参数 指定snap安装的Chromium 我让TA写在了自己的memory里面

我对VLESS-Reality-cracker的测试方案的观点

前言 VLESS-Reality-cracker 的核心思路是: 如果被测试的TLS服务端是Reality服务端, 那么 重放抓包的client-hello数据包(1)      和     发送 {基于数据包(1)修改了sessionID} 的数据包 会使得随后发出的探针数据包被不同的TLS系统处理,  一个是Reality服务端的TLS系统, 一个是"偷"证书的域名所在的TLS系统. 预期的测试结果是, 探针在两轮测试中得到的返回结果会不同. 从反面讲, 如果被测试的TLS服务端是"正常"TLS服务端, 那么 探针在两轮测试中得到的返回结果会一致. 我的思考 如果一个探针能测试出来 Reality服务端与 "偷"证书的域名所在的HTTPS服务端(下称target) 的行为差别, 那么 搭建Reality服务端的人, 可以用这个探针测试 target, 得到结果后, 修改/配置 Reality服务端, 使得Reality服务端在面对这个探针时, 作出与 target 一致的行为. 从而避免Reality服务端被这个探针检测. 考虑到流行的TLS系统不是无穷的, 那么 针对这些TLS系统的行为设计的探针, 数量/种类 不是无穷的. 我们可以设计尽可能多的探针来覆盖尽可能多的流行TLS系统. 然后用这些探针测试你准备"偷"证书的域名(target), 将得到的结果 配置到Reality服务端. 之后, 当Reality服务端再遇到探针时, 就可以作出与target同样的行为了. 在这样的前提下, 攻击方能成功判定Reality服务端的条件是: 攻击方掌握了一个你没有提前测试过的探针, 并且这个探针在测试Reality服务端和"偷"证书的域名(target)时 行为有区别.

Xray-Reality脚本支持环境变量设置参数

图片
前言 原来, 我的 Xray-Reality极简一键脚本 是支持带参数运行的. 如, bash <(curl -L https://github.com/crazypeace/hy2/raw/main/install.sh) 4 8443 有FQer反馈, 说自己用的是nat机, 出入IP不一样, 需要人工控制IP的功能. 分析 问题来了.  我当初设置带参数的功能时, 为了"简洁", 没有设置 -p 8443 这样的形式.  这就导致脚本的参数的意义是与顺序绑定的. 为了不影响现有的脚本用法, 我只想到一个解决方案, 那就是用环境变量来设置参数. 实践 面向GPT开发 增强这个脚本, 增加功能: 当定义了环境变量 _MYIP_ 时, 根据 _MYIP_ 来设置 netstack 是4还是6, 用 _MYIP_ 设置 ip 当定义了环境变量 _MYPORT_ 时,  用 _MYPORT_ 设置 port, 默认值 与原脚本中的逻辑保持一致 当定义了环境变量 _MYDOMAIN_ 时,  用 _MYDOMAIN_ 设置 domain, 默认值 与原脚本中的逻辑保持一致 当定义了环境变量 _MYUUID_ 时,  用 _MYUUID_ 设置 uuid, 默认值 与原脚本中的逻辑保持一致 当定义了至少一个环境变量后, 参数就被忽略, 以环境变量为准 Github https://github.com/crazypeace/xray-vless-reality ======== 后记 本次用到的GPT是 网页版免费账号Claude

VLESS-Reality-cracker 两轮测试 探针的状态相同 如果Reality"偷"证书的域名是由Caddy提供HTTPS服务

前言 根据 之前的测试 ,  Caddy的HTTPS服务端的测试结果中 探针的状态与 Reality服务端的第1轮测试是一致的 思路 如果Reality"偷"证书的域名是由Caddy提供HTTP服务  VLESS-Reality-cracker 测试的结果会如何? * 测试过程的详细操作流程见  https://github.com/crazypeace/VLESS-cracker/blob/main/如果Reality"偷"证书的域名是由Caddy提供HTTP服务-操作记录.md 以下仅简略描述步骤 准备环境 1. 搭一个正常工作的 Caddy 提供HTTPS服务 略 这里以域名  drla.whatcanisay.ggff.net 为例 2. 搭建一个正常工作的 Reality 服务端, 特别地, "偷"证书的域名是由第1步中Caddy提供HTTP服务 略 这里以域名 drla.whatcanisay.ggff.net 为例 3. 在Docker中搭一个Reality 服务端, 使用宿主机的Reality服务端 同样的内核和配置 docker run -d \     --name reality-server \     --network bridge \     -v /usr/local/bin/xray:/usr/local/bin/xray:ro \     -v /usr/local/etc/xray/config.json:/usr/local/etc/xray/config.json:ro \     ghcr.io/xtls/xray-core:latest  4. 运行Reality客户端 对接Docker中的服务端 略 测试 启动POC程序 ./vless-cracker-v1 \ -i docker0 \ -f "tcp port 8443 and host 172.17.0.1 and host 172.17.0.2" \ -P characteristic.txt  \ -l info 让Reality客户端 发起Reality数据包 c...

亲自手搓 在你自己的VPS上尝试复现VLESS-Reality-cracker 对于Caddy提供的HTTPS服务

图片
前言 上一篇我们已经实现了 手搓复现 VLESS-Reality-cracker 那么, 按照作者的理论, 如果测试对象不是 Reality 服务端, 而是一个真实的HTTPS服务器, 探针应该显示相同的结果. 让我们试试 Caddy 提供的 HTTPS 服务 准备环境 搭一个正常工作的 Caddy 提供HTTPS服务 略 在Docker中部署一个Caddy, 使用和宿主机同样的Caddyfile和证书 docker run -d \   --name caddy-test \   --network bridge \   -v /etc/caddy/Caddyfile:/etc/caddy/Caddyfile:ro \   -v /var/lib/caddy/.local/share/caddy:/data/caddy:ro \   caddy:latest 查看Docker中Caddy的IP docker ps -q | xargs docker inspect -f '{{.Name}} -> {{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 访问Docker中的Caddy的HTTPS服务 curl -L --resolve 你的域名 :443: Docker中Caddy的IP   https:// 你的域名 如 curl -L --resolve drla.whatcanisay.ggff.net :443: 172.17.0.3   https:// drla.whatcanisay.ggff.net   测试1 原作者的7个探针 启动POC程序 ./vless-cracker-v1 \     -i docker0 \     -f "tcp port 443 and host 172.17.0.1 and host  172.17.0.3 " \     -P characteristic.txt \     -l info 访问HTTPS服务 curl -L --resolve drla.whatcani...

亲自手搓 在你自己的VPS上尝试复现 VLESS-Reality-cracker

图片
前言 前两天 在Agent和模型的帮助下, 尝试复现VLESS-Reality-cracker 担心模型糊弄我, 所以准备自己复核一遍. TL; DR https://github.com/crazypeace/VLESS-cracker/blob/main/测试操作记录.md 具体经过 我跟Agent说 总结从 git clone 项目开始 到你输出测试结果的全过程 输出一份文档 包含全部的 命令行操作 指导我完成 整个测试 这份总结里面部分东西有用, 但整体不是我当天测试的流程, 有些细节也没有总结进去. 我一边读TA的总结, 一边自己整理一份.  在这个过程中, 我发现了一些有意思的点. 1. Nodeseek上有人问我怎么看日志 我让Agent做了一个单HTML页面的分析工具. 把日志粘贴进去就能显示分析结果. 学习和分析这个项目 https://github.com/Anonymous376c1d0cf28/VLESS-cracker  对于像这样的测试日志, 制作一个单HTML页面的分析工具 https://github.com/crazypeace/VLESS-cracker/blob/main/vless-analyzer.html 2.  issues 29  提到的 30个 探针 里面有些特殊情况 探针 5:记录层长度刚好溢出 (+1 Byte) Hex: 17 03 03 40 01 00 ... (省略 16385 字节数据) 意图: TLS 标准最大长度为 16384 (0x4000)。测试边界条件,看是否能触发 record_overflow 警告。 探针 5 的数据比较大, 要单独测试.  探针 18:在 ClientHello 之前的 CCS Hex: 14 03 03 00 01 01 16 03 01 00... (ClientHello) 意图: 颠倒发包顺序。正规服务器会立刻返回 unexpected_message。 其它探针都是在重放 ClientHello 之后 发出探针的数据包. 探针 18 是在要重放 ClientHello 的时候, 在 ClientHello 之前添加一些数据, 然后发出去.  探针 30:极大的连续碎片包 Hex: 连...

The Hot3 in Last 7 Days

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

白嫖worker 自建短链服务 Url-Shorten-Worker 显示短链的二维码QRcode