博文

目前显示的是 2025的博文

在NaiveProxy上使用IP的TLS证书

图片
前言 群友问能否不使用域名搭NaiveProxy 正在我准备回复 "No" 的时候, 我想到了最近不是Caddy支持了IP证书嘛, 能不能结合在一起玩玩? 思路 用 现成的脚本 生成配置文件和各种参数. 结果是这样的 # _naive_config_begin_ {   order forward_proxy first } :2083, np.icdyct.dpdns.org:2083 {   tls e16d9cb045d7@gmail.com   forward_proxy {     basic_auth 864aeebd36be 864aeebd36be     hide_ip     hide_via     probe_resistance   }   file_server {     root /var/www/xkcdpw-html   } } # _naive_config_end_ 最近Caddy支持IP证书的语法 是这样的 74.48.9.95 {   tls {     issuer acme {       profile shortlived     }   }   file_server {     root /var/www/xkcdpw-html   } } 融合一下, 结果是这样的 # _naive_config_begin_ {   order forward_proxy first } :2083 74.48.9.95:2083 {   tls {     issuer acme {       profile shortlived     }   }      forward_proxy {     basic_auth 864aeebd36be 864aeebd36be   ...

用VS Code阅读Sing-box文档 生成配置文件

图片
前言 有群友问 怎么手搓 Sing-box 的配置文件 思路 把文档丢给GPT, 让GPT帮忙写配置文件 实践 0. 准备环境 安装 Antigravity https://antigravity.google/download * 这里只是拿TA作为例子, 当然还有其它 VS Code 可选.  建个目录 作为工作目录, 用 Antigravity 打开 1. 下载文档 发给GPT 下载这个项目的文档  https://sing-box.sagernet.org/configuration/ 我假设自己是一个小白,  所有需要我批准的请求, 我都批准.  2. 生成配置文件 发给GPT 生成一个作为客户端使用的配置文件  监听本地 1080 端口 socks 作为inbound  连接一个下面这样参数的reality协议节点作为 outbound  协议 (protocol) = vless  地址 (address) = 74.48.9.95  端口 (port) = 8972  用户ID (id) = fb0d60cf-1084-412d-ba59-fd5c1166b89d  流控 (flow) = xtls-rprx-vision  传输协议 (network) = tcp  传输层安全 (TLS) = reality  SNI (serverName) = www.paypal.com  指纹 (Fingerprint) = chrome  公钥 (Public key) = Qam0-DVzhHghfZPi4Pfx3iQbmVt0YJBhcb0cyMsFdEc 生成了一个配置文件 config.json 调试 下载sing-box的可执行文件 放到 工作目录 启动 sing-box 内核 sing-box.exe run 报错 ERROR[0000] legacy special outbounds is deprecated in sing-box 1.11.0 and will be removed in sing-box 1.13.0, checkout documentation for m...

电报防广告机器人 新成员入群时ID小于2B免验证 在群内发言时ID小于8B免验证

图片
之前, 为了防广告机器人, 我面向GPT开发了两个电报telegram机器人. 一个是加群时的验证. https://github.com/crazypeace/tg-join-group-exam-bot 一个是发言时的验证. https://github.com/crazypeace/tg-send-msg-exam-bot 用了一段时间, 确实防广告的效果很好.  但是, 也有群友报怨说, 连着验证2次 机器人功能坏了. 没人想到这是两个不同的机器人. 我想了想 做了一点很小的优化. 一般来说自动发广告的机器人, 都是新注册的, ID数字大于8,000,000,000 所以, 发言验证机器人, 只针对这些大ID的用户, 要求验证1次. 而ID数字小于2,000,000,000 的用户呢, 都是比较早期注册电报 telegram 的, 相信不会乱发信息 所以, 加群验证机器人, 对于这些用户免予验证. 这两个修改很小, 也很特异化, 所以没有上传Github

bash -x打印日志中断 用BASH_XTRACEFD=3输出完整的bash -x日志

图片
TL;DR exec 3> bashx运行日志.log; BASH_XTRACEFD=3 bash -x 需要解密的脚本.sh

用指定版本的233boy sing-box脚本安装指定版本的sing-box内核 GitHub fork并指定版本tag

