闪星空间

让 chatgpt-web 支持按量计费与版本切换

我用 Chanzhaoyu/chatgpt-web 搭了一个 GPT 的网页端,小范围交流共享。本来这个项目没有计费功能,我也懒得加,GPT-3.5 价格不高,我都自己承担。GPT-4 公开开放以后,眼看费用骤增,于是我琢磨怎么计费。原作者实际上在推一个收费版,但我以成本价共享还是作罢。最终,我设计实现一套分用户、按量计费的简单方案。然后趁热打铁,顺势编写切换模型版本的功能,这样想便宜可以用 3.5,想有高质量用 4。

因为我仍然很懒,同时无意与前述收费版本竞争,所以也没编写用户管理。HTTP Basic Auth 够用了,用 Nginx 即可方便实现访问认证。需要添加用户的时候用 htpasswd 添加。本文预设前提即是这个。当然这只影响获取用户名,其他设计代码可以通用。假设有人用我改好的 fork,请注意这一点。

阅读全文 »

Published @

xavior,带 XOR 的 TCP 端口转发程序

受 UDPspeeder 启发,我一直想有一个 TCP 的带 XOR(异或)加密的端口转发程序。某些情况下我不希望流量完全明文传输,但也不至于用到 AES 甚至 TLS 那样强加密通道的程度。只需要简单的混淆,那 XOR 非常好使。不过似乎没有现成程序,我得自己编写一个。最近终于又出现实际用例,搜了 GitHub 没发现符合需求的,索性熬夜写了一个,命名为 xavior

XOR 是一种基本位运算。两个相同的位(二进制数)结果为 0,不同为 1。它是一些现代加密算法的基本逻辑单元,也可独立视作加密算法。并且,明文按位异或密钥得到密文,再按位异或即得明文。所以不仅加密、解密密钥相同,函数也是完全一样的。作为加密算法,XOR 非常快,也很不安全。理论上,只要密钥长度大于消息长度,且密钥每次随机产生,XOR 可以获得完美保密性。但这种一次性密码本不太现实。所以 XOR 不被视作正经安全的加密算法。但如果我们只是稍微象征性地加密、混淆流量,那 XOR 实现简单、效率高,还算是可取。

阅读全文 »

Published @

我的装机盘(2022年)

若干年前我比较常重装操作系统、修复系统问题,所以有一件称手“兵器”很重要,就是装机盘。现在的装机盘当然不需要是光盘,更多是 U 盘。形式不重要,里面的内容是重点。最近我淘了一枚固态 U 盘,索性把装机所需要的文件整理一番,顺便分享一下。

所有的程序、文件不包含下载地址。应该很容易在网上找到官方下载通道。

阅读全文 »

Published @

记新 Edge 播放 Netflix 灰蒙蒙(未解决)

以往我观看 Netflix 视频最高 1080p 分辨率,最近买了 2K 显示器,自然想看 2K 视频。1080p 的时候,还勉强可以用 Firefox 附加组件支持;2k 则必须更换浏览器。Windows 上,只有新 Edge 可选,不然就是 Netflix App。我不想用 App。App 似乎就是浏览器套壳,我还不能执行自定义脚本。用 Edge 浏览器,却感觉灰蒙蒙的。

我的环境是 Intel NUC 11 猎豹峡谷套件,Windows 11,Edge 105。

阅读全文 »

Published @

用油猴脚本自动检测网页水印

在 V2EX 看到帖子,知乎在网页等全端加上隐写水印,水印信息包括用户 ID 及时间戳;肉眼很难察觉,几乎只能通过专业分析还原。截至本文发布,知乎似乎已经下线水印。帖子下面一些回复很有价值,网友给出各种分析与应对方式:在网页端,包括用 uBlock Origin 等插件以去广告方式去除,提醒网友对截图进行二值化处理等等。其中一个方法是用油猴脚本检测。

本文假定你已经了解 HTML、CSS、JavaScript 以及油猴脚本。油猴脚本是用于 GreaseMonkey 等浏览器扩展组件的脚本,本质是用户附加在网页上的一段 JavaScript 代码。用油猴脚本检测,即是用 JavaScript 检测。

阅读全文 »

Published @

Hutool 中转 MultipartFile 文件上传

这几年我其实很少直接写 coding 的博文,主要是无聊:浅了没必要重写一遍,深的也不能比别人讲更好。不过最近有同事遇到问题,我刚好有一丁点独创研究,权且记录下来。

假设现在我们负责开发一个后端项目,其中有一个接口,需要接收前端用户上传的文件,然后转发上传到其他后端服务。用户上传的文件在 Java 的 Spring MVC 框架中用 org.springframework.web.multipart.MultipartFile 接收。通常我们会在 Controller 中写一个方法,以 MultipartFile[] 作为入参,接收多个文件。单个文件同理,本文不再赘述。

阅读全文 »

Published @

引文接龙:自由意志到精神独立

最近在读一本哲学导论。从普遍因果律得出的决定论,似乎可以推导自由意志不存在。有一派观点认为自由意志与决定论是相容的,称为相容论。哲学的一大目标是尝试给出某事成立的充要条件:在决定论与自由意志问题中,即是自由意志如何可能(如果不是不可能)。传统的相容论为自由行动设定两个条件,但书中接着给出思想实验指出不合理之处。

阅读全文 »

Published @

记小米 4c 刷机抓包

古董级手机小米 4c 被我翻出来,刚好用作测试机抓取网络包排查 APP 问题。趁这个机会记录相关步骤供参考。

本文假定读者已经对刷机、抓包有一定基础,能够搜索相关资源工具。因为这篇文章更像是一份备忘而不是指导,我实际上懒得写得大而全,如果强求那么几乎永远不会发布。

阅读全文 »

Published @

订阅指定城市新冠疫情动态

2019 年末一场疫情突如其来,短期结束的希望破灭,新冠病毒疫情持续至今。原本我本能似的反感电影中诸如“非典”的宏大叙事,不想我们每个人都受大环境影响。无论如何,我需要跟踪疫情发展以及当地防疫政策。

根据经验,订阅当地发表资讯的微信公众号是最好的。比如长沙市有“长沙发布”。但我并不想用微信,更不想将微信当作我的主要信息来源;另一方面,“长沙发布”不仅发布疫情信息,也夹杂其他污染信息流的推送。所以,我还是想通过其他方式订阅相关动态,可以借助一些技术手段。

阅读全文 »

Published @

上帝与罪恶问题

一、是“神爱世人”,还是“天地不仁”?

我有一位朋友新近皈依基督教之后,传教热情高涨,给我发来一幅四格漫画。内容大致是某个人在路上行走,忽然被前方不知何处飞来的小石块砸中脑袋。继续前行,迎面的飞石越来越多,行人终于忍不住破口大骂:“主啊!我平日信你爱你,虔心拜你,怎么你却任我遭受这般苦难,无动于衷?”边骂边走到了下一格,才发现原来慈爱的天父一直以来都站在路的尽头,张开双臂竭尽全力地遮挡前方密密麻麻飞来的石头。绝大多数飞石都砸在他的脸上身上,只有极少数漏网之鱼才命中行人。行人大惭。

我回信问这位朋友:“发这个给我,什么意思?”

阅读全文 »

Published @