原生 iOS · linux.do 第三方客户端

把 linux.do
稳稳上 iOS。

以打穿 Cloudflare 盾、保持登录态、丝滑原生体验为第一目标而生。一整份帖子流,一次成版。

Android 抢先体验 iOS 即将上架 网关过盾 · 免挑战页 数据只留本机
λίθος
lithos · 以石为版
三条硬性优先级

不做全能,只把三件事做到位。

linux.do 社区用户最大的痛点,是第三方工具频繁撞上 Cloudflare 的挑战页与惩罚。Litho 围绕这一点重排了优先级。

01 · 地基

打穿 Cloudflare

所有网络请求都走「WebView 网关」,继承浏览器的 UA、Cookie 与 TLS 指纹,从根子上绕开挑战页。这是整个项目的地基。

看它怎么做到
02 · 体感

原生 iOS 体验

SwiftUI 外壳,帖子流用一整份 WebView 文档渲染,滚动交给系统,做到丝滑。

03 · 顺手

对齐网页端的交互

点赞、收藏、举报、回复、表情回应、聊天、私信、实时通知,网页能做的,这里也顺手。

核心架构 · Anti-CF 地基

不自己发请求,让浏览器替你发。

普通的 URLSession 或 curl 请求 linux.do 会直接吃 403。Litho 的解法是把请求交回给页面自身的 fetch()。

Swift 业务层 发起请求 TopicList / Reply / Reaction 等业务只调用一个入口。
WebView 网关 离屏 1×1 WKWebView 在页面上下文里调用页面自己的 fetch()。
继承浏览器身份 UA · Cookie · TLS 指纹 对 Cloudflare 而言,这就是一个真实浏览器。
通过网关 · fetch()
200 OK
同一时刻,网关稳定拿到真实 Discourse JSON。
裸 curl / URLSession
403
cf-mitigated: challenge。同一网络下直接被拦。

图片也过盾

头像、帖内图、徽章图在页面里 fetch 二进制、base64 回传给原生,再交给带缓存的 AvatarLoader。

挑战自愈

偶发撞盾时网关自动重载页面完成挑战并恢复请求,顶部状态横幅提示,无需重启 App。

实时通道

通过网关订阅 Discourse MessageBus 长轮询,驱动聊天、新回复与通知的实时推送。

λίθος
lithos · lithography
名字的由来

取自「石」,也取自「印」。

印刷,是把文字发布出去

linux.do 是一个以文字为核心的社区。整份帖子流被渲染成一整份文档、一次成版,正如平版印刷一次印出一整张版面,而不是一个字一个字地拼。

石,是地基与坚固

整个 App 立在一块地基上:WebView 网关。它像石版一样承载所有请求,原生、稳定,不被 Cloudflare 轻易撼动。

短而利落

两个音节、一个干净的古典词根,好记、好读,也好做成一枚印章。商店里它叫「Litho 拓本」,拓本正是从碑石拓下的墨本:白字,黑地。

以「石版」为底,把社区的文字稳稳印到原生 iOS 上。

功能一览

已经从 MVP 长成日常主力。

五个 Tab:话题、类别、聊天、标签、我的。以下每一项都跑在真实账号上。

阅读体验

  • 最新 / 热门 / 未读
  • 分类 · 标签
  • 整份帖子流一份文档渲染
  • 图 · 头像 · 徽章过盾加载
  • 代码块一键复制
  • spoiler 模糊显隐
  • 全屏图片查看
  • 双向分页 · 续读位置

互动

  • 点赞
  • 表情回应
  • Boost 打标签留言
  • 收藏 · 举报
  • 回复 · 引用
  • 投票
  • 编辑 / 删除自己的帖

实时

  • MessageBus 聊天
  • 新回复即时追加
  • 前台通知横幅
  • 后台系统通知直达楼层

个人中心

  • 统计卡片
  • 我的帖子
  • 浏览历史
  • 收藏
  • 私信收发
  • 草稿箱
  • 徽章
  • 积分排行榜
  • 信任等级
  • 关注 / 粉丝
  • 偏好 · 匿名
  • 空间管理

隐私与本地

随附 App 级隐私清单,数据只留在本机。GRDB 缓存断网回退,头像加磁盘缓存层。

  • PrivacyInfo.xcprivacy
  • GRDB 本地缓存
  • 头像磁盘缓存
  • 浏览历史仅存本机

一个约定:互动图标一律用矢量图标(SF Symbols / 内联 SVG,currentColor 驱动状态),从不在代码里写死 emoji 字符或表情包 PNG。选中态只是一次 CSS class 切换,不重渲染 DOM。

底层

一层网关,撑起所有网络。

SwiftUI 外壳 WKWebView 单文档渲染 WebView 网关 统一网络层 Discourse REST API MessageBus 实时长轮询 GRDB 本地缓存 UserNotifications + BGAppRefresh XcodeGen 工程管理 最低 iOS 17
Litho 拓本 · 即将上架 App Store

把社区的文字,稳稳印到你手上的屏幕。

iOS 17+ · 手机主屏显示「Litho」,商店名为「Litho 拓本」。