图片
前言 sing-box 在最近的几个版本 配置文件的语法有改动, 而且不向后兼容. 也就是说, 旧版本的配置文件用在新版本的内核, 会报错. 需求 假如 我的客户端 因为一些原因, 只能使用 sing-box v1.11.15 我想使用233boy脚本在服务端安装 sing-box v1.11.15, 这样脚本生成的配置文件我自己有能力进行一些手动修改. 新版本的配置文件语法我不想学习. 所以我需要 使用 v1.11 版本的233boy sing-box脚本 在VPS安装 v1.11.15 的sing-box内核 实践 1. fork GitHub 分支 https://github.com/233boy/sing-box/fork 注意 不要 勾选 main 分支 only  2. 进入codespace 3.  将fork 的分支恢复到 v1.11 标签的状态 在 codespace 终端中执行  git reset --hard v1.11 git push origin main --force 4. 修改 install.sh 搜索  code.tar.gz  找到代码段 修改 is_core_ver=v1.11.15 固定下载 v1.11.15 内核包 修改 link=https://github.com/233boy/sing-box/releases/download/v1.11/code.tar.gz 固定下载 v1.11 脚本包 提交修改 ======== 完 最终结果 Github https://github.com/crazypeace/sing-box 使用方法 bash <(curl -L https://github.com/crazypeace/sing-box/raw/refs/heads/main/install.sh) ======== 后记 本文这样操作的好处是, 与原项目保持 fork 的关系. 当然, 233boy 的脚本本身已经支持了一些功能, 也可以像下面这样达到用 v1.11 脚本 安装 sing-box 内核 v1.11.15 的效果 git clone https://github.com/233boy/sing-box cd sing-box git r...

ech-wk 给窗口添加滚动条 改善小屏幕上的使用体验

图片
前言 群里有人反馈 小屏幕上使用 ech-wk 显示效果有问题 思路 给窗口添加一个滚动条 分析 这个窗口是 gui.py 生成的 面向GPT开发 把 gui.py 上传到 GPT, 指明问题 附件中的代码 有一个问题, 在屏幕分辨率不高的情况下, 窗口显示不全, 而且没有滚动条 GPT的回复是, 只需要修改 init_ui 函数, 并给出了修改方案. 对代码进行局部替换. 生成可用的版本 感谢 原作者 已经作好了 github action 我们 fork 一份 ech-wk   然后修改/提交 gui.py 然后发布一个自己的新的release 然后就等 github action 生成编译打包 调试 下载试用, 发现报错 把报错信息发给GPT. 给出修改方案, 在 from PyQt5.QtWidgets import 中增加引入 QScrollArea  修改/提交 gui.py 再发布一个新的release 再试试, 小屏幕上的窗口加了滚动条了, 可以滚动显示完整的窗口内容. Github https://github.com/crazypeace/ech-wk 用到的GPT Claude

电报telegram 不是公开群组的群成员也可以发送贴纸?

图片
在 https://t.me/sing_box_community 公开群中,  https://t.me/threecolordummy 用户 不是 群成员member 但是我发现 TA 可以在群里发送贴纸 @sing_box_community 这个群组是公开 member 的, 你可以通过搜索用户ID, 来查证这一点. 你也可以通过查看你与 @threecolordummy 的共同群组, 来查证这一点. (如果你已经加入了 @sing_box_community 群的话) 这个 @threecolordummy 会自动"回应" 关键字 来发送贴纸 naive 三色图 ✌ 这个 @threecolordummy 设置了1小时的冷却时间, 所以如果上一次发贴纸在1小时以内, 那么出现关键字不会触动 发贴纸 的响应. 到 2025/12/14 8:36 为止 @sing_box_community 群里搜索 @threecolordummy 只剩下了1个 2025-11-22 的关于cloudflare的贴纸. 我发送一个 ✌ 作为测试 (测试时刻为 8:48)

在受限的VPS环境下 使用233boy的sing-box脚本

