Skip to content

Releases: spot-probe/agent

v1.1.12

Choose a tag to compare

@github-actions github-actions released this 14 Oct 14:42

这一版把流媒体探测里四处与参考实现不一致的地方对齐了。四处都是逐行读参考源码读出来的,不是推断的。

Netflix 两页都说看不了的时候,是「仅自制」——能用,只是自制剧之外的内容看不了;此前我们报的是未解锁,于是一台只能看自制剧的机器显示成红的,会让人以为它整台被墙。相应地,地区也只在真正能用的时候才给:参考实现里未解锁与失败两档都不给地区,给了会让人以为还能看某些内容。

TikTok 的第二次请求此前被我们自己砍掉了:参考只把拦截页当作第一次请求的门,第二次照样发。我们多写了一道「被拦截就不发」,恰好砍掉了能拿到机房那一档的路径。同一处还有地区取值:参考那行正则的匹配是贪婪的,取到的其实是最后一处,我们取的是第一处。

取页层多修了一处:参考用命令行指定 Accept 时会替换浏览器的默认头,而我们是硬写一个再加一个,实际发出两个 Accept。顺带堵住了请求头里夹带 Host 与 Connection 的可能——那两行由我们自己的代码写,多带一份会让请求里出现重复。

ChatGPT 的 favicon 那次请求此前一个头都没带:参考带的是一整套(含 authorization: Bearer null、origin、referer 与一套浏览器标识)。这一处的影响不小——favicon 返回 403 是「API 不支持这个国家」的第二重确认,不带头的话对方多半回别的状态码,于是未解锁与仅 App 可用这两档结构性地到不了。

已知的偏离仍然保留并写在注释里:参考对只有一页说看不了的 Netflix 判为解锁,我们判没读明白;参考的地区形状只要求非空,我们要求两位大写字母。

v1.1.11

Choose a tag to compare

@github-actions github-actions released this 14 Oct 14:18

这一版把流媒体探测判据里四处会给出错值的地方修掉了。它们的共同点是:结论看起来很正常,但它是错的。

读不到标记。 YouTube 的解锁标记 ad-free 出现在页面的第 815,530 字节,而读取上限是 512 KB,所以那三个标记一个都读不到,判据永远给出"没读明白"。现在这个服务有自己的上限,并且读够了就收手;在真实页面上实测,读到第 819,200 字节就能定案。

把正文里的一个字符串当成了凭据。 旧的"中国版"判据是"响应正文里出现 www.google.cn"。而在生产那台位于美国的机器上,面板显示"中国区",正文里那个字符串却出现 0 次——同一页的 ad-free 在 815,530 字节处,它其实是一页正常的解锁页。现在这一档改由最终落在哪个主机判定,也就是"我们被跳到了哪里"这个可复核的事实;notgoogle.cn 与 google.cn.evil.example 这两种会被子串匹配误伤的情况有测试钉住。

相对跳转被当成了错误。 primevideo.com 的 302 给出的目标是一个相对路径,而取页代码只接受以 https:// 开头的绝对地址,遇到相对路径直接判死,于是这个服务整个取不到页。现在三种相对形式都会正确拼接,而"只跟 https"这条安全规则没有放松。

一次异常响应被记成了结论。 限流页、机器人页和网关错误页都是 200,正文很小,里面当然也没有我们要找的标记,于是判据会得出"未解锁",甚至"解锁"。现在有一道按实测选出的地板(8 KB:真实页面在 506 KB 到 944 KB 之间,一次限流的正文是 521 字节),明显不可能是产品页的响应一律判"没读明白"。同时补上三处出口:Netflix 不再把两个小页面读成"解锁";TikTok 去掉那个并不存在的"被墙"档(参考实现这一档是"失败",而它唯一给出"屏蔽"的分支是死代码);ChatGPT 补上"没读明白"这个出口——旧的写法是只要有一边请求不到就整条都不上报,面板上因此一片空白。这道地板只用于 HTML 页面,JSON 接口正常就只回几十个字节,不能拿页面尺度去量它。

改动让十条旧测试变红,逐条判断了原因:八条是夹具写得太小(那些测试本意是测判据,夹具却写成了几个字节的串),一条是语义该跟着改,还有一条抓住了新加助手的一个漏洞——把空正文补成页面尺度之后,判据会把它读成"两个正常页面"并判为解锁,而"正文是空的"是一个独立情形。

v1.1.10

Choose a tag to compare

@github-actions github-actions released this 12 Oct 15:31

Full Changelog: v1.1.9...v1.1.10

v1.1.9

Choose a tag to compare

@github-actions github-actions released this 11 Oct 15:06

Full Changelog: v1.1.8...v1.1.9

v1.1.8

Choose a tag to compare

@github-actions github-actions released this 11 Oct 13:10

Full Changelog: v1.1.7...v1.1.8

v1.1.7

Choose a tag to compare

@github-actions github-actions released this 09 Oct 15:48
2f1067b

What's Changed

  • release: 1.1.7 —— 自检通过后回报「已生效」,让成功也看得见 by @jacob-bytes in #13

Full Changelog: v1.1.6...v1.1.7

v1.1.6

Choose a tag to compare

@github-actions github-actions released this 09 Oct 15:09
342e7a9

What's Changed

  • release: 1.1.6 —— 只改版本号(给替换路径一个版本差) by @jacob-bytes in #12

Full Changelog: v1.1.5...v1.1.6

v1.1.5

Choose a tag to compare

@github-actions github-actions released this 09 Oct 14:42
e4f948c

What's Changed

  • release: 1.1.5 —— 只改版本号,为了让替换路径能被真的走一遍 by @jacob-bytes in #11

Full Changelog: v1.1.4...v1.1.5

v1.1.4

Choose a tag to compare

@github-actions github-actions released this 09 Oct 14:12
b0e7298

What's Changed

  • release: 1.1.4 —— 回滚日志写明版本方向 by @jacob-bytes in #10

Full Changelog: v1.1.3...v1.1.4

v1.1.3

Choose a tag to compare

@github-actions github-actions released this 09 Oct 13:04
5d0605c

What's Changed

  • ci: checkout 我们自己的 hub(拿我们自己的 e2e 脚本) by @jacob-bytes in #7
  • feat(agent): 远程升级的签名信任根与接收校验(A 期,不替换二进制) by @jacob-bytes in #8
  • release: 1.1.3 —— 远程升级的签名信任根与接收校验(首次签名发版) by @jacob-bytes in #9

Full Changelog: v1.1.2...v1.1.3