一个未处理的 CapSkip 异常就会让 .NET BackgroundService 主机停止,而且进程以退出码 0 退出,所以 Windows 永远不会重启这个服务。本文给出一个后台程序:它用 CapSkip 识别 reCAPTCHA,能等到尚未启动的识别工具就绪,还能干净地停止。
如何用 PHP 和 Symfony BrowserKit 识别 Capy Puzzle
Symfony 的 HttpBrowser 会保留 cookie,也会发送 Referer,但它的表单对象不接受小组件从未写入的那三个 capy_ 字段。本文给出完整的 PHP 代码:用 CapSkip 识别 Capy Puzzle,再改用 request() 提交答案。
如何在 MechanicalSoup 中识别 reCAPTCHA 并提交表单
MechanicalSoup 从不运行小组件的 JavaScript,所以表单里缺少 g-recaptcha-response 字段,给它赋值会抛出 LinkNotFoundError。本文给出完整做法:用 CapSkip 识别 reCAPTCHA,亲手加上这个字段,然后提交表单,隐形 reCAPTCHA 和 v3 也一并涵盖。
如何用 Guzzle 和 cookie jar 在 PHP 中识别 CaptchaFox
Guzzle 默认不保存 cookie,不发送 Referer,还自称 GuzzleHttp/8,其中任何一点都可能让 CaptchaFox token 被拒绝。本文给出完整的 PHP 代码:用 CapSkip 识别小组件,再以签发该 token 的浏览器身份提交它。
如何用 cURL 和 DOMXPath 在 PHP 中识别 Friendly Captcha
新建的 cURL 句柄记不住会话 cookie,所以带 CSRF 保护的表单会拒绝一个完全正确的 Friendly Captcha token。本文给出完整的 PHP 代码:始终沿用同一个会话,从 script 标签判断是 v1 还是 v2,再提交 CapSkip 返回的 token,同时处理多个表单的情况也一并涵盖。
如何在 Jupyter 中识别验证码而不触发 asyncio.run 错误
Jupyter 内核本身已经在运行一个事件循环,所以 asyncio.run 会抛出 RuntimeError,Playwright 的同步 API 也会拒绝启动。本文给出在笔记本单元格中用 CapSkip 识别验证码的完整做法:安装、两种客户端、停止按钮、浏览器以及远程内核。
如何在 RQ 作业中识别验证码并越过 180 秒时限
RQ 给每个作业 180 秒,而一次 reCAPTCHA 识别最长可能要 300 秒,所以默认设置会在轮询中途杀掉较慢的识别,让它们白白作废。本文给出完整的 RQ 作业代码:用 CapSkip 识别并提交表单,超时、重试和 worker 都按需配置好,Windows 也一并涵盖。
如何在 Node.js 中识别 Capy Puzzle 并保持会话
Node 的 fetch 不保存 cookie,也不发送 Referer,所以用它提交的 Capy 答案可能会被当作会话已过期退回来。本文给出完整的 Node.js 代码:用 CapSkip 识别拼图,再按页面期望的方式提交全部三个值。
如何在 Symfony Panther 中识别 reCAPTCHA(PHP SDK)
Panther 无法把内容输入 reCAPTCHA 隐藏的 g-recaptcha-response 字段,而且在 Windows 上,它自己找到的 chromedriver 也启动不了。本文给出完整的 PHP 代码:用 CapSkip 识别小组件,用 executeScript 写入 token 并提交,带回调的页面也一并涵盖。
如何在 Node.js 中用正确的 user agent 识别 CaptchaFox
Node 的 fetch 会告诉每个服务器它的 user agent 是 node,这样提交的 CaptchaFox token 可能会被拒绝。本文给出完整的 Node.js 代码:用 CapSkip 识别小组件,再以签发该 token 的浏览器身份提交它。