图片
在233boy的群里, 总是遇到有人在受限的VPS环境下安装失败. 看了不少失败的案例, 一般是2个原因: 1. 访问github资源失败 2. 检测服务器IP失败 LT; DR 安装命令 bash <(wget -qO- -o-  https://gh-proxy.org/ https://github.com/233boy/sing-box/raw/main/install.sh | sed s#one\.one\.one\.one#www.cloudflare.com#gi) 维护, 在安装完成之后 find /etc/sing-box/sh -type f -name "*.sh" -exec sed -i 's#one\.one\.one\.one/dns-query#dns.alidns.com/resolve#gi' {} + find /etc/sing-box/sh -type f -name "*.sh" -exec sed -i 's#one\.one\.one\.one#www.cloudflare.com#gi' {} +   1. 访问github资源的问题 用github proxy解决 这里可能会遇到两个问题. 1.a) 翻墙脚本里面一般还会获取github资源(脚本或压缩包).  而如果github proxy只解决了获取github脚本本身的问题, 那么脚本运行起来了之后, 获取github资源还是会失败. 所以我们需要能处理 github脚本嵌套调用 的 github proxy. 最早的 https://github.com/hunshcn/gh-proxy 就没有处理github脚本的嵌套调用 而  https://github.com/crazypeace/ghproxy  就处理了github脚本的嵌套调用 所以如果你用到的github proxy发现脚本跑起来了, 但是下载github资源报错, 说明没有处理github脚本的嵌套调用. 那么你需要换一个github proxy, 或者 自己搭一个 . 1.b) 常见的github proxy是用域名访问的.  那么你的VPS厂商是有可能在网络环境针对github proxy域名进行屏蔽的. ...

CloudCone VNC 不能输入 空格 浏览器开隐私模式屏蔽插件后 正常

图片
问题 今天遇到一个奇怪的问题 CloudCone 和 RackNerd 的web方式VNC 不能输入空格 CloudCone 的问题比较大.  RackNerd 就算遇到这样的问题, 也可以用 粘贴功能来绕过这个问题. CloudCone的VNC没有粘贴功能. 我就很苦恼. 解决方案 弄来弄去, 偶然发现 Firefox 就没有问题. 然后发现 Chrome 开隐私模式(相当于屏蔽了插件), 也没问题.

在 VPS 注册页面 和 美国人信息页面 高亮显示关键字 油猴篡改猴tampermonkey脚本

图片
前言 在购买VPS的时候, 会遇到需要填写个人信息的时候. 我们常常会找一个生成随机美国人信息的网页. 我有一个想法, 希望快速方便的知道哪个信息填写到哪里. 面向GPT开发 有这样一个HTML页面 页面中可能包含 "first name", 也有可能 是在 input元素的 placeholder 属性中包含 "first name" 我需要查找并高亮这些 "first name"  把这些需求发给GPT. GPT生成的结果分为了CSS和JS脚本两部分. 于是再向GPT提要求 需要整合为可以在浏览器的 console 执行的 js 文件  GPT生成了一个整合的JS文件. 在浏览器 F12 开发者工具的Console中进行测试. 对于 RackNerd 的注册页面, 效果为红色边框. 对于美国人信息页面, 效果为黄色文字底色 * 注意, 此页面上, 写的是 Firstname 而不是 First name. 代码需作一点修改. 在有一些 美国人信息页面上, 没有 Firstname 这样的内容, 只有 Full name 所以我们向GPT继续提出修改意见. 把 first name, firstname, full name, fullname, 全名, 姓名 归为一类, 显示同样的高亮颜色或边框颜色. 对于同一类关键字, 边框颜色和文字底色颜色应该一致. 测试, 结果可以了. 接下来, 把这个结果推广到其它信息, 并且要求不同类的信息, 使用不同的颜色. 把 first name, firstname, last name, lastname, full name, fullname, 全名, 姓名 归为一类, 显示同样的高亮颜色或边框颜色. 把 phone number, phone, 电话 归为一类. 把 street address, street, 街道地址, 街道 归为一类. 把 city, 城市 归为一类. 把 full state name, state, 州全称, 州 归为一类. 把 postcode, zip code, 邮编, 归为一类. 以上每一类, 都要使用独特鲜明的颜色, 不应该与其它任何一类颜色相同. GPT返回的结果, 在浏览器console中测试. 效果不错. 用油猴插件...

YouTube 视频信息页面 网速换算为 MB/s 油猴篡改猴tampermonkey脚本

图片
前言 看到一个群友的YouTube 视频信息页面 网速换算为 MB/s 手痒, 也想自己整一个. 分析 F12开发者工具, 选择视频信息面板上的网速 HTML元素. 右键菜单 Copy JS path 得到 显示网速的文字 HTML 元素path为 document.querySelector("#movie_player > div.html5-video-info-panel.ytp-sfn > div > div:nth-child(9) > span > span:nth-child(2)") 面向GPT开发 我有一个html页面, 其中这个位置的元素 1) document.querySelector("#movie_player > div.html5-video-info-panel.ytp-sfn > div > div:nth-child(9) > span > span:nth-child(2)") 内容是  17085 Kbps 这样的格式, 我需要在这个元素 1) 的后面, 增加一个元素 2) , 内容为 元素 1) 的内容换算为 MB/s 的单位. 元素 2) 的数字 应该每10秒刷新 GPT开发的结果, 先在 F12 工具的 console 里面测试效果. 效果正常. 用油猴插件固定此脚本的效果 具体细节步骤略. 油猴插件 https://chromewebstore.google.com/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo 脚本文件名应该为 xxx.user.js @match 中为 https://www.youtube.com/watch* 效果为匹配所有YouTube播放页面url GPT开发的代码填写到 // You code here ... 下面 上传GitHub https://github.com/crazypeace/youtube-MB-per-s ======== 后记 本次使用GPT的过程中, 用到的GPT是 Gemini

