CAPSOLVER
博客
如何使用Node.js解决Cloudflare Turnstile验证码

如何使用 NodeJS 解决 Cloudflare Turnstile 验证码

Logo of CapSolver

Lucas Mitchell

Automation Engineer

08-Dec-2025

Cloudflare Turnstile 概述

Cloudflare Turnstile 提供了一种免费的解决方案,用于替换传统的CAPTCHA,通过一个简单的代码片段提供无烦恼的网页体验。它确保访问者是真实的用户,并防止滥用,而不会出现传统CAPTCHA相关的数据隐私问题或糟糕的用户体验。

识别Cloudflare Turnstile CAPTCHA

  • 非交互式挑战:该过程无需用户交互。示例:非交互式测试

  • 最小交互式挑战:如果系统怀疑访问者可能是机器人,可能需要简单的操作,如点击按钮。示例:管理测试
    Cloudflare Turnstile Captcha

  • 不可见挑战:该挑战在网页的HTML中悄然加载,用户无法察觉。示例:不可见测试

🛠️ 解决Cloudflare Turnstile CAPTCHA

⚙️ 前提条件

  • 已安装 NodeJs
  • Capsolver API 密钥

🤖 步骤 1:安装必要的包

执行以下命令以安装所需的包:

python 复制代码
npm i axios

👨‍💻 步骤 2:NodeJS 代码解决 Cloudflare Turnstile CAPTCHA

以下是一个Python示例脚本,用于完成该任务:

js 复制代码
const axios = require('axios');
const CAPSOLVER_API_KEY = "你的API密钥";
const PAGE_URL = "网站 ";
const WEBSITE_KEY = "网站密钥";

function solvecf(metadata_action = null, metadata_cdata = null) {
    const url = "https://api.capsolver.com/createTask";
    const task = {
        type: "AntiTurnstileTaskProxyLess",
        websiteURL: PAGE_URL,
        websiteKey: WEBSITE_KEY,
    };
    if (metadata_action || metadata_cdata) {
        task.metadata = {};
        if (metadata_action) {
            task.metadata.action = metadata_action;
        }
        if (metadata_cdata) {
            task.metadata.cdata = metadata_cdata;
        }
    }
    const data = {
        clientKey: CAPSOLVER_API_KEY,
        task: task
    };
    return axios.post(url, data)
        .then(response => {
            console.log(response.data);
            return response.data.taskId;
        });
}

function solutionGet(taskId) {
    const url = "https://api.capsolver.com/getTaskResult";
    let status = "";
    const checkStatus = () => {
        const data = { clientKey: CAPSOLVER_API_KEY, taskId: taskId };
        return axios.post(url, data)
            .then(response => {
                console.log(response.data);
                status = response.data.status || "";
                console.log(status);
                if (status === "ready") {
                    return response.data.solution;
                }
                return new Promise(resolve => setTimeout(resolve, 2000)).then(checkStatus);
            });
    };
    return checkStatus();
}

async function main() {
    try {
        const taskId = await solvecf();
        const solution = await solutionGet(taskId);
        if (solution) {
            const user_agent = solution.userAgent;
            const token = solution.token;
            console.log("User_Agent:", user_agent);
            console.log("解决Cloudflare Turnstile CAPTCHA,token:", token);
        }
    } catch (error) {
        console.error("CAPSOLVER API交互错误:", error);
    }
}

main();

⚠️ 修改这些变量

  • CAPSOLVER_API_KEY:从 Capsolver仪表板 获取你的API密钥。
  • PAGE_URL:替换为你要解决CloudFlare Turnstile CAPTCHA的网站URL。
  • WEBSITE_KEY:替换为网站的站点密钥

CloudFlare Turnstile CAPTCHA 的外观

Cloudflare Turnstile Captcha

同时,如果你想测试脚本的机器人特征,BrowserScan的Bot Detection工具可以帮助你识别并优化脚本中的机器人行为。


🔚 结论

Cloudflare Turnstile 提供了一种轻量级且隐私友好的传统CAPTCHA替代方案,通过有效过滤自动化流量来改善用户体验。借助Capsolver等工具,开发人员可以编程方式绕过Turnstile挑战,用于测试、爬取或自动化场景。通过遵循上述步骤并正确配置API参数,你可以快速将Turnstile解决集成到你的工作流中,轻松简化自动化请求。


❓ 常见问题

1. Cloudflare Turnstile 与传统 CAPTCHA 有什么不同?

Turnstile 专注于不可见且无摩擦的验证,无需用户交互,相比传统的基于图像的CAPTCHA,提供了更好的用户体验和隐私保护。

2. 使用 Capsolver 解决 Cloudflare Turnstile 是否需要代理?

不需要。示例使用的是 AntiTurnstileTaskProxyLess,意味着不需要代理。然而,在高安全或高吞吐量任务中,代理可能仍然有用。

3. 如何找到 Turnstile CAPTCHA 的 websiteKey

在浏览器中打开网页 → 检查 → 搜索 turnstile 片段 → data-sitekey 值即为你的 网站密钥

4. 此方法可用于大规模爬取或自动化吗?

可以,但请确保你的使用符合网站的服务条款。对于大量数据,建议处理延迟、轮换用户代理并使用适当的请求模式。

合规声明: 本博客提供的信息仅供参考。CapSolver 致力于遵守所有适用的法律和法规。严禁以非法、欺诈或滥用活动使用 CapSolver 网络,任何此类行为将受到调查。我们的验证码解决方案在确保 100% 合规的同时,帮助解决公共数据爬取过程中的验证码难题。我们鼓励负责任地使用我们的服务。如需更多信息,请访问我们的服务条款和隐私政策。

更多