惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
Recorded Future
Recorded Future
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The GitHub Blog
The GitHub Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Microsoft Azure Blog
Microsoft Azure Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
M
MIT News - Artificial intelligence
云风的 BLOG
云风的 BLOG
Y
Y Combinator Blog
N
News | PayPal Newsroom
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Help Net Security
Help Net Security
博客园 - Franky
SecWiki News
SecWiki News
Recent Announcements
Recent Announcements
T
Troy Hunt's Blog
The Register - Security
The Register - Security
The Last Watchdog
The Last Watchdog
Webroot Blog
Webroot Blog
S
Security Affairs
博客园 - 司徒正美
S
Schneier on Security
I
InfoQ
博客园_首页
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Threat Research - Cisco Blogs
Forbes - Security
Forbes - Security
腾讯CDC
N
Netflix TechBlog - Medium
N
News and Events Feed by Topic
Cloudbric
Cloudbric
T
The Exploit Database - CXSecurity.com
P
Proofpoint News Feed
A
About on SuperTechFans
Engineering at Meta
Engineering at Meta
Recent Commits to openclaw:main
Recent Commits to openclaw:main
B
Blog
V
Vulnerabilities – Threatpost
C
Check Point Blog
Google DeepMind News
Google DeepMind News
Google Online Security Blog
Google Online Security Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Hacker News - Newest:
Hacker News - Newest: "LLM"
C
Cisco Blogs
Schneier on Security
Schneier on Security
O
OpenAI News
K
Kaspersky official blog

mephisto.cc

修复rime-ice无法弹出候选框的问题 开机滚动字体显示优化 个人网站安全防护 树莓派上部署Vaultwarden 使用goaccess实时分析Caddy日志 个人网站监控 Hugo全站AVIF记 Linux下尝试使用Godot开发小游戏 Arch linux dae 透明代理 Airflow接管galler-dl下载任务 如何使用gallery-dl批量下载图像 Arch核显下如何愉快玩Dota2和CS2 Arch/labwc 环境网络相关设置 Rime添加dota2词库 Arch 重装记录 Supertuxkart iOS版终于发布了 打造自己的流媒体音乐服务 剪切板管理工具clipcat推荐 MangoHud性能监控 Rofi试用 解决Arch下VSCode无法输入中文的问题 独立窗口管理器下无法录屏问题处理 上海市二手房成交数据监控 OpenLDAP监控 Arch linux如何顺畅连接蓝牙设备 使用Git和Ansible管理配置文件 Arch Linux SSL VPN 客户端配置 简单获取celery任务实时结果 Arch linux下iNode客户端的安装和使用方法 券商费率调整记 迷你主机组装记 Labwc更换定制皮肤 树莓派跑分流代理 实用自动代理配置示例 九年老鼠标复活记 Openvpn示例 Mac下如何旋转webp图片 如何隐藏Vscode中Markdown PDF插件的头部内容 解决Linux下网络配置无法变更保存的问题 labwc环境启用wlogout Ubuntu下新官方微信尝鲜 简单检测用户是否开启广告屏蔽 Atuin ZFS下卡顿问题解决 Wine安装64位微信 Fish 和 Atuin使用记 Fastapi简单实现临时下载链接 Fastapi微信公众号开发简要 Hugo根据语种展示不同内容 如何修复Waybar微信图标错误 信封加密简要 Linux环境下维护公众号记录 快速隐藏和呼出终端 Wayland环境自动切换壁纸 SuperTuxKart 试玩 简单抓取雪球股票快讯 为什么你的kill命令不能列出信号表 Wine安装微信保姆教程 Hysteria科学上网简要 Ubuntu 23.10 钉钉无法启动解决方法 网站导航栏防止插入Adsense自动广告 Linux环境按键检测 Hugo文末添加最后修改时间 Wayland环境ksnip无法复制问题解决 我眼中的股票市场 Caddy简单图片防盗链 greetd和regreet使用教程 Wayland环境下截图加后期修改 Wayland 环境下gif录屏 Firefox的一些有趣功能 Ubuntu 切换系统语言 Firefox 标题栏高度调整 网站添加回到顶部功能 Hugo自定义字体 Labwc 便捷配置 Wofi使用教程 窗口管理器labwc使用记 文件共享软件Dufs推荐 Hugo静态站点接入Adsense广告 Fcitx5配置详解 Ubuntu安装chrome的方法总结 一种Xterm.js的全屏方案 Google网址收录api Python示例 手机听离线音乐 Snipe it资产导入 应用启动器yofi使用配置 Snipe it资产管理系统安装使用 Ubuntu开机启动加速 Vue3 vite TypeScript跨域等相关设置 Ubuntu手动升级Libreoffice Ubuntu设置alacritty为默认终端 简体文章批量转换为繁体 使用Inkscape调整svg图片大小 实用命令 使用mitmproxy给手机app抓包 Python中rstrip方法细解 Github同主机多仓库部署deploy key问题处理 Linux安装最新版本Python KeePassXC使用教程 Ubuntu 22.10连接蓝牙耳机报错br-connection-profile-unavailable解决方法 Caddy日志配置轮转和格式化
微信小程序开发记
2025-08-01 · via mephisto.cc

1. 背景故事

自从几年前开了个人网站后,每次发文章顺带更新公众号,在公众号后台有微信小程序相关设置,公众号没什么新鲜的,给我的感觉就是网站那一套换了个皮,中文互联网有百度这个毒瘤把控入口,还有备案什么的政策限制,生出个公众号理所当然,母语是英文的人做网站基本没什么障碍,比如很多印度人就能开网站通过Adsense赚钱。小程序倒是非常有中国特色,一定程度上摆脱了国外操作系统生态控制,于是想尝试下利用业余时间开发个小程序给自己用。

