全部文章

FourA 简报,2026年8月7日至8月14日

Auto 提取网站入口页面分配的 session,随后打开目标深层页面。Browser 在并发请求中清除 Cloudflare 复选框。

亮点

许多网站向所有人开放首页,但将深入点击的内容锁定。Auto 现在可以直接从前门进入:它获取入口页面分发的 session,然后携带它去请求你想要的页面。Browser 本周承担了更繁重的工作。当多个 request 同时到达同一页面时,它可以解决 Cloudflare 的复选框 challenge,并在页面保持拦截时报告其所见,而不是返回单一词汇。

最新动态

Auto 打开受 session 限制的页面

eBay 列表在我们的所有路由上都会拒绝冷 request。当 request 携带 eBay 首页分发给访客的 cookie jar 时,该 URL 即可打开。无需登录,无需借用账户,一切都与你在标签页中手动操作无异。

Auto 现在可以为你代劳。当出口到达源站但仍被拒绝访问深层页面时,Auto 会通过同一出口获取站点根目录,保留返回的 cookie,然后再次请求。response 会告诉你执行了此操作:成功的层级显示 warmup

但成本才是关键部分。返回的 session 具有可移植性,因此 jar 不会与获取它的出口绑定。后续读取通过 /api/proxy 重放,并在 /api/single 上消耗 2 个 credit。这与我们 关于 Cloudflare 清除机制的文章 中提到的升级后重放链相同,只是用供应商自己的 session cookie 代替了 cf_clearance

故意限制了范围:每个 request 尝试两次,在不同出口上进行,仅在深层 URL 已经失败后,且仅在出口最初已到达源站时执行。因此,直接拦截我们的站点只会产生两次额外的子调用,而不是循环。关于阶梯如何选择层级的更多信息,请参阅 Auto 说明文章

Browser 在 request 重叠时清除复选框 challenge

Browser 现在可以在对同一页面进行并发 request 时解决 Cloudflare 的复选框组件。在受 Turnstile 保护的新闻站点上同时进行三次请求的耗时:5.2 秒,5.8 秒,9.1 秒。

同时附带了两个较小的更改。只有当组件实际消失时才计算一次点击,因为 Cloudflare 重新发出 challenge 的频率比预期的要高 (第一次点击通常不是对话的结束)。被清除的页面会在执行清除的调用中报告 defenseSolved: true,该调用也是计费以解决问题的调用。

被拦截页面会告诉你求解器看到了什么

"Timeout" 会将问题指向延迟。大多数情况下延迟并非问题所在,答案就在下一个出口。

当 Cloudflare 拒绝求解时,它会重新发出 challenge 并将自己的重试标记放入 jar 中。Browser 会读取该标记。它不会等待时间耗尽,而是在约 17 秒内回复,指明供应商,进行的点击次数以及是否获得清除权限:

Timeout after 12s: the cloudflare challenge did not complete from this exit
(2 checkbox presses, clearance granted, challenge re-issued by the site)

其中一行告诉你用不同的方式发送 request。另一行则什么也没说。

来自 API 层的错误信息现在也更加直白。超出等待时间的 request 会返回 timeout,无法访问的服务会返回 unavailable,当 request 根本没有使用 proxy 时,两者都不会被描述为 proxy 问题。timeout_ms 在 Browser 调用中被完整保留至 API 允许的 120 秒,因此响应缓慢的目标节点能获得你设置的预算时间,你读取的是引擎本身的判断,而不是网关的判断。参数列在 API 参考中。

账单详情以及在开票当月更正发票

保加利亚发票在收件人框中打印公司代表 (MOL)。系统里没有任何收集该信息的机制,因此该行以前总是空白的。账单详情现在包含了此字段。

发票表格现在还为仍在开票当月内且冻结详情与当前账单配置文件不同的发票提供“更新详情”功能。对话框列出了每个发生更改的字段及更改后的内容,并明确说明发票号、日期和金额保持不变,确认即表示你同意我们在后台记录此操作。如果在修改窗口期内没有需要更改的内容,发票会显示“可编辑至”及其日期,这样你就可以直观看到这个窗口期,而不是事后才发现。

底层细节

Dashboard 运行的每个脚本都由我们自己的源站提供,登录后只会重定向到本网站的路径。

渲染服务的发布每次只在一台服务器上进行,并且每台服务器必须在成功提供真实的页面后,才会进行下一台的发布。

在状态门户上,issues endpoint 通过其公共 API 提供未解决和已解决的事项,与页面列出的内容一致。

一个能指出自身原因的拒绝算作一次调用。以“Timeout”结束的等待是关于下一步尝试的猜测,并按相同价格付费。错误也是产品的一个界面,本周我们开始像对待产品界面一样对待它们。