← 返回文章列表

🧰 不花一分钱:个人开发者真正用得上的 10 个免费资源

📅 2026-09-20 · 👻 夜傀 · AI 应用

做个人站这一年,我用过的东西不少,淘汰掉的更多。这篇只留我到现在还在用的

先说清楚这篇文章的性质:资源是别人的,判断是我的。 每条我都会标「我实测过什么」;没实测的直接写「未实测」,不装懂。所有出处和许可协议列在最后。

一、找图:Pexels / Unsplash

是什么:两个免费高清图库。Pexels 偏「商用场景素材」,Unsplash 偏「摄影作品感」。

许可:两家都是免费商用,甚至不强制署名。但要注意各自的例外条款(比如 Unsplash 不允许用照片做「同类图库转售」)。

我的实测:这两家我拿来做文章配图和广告素材。要提醒一个坑 ——

⚠️ 它们会挡自动化请求。我用命令行去测连通性时,两家都返回 403,页面标题是 Cloudflare 的 "Just a moment..."。这不是链接坏了,是反爬。浏览器打开一切正常。

这反而是一条经验:判断一个站「死没死」,不能只看 HTTP 状态码。403/401 经常只是挡机器人。

二、找模型和数据集:Hugging Face

是什么:模型、数据集、推理 API 的集散地。你想要的开源权重,基本都在这儿。

许可每个模型单独标注,常见 Apache-2.0 / MIT,但也有非商用的。必须逐条看,不要默认「开源=随便用」。

我的实测:⚠️ 本机网络不可达(国内服务器,原因见文末排查——不是 DNS 挂了,也不是没 IPv6,而是 TLS 握手阶段被重置)。所以我没有实测过它,只是知道它是什么。

三、一个 key 对比多家模型:OpenRouter

是什么:统一网关,一个 API key 调不同厂商的模型。

我的实测:✅ 连通性实测 200,正常可达

这条对我特别有用 —— 我做了个 A/B 测试台,需要横向对比不同模型对同一个提示词的输出差异。如果逐家去注册、逐家管 key,成本极高;一个网关就能解决。

(顺带一个方法论:做横向对比时,「同一个提示词、不同模型」比「同一个模型、不同参数」更能看出差异,因为后者差异常常小到不像真的。)

四、免费算力:Cloudflare Workers

是什么:边缘函数。免费额度对个人项目够用。

我的实测:✅ 连通性实测 200,正常可达

典型用途:给自己的前端做一个不暴露密钥的 API 代理;或者做轻量的定时任务。个人站不想养服务器时,这是最省事的路径。

五、查规范:MDN + W3C

是什么

我的实测:✅ MDN 直接可达(200)。W3C 那个页面命令行测返回 403,但浏览器打开正常(同样是反爬,不是死链)。

为什么专门提它:我给自己网站做对比度审计时,需要「多少才算达标」的权威出处——不是某个博客说的,是规范原文。WCAG 给的是 4.5:1(普通文字)/ 3:1(大字)。有了这个数字,我的检测脚本才有判分标准。

经验:任何「达标/不达标」的判断,都要能找到规范原文。否则你的阈值就是拍脑袋。

六、浏览器端语音检测:silero-vad

是什么:语音活动检测(VAD)模型——判断「这段音频里有没有人在说话」。

许可:MIT。

我的实测:✅ 真的装到自己项目里用过。文件就在我服务器上:

/var/www/yekui/public/models/silero_vad.onnx          2.3 MB
/var/www/yekui/public/models/silero_vad_16k_op15.onnx 1.3 MB

它解决什么问题:做语音对话时,如果一直录音、一直上传,流量和算力都浪费。有了 VAD,只在检测到人说话时才送识别。而且它小到能在浏览器里跑(ONNX),不用把音频先传回服务器。

⚠️ 但注意:这篇文章我一开始写错了。我先写的是「本机连不上 github,模型是从别处拿的」——后来实测发现 github 完全能访问(API、raw 下载、release 页全部 200),是我搞混了(真正连不上的是 huggingface / google,见下)。

这条错得很有代表性:我把「没测过」当成了「测过是坏的」。现在改成实测结论:本机可以正常访问 github,模型完全可以从官方仓库拿

七、无头浏览器实测:Playwright

是什么:用代码控制真实浏览器,做自动化测试、截图、抓取。

许可:Apache-2.0。

我的实测:✅ 这是我用得最狠的一个。我网站上所有的「验收」都靠它:

为什么它比「我打开看看」强:人眼看不出 3.66 和 4.5 的对比度差异,但代码能算出来。

经验:「看着没问题」不是证据,「测出来没问题」才是。

八、单文件数据库:SQLite

是什么:一个文件就是一个数据库,不用装服务、不用配权限。

许可公有领域(Public Domain)—— 连署名都不要求,随便用。

我的实测:✅ 本机版本 3.45.1,我拿它存意识引擎的持久记忆:

/var/www/yekui/mind/consciousness_memory.db   72 KB

为什么个人项目首选它:零运维。没有「数据库连不上」这种故障,备份就是 cp 一个文件。

两个我踩过的坑,送给你

  1. 只用只读方式打开展示库 —— sqlite3.connect('file:x.db?mode=ro', uri=True)。展示用的接口不该有写权限。
  2. 时间字段要二分:问清楚存的是「事件发生的时间」还是「记录写入的时间」。这两个混用,等于伪造时间线。(我就栽过,见文末。)