用Cloudflare Snippet实现反代blogspot

图片
前言 最近看到有人应用 cloudflare 的 snippet 实现 像 worker 一样的节点功能. 思路 看来,  一方面, 免费用户也有机会使用 snippet 了. 另一方面, snippet 的功能也增强了, 和worker 的区别更小了. 那么我就想用snippet实现之前用worker实现的反代blogspot的效果. 实践 uniproxy里面的语法比较老, 是这样的 addEventListener('fetch', event => {     event.respondWith(handleRequest(event.request)) }) 用在snippet的话, 要改成这样的 export default {   async fetch(request, env, ctx) {     try {       return await handleRequest(request, env, ctx);     } catch (e) {       return new Response(e.message || "Internal Error", { status: 500 });     }   }, }; 我让GPT做了转换.  从结果来看, 就除了这一点变化, 其它代码全部保持原样. 已上传Github https://github.com/crazypeace/cloudflare-workers-uniproxy/blob/master/snippet.js 反代blogspot的worker代码 把需求发给GPT 当我把同样一份代码用于 worker 和  snippet  有没有办法识别当前环境是 worker 还是 snippet, 从而 打开 或关闭 KV相关的代码逻辑? 结果是判断是否存在绑定KV的环境变量. 这个逻辑本身也挺好的, 即使是用于worker, 也可以避免在worker的环境下, 用户没有绑定KV而产生异常. 已上传Github https://github.com/crazypeace/cf-wo...

Win10 内存不足 Chrome页面崩溃 Disable-MMAgent关闭内存压缩 关闭sysMain服务

图片
来源 https://eller.top/posts/109 我只是记录一下, 以防信息源博客不见, 也方便以后我自己搜索. 1. 关闭内存压缩 管理员身份启动PowerShell 命令行执行 Disable-MMAgent -mc 检查关闭内存压缩, 在命令行执行 Get-MMAgent 检查结果中应包含 MemoryCompression            : False 2. 关闭sysMain服务 关闭windows服务的方法有很多, 问一下Google和GPT都容易得到答案. ======== 完

Blogger 首页显示博文的标签

图片
前言 我想促进访问者跳转到更多的博文. 在单篇博文的页面, 我把 标签放在了文章的标题下面. 我想在首页也实现类似的效果. 分析 打开 blogger 后台 - 主题背景 - 修改HTML 跳转到 Blog1 段. 阅读HTML, 发现是这里显示标签 并且有逻辑判断是否为博文页面. 我们修改为 <b:includable id='postLabels'> <b:if cond='data:widget.type == &quot;Blog&quot;'>   <b:include name='super.postLabels'/> </b:if> </b:includable> 可以注意到  data:view.isSingleItem and   被删除了. 效果 成功了.

电报Telegram 贴纸Sticker 翻墙新手 FuckGFWNewbie

图片
点此链接添加贴纸: https://t.me/addstickers/fuckgfwnewbie 新增几个特色贴纸. 有人问推荐一个"最好的"XX (机场, 协议, 软件, ...) 有人说 naive 有人"不懂就问" XXX

有人说我给垃圾VPS拉皮条

