ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

反爬对抗指南:degoog的4种出站传输——curl-impersonate、FlareSolverr与真实浏览器会话

反爬对抗指南:degoog的4种出站传输——curl-impersonate、FlareSolverr与真实浏览器会话 反爬对抗指南degoog的4种出站传输——curl-impersonate、FlareSolverr与真实浏览器会话【免费下载链接】degoogSearch engine aggregator with a comprehensive plugin/extension system项目地址: https://gitcode.com/gh_mirrors/de/degoogdegoog是一款自托管的开源搜索引擎聚合器它把多个搜索引擎的结果汇总到一个页面。为了让它稳定地抓取各家引擎degoog 内置了反爬对抗的核心组件——出站传输Transport从fetch、curl、curl-impersonate、自动回退到官方扩展FlareSolverr与真实浏览器会话共 4 类对抗手段。本文将带你快速看懂每种传输的原理与选型方法。为什么搜索引擎聚合器需要反爬对抗degoog 的工作方式是服务端代表你去查询各个搜索引擎。而现实是——被查询的网站会反击。Transports exist because the sites we query fight back. 传输之所以存在是因为我们查询的站点会反击。 —— AGENTS.md常见的反击手段包括TLS 指纹识别通过加密握手特征识别出你不是浏览器直接返回 403限流短时间多次请求返回 429Cloudflare 质询页要求执行 JavaScript 挑战才能放行间歇性 502/503对可疑客户端返回代理错误。degoog 的解法是把发请求的方式抽象成可插拔的传输层你可以按引擎单独指定用哪种方式出站。四种传输总览一张表看懂degoog 内置了 4 个传输注册在 src/server/extensions/transports/registry.ts传输名称原理适用场景1️⃣fetchFetchBun 原生网络栈零依赖日常抓取最快2️⃣curlCurl系统 curl 子进程原生 fetch 被针对时3️⃣curl-impersonateCurl Impersonate伪装Firefox 的 TLS 指纹被 TLS 指纹封禁4️⃣curl-fallbackCurl Fallback自动先 fetch遇 403/429/502/503 自动换 curl 重试懒人默认档此外FlareSolverr和真实浏览器会话作为扩展生态中的高级选项覆盖更极端的对抗场景。在设置页切换传输所有传输都可以在设置页的传输标签中查看与管理界面把内置传输和自定义传输分组展示逻辑见 src/client/settings/transports/tab.tsx每个引擎还支持outgoingTransport配置项让你按引擎单独指定出站方式——比如给某个反爬严格的引擎单独指定 curl-impersonate其余引擎继续用最快的 fetch。传输一curl-impersonate —— 伪装 Firefox 的 TLS 指纹很多反爬系统不看你的 HTTP 请求头而是看TLS 握手指纹加密套件顺序、扩展列表等。普通 curl 的指纹和 Firefox 差异巨大一眼就被识破。curl-impersonate是一个魔改的 curl它能逐字节复刻 Firefox 的 TLS 指纹。degoog 的实现在 src/server/extensions/transports/builtins/curl-impersonate/index.tsUses curl-impersonate to mimic Firefox TLS fingerprints. Helps with endpoints that block based on TLS fingerprinting. 使用 curl-impersonate 模拟 Firefox 的 TLS 指纹帮助应对基于 TLS 指纹封禁的端点。它还做了两件贴心事启动时探测二进制找不到curl-impersonate-ff可执行文件时会在设置页明确提示而不是默默失败独立 Cookie 命名空间会话 Cookie 存放在transport:curl-impersonate:cookies下与其他传输互不污染。一键安装脚本在 scripts/install-curl-impersonate.sh它会自动检测 CPU 架构amd64/arm64与 libc 类型gnu/musl下载对应版本并安装到/usr/local/binDocker 构建时也会调用它。传输二FlareSolverr —— 把 Cloudflare 质询交给专业解法遇到完整的 Cloudflare 人机质询页时伪造指纹也没用——页面会执行 JavaScript 校验。FlareSolverr是一个专门跑真实无头浏览器来过质询的服务degoog 把它做成了官方传输扩展。在迁移文件 src/server/migrations/2026-05-canonical-ids-migration.ts 中可以看到它的规范 IDdegoog-org-official-extensions-flaresolverr-transport。使用方式很直接在设置页的扩展商店中安装 FlareSolverr 传输扩展从 git 仓库拉取启动一个 FlareSolverr 服务容器并在扩展设置中填写地址把反爬严格的引擎的出站方式指向它。质询页会被发送到 FlareSolverr它用真实浏览器跑完后把通行证Cookie 带回来degoog 再用这个 Cookie 继续正常请求。传输三真实 Firefox 浏览器会话 —— 终极保真度如果某站点同时校验 TLS 指纹、JS 环境、鼠标轨迹……最稳妥的办法就是让一台真 Firefox 替你干活。degoog 通过WebSocket与浏览器端扩展建立长连接服务端把打开页面、等待加载完成、读取内容等指令通过消息队列发给浏览器执行。核心会话逻辑在 src/server/extensions/transports/ws-session.ts支持seqid序号配对请求与响应默认 30 秒超时dom_ready/dom_load_fail事件精确等到页面 DOM 加载完成再取内容避免抓到质询页半成品。传输扩展只要实现wsHandler注册器就会自动挂载 WebSocket 端点见 src/server/extensions/transports/registry.ts 中的mountTransportWs调用对应的端点注册在 src/server/extensions/transports/ws-registry.ts。相关测试覆盖在 tests/transports/ws-session.test.ts。⚠️ 代价也很明显需要一个常驻的浏览器实例资源开销最大。建议只给最难的少数引擎使用。传输四curl-fallback —— 自动回退的省心档日常使用最推荐的是自动档。它的逻辑只有几行见 src/server/extensions/transports/builtins/auto/index.ts先用最快的Bun 原生 fetch发请求如果返回403 / 429 / 502 / 503典型的反爬信号立即用curl重试同一请求。对新手来说这一档覆盖了绝大多数场景无需理解前面几种传输的细节。选型建议按场景选传输你的场景推荐传输理由个人使用、低流量curl-fallback自动快且省心被针对时自动切换某引擎返回 403疑似 TLS 指纹封禁curl-impersonateFirefox 指纹伪装成本极低遭遇 Cloudflare JS 质询页FlareSolverr专业过质询Cookie 自动带回反爬极严、需要完整 JS 执行环境真实浏览器会话保真度最高代价最大几个实用提示按引擎配置不必全站统一用outgoingTransport给每个引擎单独指定把重武器留给最难的引擎压测验证仓库自带 scripts/stress-rate-limit.sh可在更换传输后验证限流表现可扩展注册器会从扩展目录加载第三方传输src/server/extensions/transports/registry.ts你甚至可以自己写一个。写在最后degoog 把反爬对抗做成了一套可插拔的传输层轻量的 curl-impersonate 应对指纹识别FlareSolverr 专克质询页真实浏览器会话作为最终底牌而自动回退档兜底日常使用。理解这 4 种传输的区别你就能让自己的搜索引擎聚合器在面对各家反爬系统时游刃有余。更多安装与配置细节可参考 README.md 与 AGENTS.md。【免费下载链接】degoogSearch engine aggregator with a comprehensive plugin/extension system项目地址: https://gitcode.com/gh_mirrors/de/degoog创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表