谁能想到,小程序出来8年了,其开发者工具都不支持 Linux 平台,对我来说,这是最大障碍。有几次我准备开始的时候,远程连接到一个Mac Pro 14上,卡得不行,只好放弃,总不能为了一碟醋整盘饺子,去买个Mac设备。

直到前阵子偶尔发现 AUR 仓库中的 wechat-devtools-git 包,尝试了下可用,那可比远程到老旧Mac电脑上开发爽多了。

截图证明:

wechat-devtools-git

2. 开发小程序的目的

  • 接触各种技术生态,锻炼能力;
  • 做工具给自己用;
  • 想办法脱离中大陆的公司搞钱,打工苦打工累的时候,你会理解的,小程序能接广告,程序写好了,基本变动很少,不像公众号码字都很费劲,省心;
  • 能少玩游戏。

3. 初始版本开发

  • 程序开发:

    看了点官方教程和B站上的视频,在AI的加持下,初始版本差不多几个小时就完成了,出乎意料的顺利。毕竟小程序也就是变种 js + html + css,也可能是很久前,我就开始琢磨要做的是什么了吧。

  • 小程序头像制作:

    先让AI帮我生成基本图片,然后使用GIMP 和 Inkscape进一步处理,编辑图片的能力日渐长进。

  • 小程序备案:

    没错,小程序也是要备案的,一切都在掌握之中,不服的话,各种功能受限,基本做不了。备案就是要等各地通管局审批,没有进度提示的,你等着就好了,不服也是不行的。好处是不要钱,如果这也算好处的话🤷‍♂️...

  • 微信认证:

    这个说实在话,应该改名叫微信服务费,就像苹果开发者也要每年收费一样。个人每年¥30,赚不回来这30块,就只能一直亏本、放弃或者只给自己用,毕竟流量是腾讯的,收钱有门槛,一定程度上也有道理。我看有很多去水印的小程序,应该使能收回本钱的。微信认证后,别人才能搜到你的小程序。

  • 服务端

    微信小程序相当于个前端,当然如果简单的全是静态内容,那没什么好说的。后端因为我有网站,丐版vps、域名什么的。证书也是caddy自动申请的,对我来说,没有额外成本。你也可以用付费使用腾讯的配套云服务,人穷,我都是全部自己搞定的。

从上面可以看出,除了给个30块服务费,理解下政府监管,剩下的就看你自己造化了。前几天看到个图片,企业盈利达到几百万门槛后,交税25%,4块收1快,这么一想是不是会释然很多。

4. 优化

  • 前端优化:

    AI辅助编程,有时候写得很啰唆、样式不好看等,都需要自己把关调整下。

  • 后端优化:

    一开始后端接口我用fastapi实现,发现返回比较慢, 压测方法如下所示:

    1echo "GET http://localhost:8000/api/xxx_your_api" | vegeta attack -duration=10s -rate=100 | vegeta report
    

    因为服务器在外国,慢的时候要几百ms,让AI换成Golang版本的,有很大改观,但是个别时候不稳定,不知道是不是gc的原因。

    又让AI换了个 rust 版本的,非常稳定,几乎没有特别慢的,除非网络抖动,内存和cpu占用也有所减少,简直丐版服务器福音啊。于是我先用fastapi实现基本逻辑,再让AI帮忙换成 rust 版本部署到服务器上。这里不得不说,二进制部署相比Python部署就是好,放上去,用systemd接管就完事了。

  • 压缩:

    对于微信小程序来说,后端返回数据用个高效压缩算法果非常显著。

     1
     2# response
     3access-control-allow-credentials: true
     4alt-svc: h3=":443"; ma=2592000
     5content-encoding: br
     6content-length: 2225
     7content-type: application/json
     8date: Fri, 01 Aug 2025 10:42:50 GMT
     9vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers
    10vary: Accept-Encoding
    11via: 1.1 Caddy
    12
    13
    14# request
    15:authority: stock.mephisto.cc
    16:method: GET
    17:path: /api/meta/info
    18:scheme: https
    19accept: */*
    20accept-encoding: gzip, deflate, br
    

    上面的示例可以看出,微信默认是不支持zstd压缩,至少我没搞定也没搜到解决办法。只能退而求其次选用 br,比默认的gzip好一点。从 response 中看出 br 压缩生效。

    Caddy 默认是不支持 br 压缩的,得打上额外的包,br 包有两个版本,要选cgo性能高的版本。这种情况,压缩在web server层做比在后端做好。

    1CGO_ENABLED=1 \
    2xcaddy build \
    3    --with github.com/dunglas/caddy-cbrotli \
    4    --with github.com/mholt/caddy-ratelimi
    

    Caddyfile 里面这样写,会按顺序依次优先配备。

  • 安全防范

    网络世界,安全威胁始终存在,细心的同学就能注意到上面 xcaddy 额外编译了 ratelimi 模块,用来限流限速的。不会的可以看看对应的github文档,要花时间理解。

    此外我还加了接口认证,也是在 Caddy 层面做的,只接收来自小程序本身的接口请求,在服务器上 tcpdump 抓包就能看到微信小程序请求有些什么特征,识别特征,针对性放行。

  • 逻辑变更

    由于微信发版是要审核的,快的时候40分钟,慢的时候一天多或者几天,部分逻辑适合写在后端的,还是会方便很多,后端自己能完全掌控,随便发版的。劣势是会多了网络开销,看自己取舍了。

5. 推广

小程序我目前还没有完全打磨好,还在想法添加功能,内容也是来自github公共仓库,所以也没打算外部推广,只在自己网站文末加了二维码展示,有兴趣的可以扫码试试看,随缘吧。

当然,能赚点钱更加好,至少能赚回¥30快成本费用,还没算时间付出。