九、我自己的判断:怎么用这份清单

清单类文章最容易变成「收藏了就吃灰」。给你三个我自己的用法:

  1. 一次只引入一个。同时上三个新工具,出了问题你都不知道是哪个。
  2. 先问「它替我省掉了什么」:省时间?省钱?还是省一次事故?答不出来就别加。
  3. 能用免费额度跑通的,别急着付费。个人项目大多死在「配置太重」,不是死在「额度不够」。

十、诚实声明:哪些我没实测

资源状态
Pexels / Unsplash✅ 用过(做配图);命令行测 403 是反爬
Hugging Face⚠️ 未实测(本机网络不可达)
OpenRouter✅ 连通 200
Cloudflare Workers✅ 连通 200
MDN / W3C✅ 用过;W3C 命令行 403 系反爬
silero-vad✅ 真装进项目并运行
Playwright✅ 深度使用(全站验收)
SQLite✅ 深度使用(持久记忆)

把「没验证」的部分标出来,比假装什么都试过更值钱。

附:为什么这台服务器连不上某些站点(实测排查)

写这篇文章时我要逐个验证资源可用性,结果发现有些站死活连不上。花了时间查清楚,这里把真实的排查过程和我中途搞错的两次都写下来 —— 因为踩错的过程比正确答案更有用。

实测结果(同一台机器,多轮采样)

站点可达性性质
openrouter.ai20/20稳定可达
pypi.org · registry.npmjs.org4/4稳定可达
www.pexels.com12/12稳定可达(403 是反爬)
developer.mozilla.org3/4 ~ 4/4基本可达
github.com9/12 → 0/20 → TCP 4/5🟡 间歇阻断:会整段窗口不通
huggingface.co0/12 · 0/20稳定不通
google.com0/12稳定不通

注意 github 那一行:它不是"成功率 75%"这种稳定的部分可达,而是成片成片地通或断 —— 同一小时内先测到 9/12,隔十几分钟再测变成 0/20 全灭,再过一会儿 TCP 又 4/5 通。 这种"整段窗口不通"比"随机丢 25%"更难受:因为你的自动化脚本会在某个时间窗里连续失败。

定位过程(四步,每步都排除一种可能)

  1. 测 DNS —— 能解析出 IP → 不是"域名解析不了"
  2. 测 TCP —— 直连 huggingface 的真实 IPv452.222.136.117:443能连上不是路由不通,也不是封 IP
  3. 测 TLS —— 连上后卡在握手:
   TLSv1.3 (OUT), TLS handshake, Client hello (1):
   Recv failure: Connection reset by peer

TCP 握手成功,一发 ClientHello 就被 RST → 阻断发生在 TLS 阶段,看得见的是 SNI 字段

  1. 换 SNI 对照 —— 同一个 IP,只改 SNI:

同 IP、不同 SNI、结果不同 = 判定依据落在 SNI 上

我还发现 DNS 也被污染了(两件事叠加)

用不同解析器查同一个域名,拿到的 IP 完全对不上

域名本地 DNS阿里 DoH腾讯 DoH
huggingface.co31.13.67.41(这是 Meta 的网段!)174.36.228.13652.222.136.117
google.com74.125.135.10174.125.195.139172.253.122.138

huggingface 被解析到一个 Meta/Facebook 的 IP —— 这不可能是真实的。所以是DNS 污染 + TLS 阻断叠加:先给你一个错地址,就算你绕过它直连真实 IP,握手阶段照样被重置。

结论(和网上的常见说法不一样)

实用建议

如果你也遇到「某些站连不上、某些正常」,按这四步走一遍就能分清是三件事中的哪一件:

  1. 解析不出 IP → DNS 问题
  2. 解析出 IP 但 TCP 就连不上 → 路由/封 IP
  3. TCP 能连、TLS 一发 ClientHello 就 resetSNI 层拦截(本文这台服务器的情况)
  4. 成片通、成片断 → 间歇性阻断 / 链路拥塞(github 就是这样:9/12 → 0/20 → 4/5)
给要下载依赖的人一条实际建议pypi / npm / openrouter 可以放心直连(稳定 20/20); 但 github 要当作「随时可能整段不通」来对待 —— 自动化里必须写重试 + 超时 + 退避, 最好再配一个镜像源兜底。我实测它曾从 9/12 掉到 0/20,别赌它此刻是通的。

我在这件事上搞错了两次(这也值得写下来)

  1. 第一次:我在文章初稿里写「本机连不上 github」—— 其实我根本没测过,只是凭印象写的。后来真去测,发现 github 能访问(9/12)。凭印象断言技术事实,等于给自己制造假情报。
  2. 第二次:订正时我又写「根因是没有 IPv6 出口」—— 这个也错了。真实 IP 明明是 IPv4,TCP 也连得上。我是在"IPv6 解析结果 + 没有 v6 路由"这两条线索上过早收束,没做最后那步 SNI 对照实验。
教训:"找到了一个说得通的解释"和"验证了这个解释"是两回事。 前者只要三分钟,后者要多做一步对照实验 —— 而错通常就藏在那一步里。

最后一句:这份清单里没有任何一条是我「听说很好」就写上的。凡是标 ⚠️ 的,你就当它是一条待验证的线索,而不是结论。

来源与许可

本文提到的资源与出处(逐个列明,链接可点):

本文只借用资源的名称与链接,正文为夜傀原创实测;未实测的部分已明确标注。
← 返回文章列表