图片
有人说我给垃圾VPS拉皮条. 指的是RackNerd CloudCone厂商. 一般是批评这些内容: 翻墙效果差 和XXX比起来效果差 不如一步到位买XXX 不如机场省心 不如XXX机场 不如一毛机场 不如免费机场 不如免费CloudFlare节点 我想说的是, 1.  不同的人有不同的翻墙需求. 对带宽/ 延迟/ 流量 的具体需要都不一样. 拿我自己来说, 我就是 1080p 看看油管 看看黄. 我对于 视频秒开 和 拖进度条的丝滑程度没有那么敏感. 2. 中国这么大, 不同的省份, 不同的运营商, 国际出口不一样, GFW的行为也不一样. 我一直坚持, 你自己拿测试节点试用, 以你的实际体验效果为准. 这个效果 和这个价格, 你觉得满意再买, 不满意就不要买. 3. 对于翻墙新手, 如果你满意测试节点的效果, 那么你可以买和测试节点一样的机房, 用一样的脚本, 搭一样翻墙协议的节点. 尽最大可能的避免卖家秀和买家秀的问题. 4. 没有花钱的不对. 你愿意用更多的钱, 换来更好的体验, 这当然没问题. 与此同时, 也有人不想在翻墙上花那么多钱. 我一直面对的是翻墙新手. 有的人没有太多的钱来翻墙; 有的人担心学不会搭梯子, 买VPS的钱就浪费了. 我的衡量标准就是一年100CNY左右这个价位. 5. 用自己的VPS和用机场, 是完全不同的消费观念和使用习惯. 一方面, 如果在墙外平台上有账号, 会希望有一个稳定的出口IP, 避免被平台风控. 另一方面, 我自己没有解锁流媒体的需求. 一个自己的VPS就够了. 最后, 我个人观点就是, 从安全的角度考虑, 避免使用机场. 6. 对于各种免费的或者钻空子的资源. 比如, 免费的 Oracle机器, 免费的CloudFlare计算资源, 或者其它一些免费的容器呀, 游戏服务器呀, ... 除了那些只是探讨技术的Geeker以外, 我觉得对于大多数人来说, 这本质上是一个金钱和时间的平衡决策, 看你愿意花 多少钱-多少时间 罢了.

下载 独树不成林 播客的全部封面 并做成 电报telegram 贴纸sticker

图片
1. 得到这个播客的RSS 感谢 https://medium.com/彼得潘的試煉-勇者的-100-道-swift-ios-app-謎題/236-利用-apple-podcasts-網站開發有趣的-podcast-app-99b057270be1 我们先找到播客的apple podcast地址 https://podcasts.apple.com/cn/podcast/独树不成林/id 1711052890 注意id的部分 然后把id拼到这个链接的后面 https://itunes.apple.com/lookup?id= 得到 https://itunes.apple.com/lookup?id= 1711052890 用浏览器访问, 得到一个JSON格式的文件. 用文本工具打开(你也可以找JSON工具, 如 https://www.json.cn/ ) 找到 feedurl https://feed.xyzfm.space/y9qnpfdrctnx 这就是RSS了. 2. 找到封面图片 用浏览器打开RSS链接, 找到像下面这样的部分就是封面图片 <itunes:image href=" https://image.xyzcdn.net/Fgd_z5yexkQF_GB0LF4Xncqqf8CU.png "/> 3. 面向GPT开发 实现一个基于HTML JS的工具 页面包含以下几个部分 1) 文本框 可输入podcast的RSS地址 2) 文本框 可从 1) 获取RSS内容, 也可以手工输入RSS内容 3) 文本框 分析 2) 的内容, 列出所有封面图片的地址. 可手工编辑 添加或删除 4) 显示 3) 中的地址对应的图片 举例: https://feed.xyzfm.space/y9qnpfdrctnx 是一个podcast的RSS地址, 会被填写到 1) 1) 可得到RSS数据, xml格式.  会被填写到 2) 2) 中有 <itunes:image href="https://image.xyzcdn.net/Fgd_z5yexkQF_GB0LF4Xncqqf8CU.png"/> 这样的元素, 应该将 https://image.xyzcdn.net/Fgd_z5yexkQF_GB0LF4X...

The Hot3 in Last 7 Days

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

去掉cfnew的视觉特效 保留业务逻辑

Woiden IPv6 VPS 搭 V2ray 梯子 VLESS+Websocket+TLS 模式 免费 白嫖 全程手机操作 2022-4-19