{"id":24537,"date":"2026-07-27T17:35:36","date_gmt":"2026-07-27T17:35:36","guid":{"rendered":"https:\/\/capskip.com\/puppeteer-captcha-solver\/"},"modified":"2026-10-11T06:16:26","modified_gmt":"2026-10-11T06:16:26","slug":"puppeteer-captcha-solver","status":"publish","type":"page","link":"https:\/\/capskip.com\/zh\/puppeteer-captcha-solver\/","title":{"rendered":"Puppeteer \u9a8c\u8bc1\u7801\u8bc6\u522b"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"24537\" class=\"elementor elementor-24537\">\n\t\t\t\t<div class=\"elementor-element elementor-element-66178d91 e-flex e-con-boxed e-con e-parent\" data-id=\"66178d91\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6851c86d elementor-widget elementor-widget-shortcode\" data-id=\"6851c86d\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\t\t<div class=\"capskip-landing capskip-landing--framework\" id=\"capskip-landing\">\n\n\t\t\t<header class=\"cskl-hero cskl-hero--split\"><div class=\"cskl-hero__inner\"><div class=\"cskl-hero__copy\"><span class=\"cskl-eyebrow\"><span class=\"cskl-mark cskl-mark--tile\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5.5 4h13a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3h-13a3 3 0 0 1-3-3v-10a3 3 0 0 1 3-3zM2.5 8.5h19M5.75 6.25h.01M8.24 6.25h.01\"\/><path class=\"a\" d=\"M9.5 11.5l6.5 2.4-2.8 1.2-1.2 2.8z\"\/><\/svg><\/span>Puppeteer<\/span><h1 class=\"cskl-hero__title\">Puppeteer CAPTCHA Solver for Node.js and puppeteer-extra<\/h1><p class=\"cskl-hero__lead\">Keep puppeteer-extra-plugin-recaptcha as it is, or await the capskip npm client, and headless Chrome gets an answer for reCAPTCHA, Turnstile, GeeTest v3 or a distorted text image, solved on your own PC with no meter per page.<\/p><div class=\"cskl-hero__cta\"><a class=\"cskl-btn cskl-btn--go\" href=\"https:\/\/capskip.com\/zh\/product\/trial-license\/\">Start free trial <svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4.5 12h15M13.5 6l6 6-6 6\"\/><\/svg><\/a><a class=\"cskl-btn cskl-btn--ghost\" href=\"#licenses\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M3.5 16.5a4 4 0 1 0 8 0 4 4 0 1 0-8 0M10.4 13.6 20 4\"\/><path class=\"a\" d=\"M17 7l2.5 2.5M14.5 9.5l2 2\"\/><\/svg>Buy a license<\/a><a class=\"cskl-btn cskl-btn--ghost\" href=\"https:\/\/github.com\/capskip\/capskip-node\" target=\"_blank\" rel=\"noopener nofollow\"><svg class=\"cskl-winglyph\" viewBox=\"0 0 16 16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z\"\/><\/svg>View on GitHub<\/a><\/div><div class=\"cskl-trust\"><span>Windows x64<\/span><i>&middot;<\/i><span>Runs locally, so no CAPTCHA leaves your machine<\/span><\/div><ul class=\"cskl-chips\"><li class=\"cskl-chip\">puppeteer-extra ready<\/li><li class=\"cskl-chip\">Promise-based npm client<\/li><li class=\"cskl-chip\">Unmetered headless runs<\/li><\/ul><\/div><div class=\"cskl-hero__visual\"><div class=\"cskl-box\"><div class=\"cskl-box__top\"><div class=\"cskl-mock cskl-mock--run\" aria-hidden=\"true\"><div class=\"cskl-mock__bar\"><span class=\"cskl-mock__lang\">signup.test.js<\/span><\/div><ul class=\"cskl-run\"><li class=\"is-ok\"><i><\/i>open \/signup<\/li><li class=\"is-ok\"><i><\/i>fill the form<\/li><li class=\"is-run\"><i><\/i>solve the CAPTCHA<\/li><li class=\"is-idle\"><i><\/i>submit<\/li><\/ul><div class=\"cskl-mock__out\"><span class=\"cskl-mock__ok\">&#10003;<\/span><code>4 passed<\/code><span class=\"cskl-mock__meta\">0 blocked<\/span><\/div><\/div><\/div><div class=\"cskl-cost\" data-cskl-cost data-rate=\"1.40\" data-price=\"35\" data-min=\"40000\" data-max=\"250000\"><div class=\"cskl-cost__head\"><span class=\"cskl-cost__lb\">CAPTCHAs a month<\/span><span class=\"cskl-cost__val\" data-cskl-vol>40,000<\/span><\/div><div class=\"cskl-track\"><span class=\"cskl-track__rail\"><\/span><span class=\"cskl-track__fill\" data-cskl-fill><\/span><span class=\"cskl-track__knob\" data-cskl-knob><\/span><input type=\"range\" min=\"40000\" max=\"250000\" step=\"1000\" value=\"40000\" autocomplete=\"off\" data-cskl-slider aria-label=\"CAPTCHAs a month\"><\/div><div class=\"cskl-track__sc\"><span>40.0k<\/span><span>250.0k<\/span><\/div><div class=\"cskl-bars\"><div class=\"cskl-bar cskl-bar--them\"><div class=\"cskl-bar__lb\"><span>Metered elsewhere, about $1.40 per 1,000<\/span><b>$<span data-cskl-them>56.00<\/span><\/b><\/div><div class=\"cskl-bar__rail\"><i data-cskl-thembar style=\"width:16.00%\"><\/i><\/div><\/div><div class=\"cskl-bar cskl-bar--us\"><div class=\"cskl-bar__lb\"><span>CapSkip Bronze, flat<\/span><b>$35.00<\/b><\/div><div class=\"cskl-bar__rail\"><i class=\"cskl-bar__flat\"><\/i><\/div><\/div><\/div><div class=\"cskl-keep\"><span class=\"cskl-keep__n\">$<span data-cskl-keep>21.00<\/span><\/span><span class=\"cskl-keep__t\"><b>stays in your pocket<\/b>every month, at this volume<\/span><\/div><\/div><\/div><\/div><\/div><div class=\"cskl-typestrip\"><div class=\"cskl-typestrip__inner\"><b>Also solves<\/b><a class=\"\" href=\"https:\/\/capskip.com\/zh\/cloudflare-turnstile-solver\/\">Turnstile<\/a><a class=\"\" href=\"https:\/\/capskip.com\/zh\/recaptcha-v2-solver\/\">reCAPTCHA v2<\/a><a class=\"\" href=\"https:\/\/capskip.com\/zh\/recaptcha-v2-callback-solver\/\">v2 Callback<\/a><a class=\"\" href=\"https:\/\/capskip.com\/zh\/recaptcha-v2-invisible-solver\/\">v2 Invisible<\/a><a class=\"\" href=\"https:\/\/capskip.com\/zh\/recaptcha-v3-solver\/\">v3<\/a><a class=\"\" href=\"https:\/\/capskip.com\/zh\/recaptcha-enterprise-solver\/\">Enterprise<\/a><a class=\"\" href=\"https:\/\/capskip.com\/zh\/image-captcha-solver\/\">Image CAPTCHA<\/a><a class=\"\" href=\"https:\/\/capskip.com\/zh\/geetest-solver\/\">GeeTest v3<\/a><a class=\"\" href=\"https:\/\/capskip.com\/zh\/capy-puzzle-solver\/\">Capy Puzzle<\/a><a class=\"\" href=\"https:\/\/capskip.com\/zh\/altcha-solver\/\">ALTCHA<\/a><a class=\"\" href=\"https:\/\/capskip.com\/zh\/captchafox-solver\/\">CaptchaFox<\/a><a class=\"\" href=\"https:\/\/capskip.com\/zh\/friendly-captcha-solver\/\">Friendly Captcha<\/a><a class=\"\" href=\"https:\/\/capskip.com\/zh\/aws-waf-captcha-solver\/\">AWS WAF<\/a><a class=\"\" href=\"https:\/\/capskip.com\/zh\/datadome-solver\/\">DataDome<\/a><a class=\"\" href=\"https:\/\/capskip.com\/zh\/mtcaptcha-solver\/\">MTCaptcha<\/a><a class=\"\" href=\"https:\/\/capskip.com\/zh\/hcaptcha-solver\/\">hCaptcha<\/a><\/div><\/div><\/header>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<section class=\"cskl-intro\">\n\t\t\t\t\t<div class=\"cskl-intro__stage\" aria-hidden=\"true\">\n\t\t\t\t\t\t<span class=\"cskl-intro__ring\"><\/span>\n\t\t\t\t\t\t<span class=\"cskl-intro__ring cskl-intro__ring--outer\"><\/span>\n\t\t\t\t\t\t<span class=\"cskl-intro__orbit\"><i><\/i><\/span>\n\t\t\t\t\t\t<span class=\"cskl-intro__orbit cskl-intro__orbit--outer\"><i><\/i><\/span>\n\t\t\t\t\t\t<span class=\"cskl-intro__float\">\n\t\t\t\t\t\t\t<span class=\"cskl-intro__halo\"><\/span>\n\t\t\t\t\t\t\t<span class=\"cskl-intro__tile\"><span class=\"cskl-mark cskl-mark--tile\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5.5 4h13a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3h-13a3 3 0 0 1-3-3v-10a3 3 0 0 1 3-3zM2.5 8.5h19M5.75 6.25h.01M8.24 6.25h.01\"\/><path class=\"a\" d=\"M9.5 11.5l6.5 2.4-2.8 1.2-1.2 2.8z\"\/><\/svg><\/span><\/span>\n\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"cskl-intro__copy\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p>When headless Chrome lands on a reCAPTCHA, a Turnstile box or a distorted image, CapSkip acts as the Puppeteer CAPTCHA solver beside your Node.js crawler. It runs on the same Windows PC or VPS and hands the script an answer to paste in, instead of a tab that times out. Puppeteer can click and type anywhere, but it cannot mint a valid token on its own. The CapSkip app does that part on a flat license with unlimited solves, which suits a browser that may open hundreds of tabs in a single crawl.<\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p>How deep the integration goes is your call. A project that already runs puppeteer-extra-plugin-recaptcha can stay untouched and still be answered by CapSkip, through the 2Captcha emulator. Fresh code can npm install capskip and await solver.recaptcha() or solver.turnstile() directly, typed for TypeScript out of the box.<\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p>Coverage goes beyond what the plugin scans for. reCAPTCHA v2, v3 and Enterprise are in, Turnstile both as a widget and as a full challenge page, plus GeeTest v3 slides, CaptchaFox, Capy Puzzle, AWS WAF CAPTCHA, the proof-of-work pair ALTCHA and Friendly Captcha, and thousands of image CAPTCHA styles read in about 0.1 seconds each. hCaptcha is in as well. GeeTest v4 and FunCaptcha stay out of scope. Stealth plugins still help by making challenges rarer; CapSkip clears the ones that slip through.<\/p>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/section>\n\t\t\t\n\t\t\t\t\t\t\t\t\t<section class=\"cskl-callout\">\n\t\t\t\t<span class=\"cskl-callout__icon\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M13.25 2.75 5.25 13.25h6.5l-1 8 8-10.5h-6.5z\"\/><\/svg><\/span>\n\t\t\t\t\t\t\t\t<p><strong>Your puppeteer-extra setup stays exactly as written.<\/strong> The recaptcha plugin keeps its 2captcha provider and its page.solveRecaptchas() calls. Once the CapSkip app has the 2Captcha emulator switched on and added to the hosts file, those calls are answered by the machine running Chrome instead of a prepaid balance. <a href=\"https:\/\/capskip.com\/setup-guide\/\">Walk through the setup guide<\/a><\/p>\n\t\t\t\t\t\t\t<\/section>\n\n\t\t\t\t\t\t<section class=\"cskl-section cskl-features\" aria-label=\"Why CapSkip\">\n\t\t\t\t<div class=\"cskl-section__head\">\n\t\t\t\t\t<h2>What the Puppeteer CAPTCHA solver adds to headless Chrome<\/h2>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"cskl-feature-grid\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"cskl-feature\">\n\t\t\t\t\t\t\t<span class=\"cskl-feature__icon\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M9 3v4M15 3v4M6.5 7h11v3.5a5.5 5.5 0 0 1-11 0z\"\/><path class=\"a\" d=\"M12 16v5\"\/><\/svg><\/span>\n\t\t\t\t\t\t\t<h3>Drop-in for puppeteer-extra-plugin-recaptcha<\/h3>\n\t\t\t\t\t\t\t<p>The plugin keeps its provider id and every page.solveRecaptchas() call. With the 2Captcha emulator in hosts-file mode, its requests stop at your own PC and no balance drains.<\/p>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"cskl-feature\">\n\t\t\t\t\t\t\t<span class=\"cskl-feature__icon\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M8.5 7l-5 5 5 5M15.5 7l5 5-5 5\"\/><path class=\"a\" d=\"M13.5 4.5l-3 15\"\/><\/svg><\/span>\n\t\t\t\t\t\t\t<h3>Await one method per CAPTCHA type<\/h3>\n\t\t\t\t\t\t\t<p>npm install capskip, create one client, then await recaptcha(), turnstile(), geetest() or normal(). Each resolves with result.code, and TypeScript definitions ship inside the package.<\/p>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"cskl-feature\">\n\t\t\t\t\t\t\t<span class=\"cskl-feature__icon\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 3 4.5 6v5.5c0 4.4 3.1 8 7.5 9.5 4.4-1.5 7.5-5.1 7.5-9.5V6z\"\/><path class=\"a\" d=\"M8.9 12l2.2 2.2 4-4.2\"\/><\/svg><\/span>\n\t\t\t\t\t\t\t<h3>Turnstile pages with the right user agent<\/h3>\n\t\t\t\t\t\t\t<p>solver.turnstile() covers the embedded widget as well as the full-page Cloudflare check. For the page it also returns the userAgent the token belongs to, which you apply with page.setUserAgent.<\/p>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"cskl-feature\">\n\t\t\t\t\t\t\t<span class=\"cskl-feature__icon\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M8.25 6.75V5.25a2 2 0 0 1 4 0v1.5h3.5a1.5 1.5 0 0 1 1.5 1.5v3.5h1.5a2 2 0 0 1 0 4h-1.5v3.5a1.5 1.5 0 0 1-1.5 1.5h-3.5v-1.5a2 2 0 0 0-4 0v1.5h-3.5a1.5 1.5 0 0 1-1.5-1.5v-3.5h1.5a2 2 0 0 0 0-4h-1.5v-3.5a1.5 1.5 0 0 1 1.5-1.5z\"\/><\/svg><\/span>\n\t\t\t\t\t\t\t<h3>Extension inside the Chrome you launch<\/h3>\n\t\t\t\t\t\t\t<p>Load the CapSkip extension into the Chrome instance Puppeteer starts, in a window or in the newer headless mode, and widgets clear inside the page without a single line of token code.<\/p>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"cskl-feature\">\n\t\t\t\t\t\t\t<span class=\"cskl-feature__icon\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4.5 18.5a8.75 8.75 0 1 1 15 0\"\/><path class=\"a\" d=\"M12 14l4-4.25M11.28 14a.73.73 0 1 0 1.45 0 .73.73 0 1 0-1.45 0\"\/><\/svg><\/span>\n\t\t\t\t\t\t\t<h3>Many tabs, no solve queue<\/h3>\n\t\t\t\t\t\t\t<p>Start one solve per page and collect them with Promise.all. With no per-key rate limit and unlimited threads, throughput is set by your CPU and memory, not a vendor tier.<\/p>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"cskl-feature\">\n\t\t\t\t\t\t\t<span class=\"cskl-feature__icon\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 12c-1.9-2.5-3.6-3.75-5.25-3.75a3.75 3.75 0 0 0 0 7.5C8.4 15.75 10.1 14.5 12 12zm0 0c1.9 2.5 3.6 3.75 5.25 3.75a3.75 3.75 0 0 0 0-7.5C15.6 8.25 13.9 9.5 12 12z\"\/><\/svg><\/span>\n\t\t\t\t\t\t\t<h3>Retries never reach the invoice<\/h3>\n\t\t\t\t\t\t\t<p>Bronze, at $35 monthly for one machine, includes unlimited solves. A crawl that reloads a page ten times, or a test suite looping overnight, costs exactly the same.<\/p>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t<\/section>\n\n\t\t\t\t\t\t<section class=\"cskl-section cskl-ways\" aria-label=\"How to integrate\">\n\t\t\t\t<div class=\"cskl-section__head\">\n\t\t\t\t\t<h2>Three ways to wire CapSkip into Puppeteer<\/h2>\n\t\t\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t\t\t<div class=\"cskl-codewrap\">\n\t\t\t\t\t\t<div class=\"csk-code csk-code-javascript\"><div class=\"csk-code-bar\"><span class=\"csk-code-lang\">JavaScript<\/span><button type=\"button\" class=\"csk-copy\" aria-label=\"Copy code\">Copy<\/button><\/div><pre><code>const puppeteer = require(&#039;puppeteer&#039;);\nconst { CapSkip } = require(&#039;capskip&#039;);\n\nconst solver = new CapSkip({ host: &#039;127.0.0.1&#039;, port: 8080 });\n\n(async () =&gt; {\n  const browser = await puppeteer.launch();\n  const page = await browser.newPage();\n  await page.goto(&#039;https:\/\/example.com\/login&#039;);\n\n  const sitekey = await page.$eval(&#039;.g-recaptcha&#039;, el =&gt; el.dataset.sitekey);\n  const { code } = await solver.recaptcha(sitekey, page.url());\n\n  await page.evaluate(t =&gt; {\n    document.getElementById(&#039;g-recaptcha-response&#039;).innerHTML = t;\n  }, code);\n  await page.click(&#039;button[type=submit]&#039;);\n})();<\/code><\/pre><\/div>\t\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"cskl-code-caption\">Puppeteer reads the sitekey, solver.recaptcha() from the capskip package returns a token, and page.evaluate places it before the submit click.<\/p>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\n\t\t\t\t<div class=\"cskl-ways-grid\">\n\t\t\t\t\t<div class=\"cskl-way\">\n\t\t\t\t\t\t<span class=\"cskl-way__icon\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M8.25 6.75V5.25a2 2 0 0 1 4 0v1.5h3.5a1.5 1.5 0 0 1 1.5 1.5v3.5h1.5a2 2 0 0 1 0 4h-1.5v3.5a1.5 1.5 0 0 1-1.5 1.5h-3.5v-1.5a2 2 0 0 0-4 0v1.5h-3.5a1.5 1.5 0 0 1-1.5-1.5v-3.5h1.5a2 2 0 0 0 0-4h-1.5v-3.5a1.5 1.5 0 0 1 1.5-1.5z\"\/><\/svg><\/span>\n\t\t\t\t\t\t<h3>Extension in the launched browser<\/h3>\n\t\t\t\t\t\t<p>With the app running, put the CapSkip extension in the browser Puppeteer opens, and challenges clear themselves while your script waits for the next selector. Chrome and Firefox builds exist.<\/p>\n\t\t\t\t\t\t<div class=\"cskl-way__links\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/chromewebstore.google.com\/detail\/capskip-%E2%80%93-unlimited-captc\/mgciphejglphomemchljofgoeakdfccl\" rel=\"noopener nofollow\" target=\"_blank\">Chrome<\/a>\n\t\t\t\t\t\t\t\t<a href=\"https:\/\/addons.mozilla.org\/en-US\/firefox\/addon\/capskip-captcha-solver\/\" rel=\"noopener nofollow\" target=\"_blank\">Firefox<\/a>\n\t\t\t\t\t\t\t\t<a href=\"https:\/\/capskip.com\/zh\/extension-guide\/\">Extension guide<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"cskl-way\">\n\t\t\t\t\t\t<span class=\"cskl-way__icon\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5.5 4h13a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3h-13a3 3 0 0 1-3-3v-10a3 3 0 0 1 3-3zM7 9.5l3 2.5-3 2.5\"\/><path class=\"a\" d=\"M12.5 15H17\"\/><\/svg><\/span>\n\t\t\t\t\t\t<h3>The capskip npm client<\/h3>\n\t\t\t\t\t\t<p>A Promise-based Node.js client with TypeScript types. Await a token or text per page and write it in with page.evaluate. Python, PHP and C# clients exist as well.<\/p>\n\t\t\t\t\t\t<div class=\"cskl-way__links\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/capskip.com\/zh\/captcha-solving-sdk\/\">All SDKs<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/capskip.com\/api-docs\/#recaptcha-v2\">API reference<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"cskl-way\">\n\t\t\t\t\t\t<span class=\"cskl-way__icon\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M9 3v4M15 3v4M6.5 7h11v3.5a5.5 5.5 0 0 1-11 0z\"\/><path class=\"a\" d=\"M12 16v5\"\/><\/svg><\/span>\n\t\t\t\t\t\t<h3>Emulated 2Captcha API for old code<\/h3>\n\t\t\t\t\t\t<p>puppeteer-extra-plugin-recaptcha and other 2Captcha-style clients keep sending the same requests, and the local API answers them on your machine, so existing Node code needs no edits.<\/p>\n\t\t\t\t\t\t<div class=\"cskl-way__links\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/capskip.com\/zh\/api-docs\/\">API docs<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/capskip.com\/zh\/2captcha-api-alternative\/\">2Captcha API emulation<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/section>\n\n\t\t\t\t\t\t\t\t\t\t<section class=\"cskl-demo\">\n\t\t\t\t\t<div class=\"cskl-demo__text\">\n\t\t\t\t\t\t<h2>Try it on a hosted reCAPTCHA page<\/h2>\n\t\t\t\t\t\t<p>Aim a test Puppeteer script, or Chrome with the extension, at our live reCAPTCHA v2 demo and watch a token come back before you point the same code at a real target.<\/p>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"cskl-demo__cta\">\n\t\t\t\t\t\t<a class=\"cskl-btn cskl-btn--primary\" href=\"https:\/\/capskip.com\/captcha-demo\/recaptcha-v2\/\">Try a live reCAPTCHA demo <svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4.5 12h15M13.5 6l6 6-6 6\"\/><\/svg><\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"cskl-btn cskl-btn--ghost\" href=\"https:\/\/capskip.com\/zh\/captcha-demo\/\">All CAPTCHA demos<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/section>\n\t\t\t\n\t\t\t\t\t\t<section class=\"cskl-section cskl-how\" aria-label=\"How to solve\">\n\t\t\t\t<div class=\"cskl-section__head\">\n\t\t\t\t\t<h2>Ready your Puppeteer project for CAPTCHAs<\/h2>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<ol class=\"cskl-steps\">\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<span class=\"cskl-steps__num cskl-steps__num--icon\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 4v11M7 10.5l5 5 5-5M5 20h14\"\/><\/svg><\/span>\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h3>Install the app beside Chrome<\/h3>\n\t\t\t\t\t\t\t<p>Set up CapSkip on the Windows machine or VPS where your Puppeteer scripts run, and leave it open. One machine for both is simplest, and the hosts-file route needs it. <a href=\"https:\/\/capskip.com\/download-capskip\/\">Download the installer<\/a><\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<span class=\"cskl-steps__num cskl-steps__num--icon\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M14 4h3.5A2.5 2.5 0 0 1 20 6.5v11a2.5 2.5 0 0 1-2.5 2.5H14M4 12h10.5M10.5 8l4 4-4 4\"\/><\/svg><\/span>\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h3>Activate a plan or the trial<\/h3>\n\t\t\t\t\t\t\t<p>Pick a monthly plan or the free trial (500 solves across 3 days), then sign in to CapSkip with the credentials sent to your inbox. <a href=\"https:\/\/capskip.com\/#pricing\">Compare the plans<\/a><\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/li>\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<span class=\"cskl-steps__num cskl-steps__num--icon\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 20 14 10\"\/><path class=\"a\" d=\"M17.5 3.5l.95 2.05 2.05.95-2.05.95-.95 2.05-.95-2.05-2.05-.95 2.05-.95zM10.5 4v2.5M9.25 5.25h2.5\"\/><\/svg><\/span>\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h3>Call it from your Puppeteer code<\/h3>\n\t\t\t\t\t\t\t<p>Run npm install capskip for direct calls, or switch on the 2Captcha emulator in hosts-file mode so puppeteer-extra keeps working, then run the script against a real page. <a href=\"https:\/\/capskip.com\/captcha-solving-sdk\/\">See the Node.js SDK<\/a><\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/li>\n\t\t\t\t<\/ol>\n\t\t\t<\/section>\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<section class=\"cskl-section cskl-compare\" aria-label=\"Comparison\">\n\t\t\t\t\t<div class=\"cskl-section__head\">\n\t\t\t\t\t\t<h2>Puppeteer CAPTCHA solving, local or billed per call<\/h2>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"cskl-section__sub\">Both sides plug into the same Puppeteer code. The rows show what differs once a challenge leaves your script.<\/p>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<div class=\"cskl-table-scroll\">\n\t\t\t\t\t\t<table class=\"cskl-table\">\n\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<th scope=\"col\">Feature<\/th>\n\t\t\t\t\t\t\t\t\t<th scope=\"col\" class=\"is-us\">CapSkip<\/th>\n\t\t\t\t\t\t\t\t\t<th scope=\"col\">2Captcha &amp; API services<\/th>\n\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t<\/thead>\n\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">How you pay<\/th>\n\t\t\t\t\t\t\t\t\t\t<td class=\"is-us\">From $35 monthly, no setup fee, solves never counted<\/td>\n\t\t\t\t\t\t\t\t\t\t<td>Prepaid credits priced per thousand solves, so cost tracks page count<\/td>\n\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">Where the solve happens<\/th>\n\t\t\t\t\t\t\t\t\t\t<td class=\"is-us\">Inside CapSkip, on the computer that runs your crawler<\/td>\n\t\t\t\t\t\t\t\t\t\t<td>A remote API or a human solving farm<\/td>\n\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">Wiring into Node.js<\/th>\n\t\t\t\t\t\t\t\t\t\t<td class=\"is-us\">npm client, browser extension or the local API<\/td>\n\t\t\t\t\t\t\t\t\t\t<td>API key plus a vendor client or puppeteer-extra<\/td>\n\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">puppeteer-extra-plugin-recaptcha<\/th>\n\t\t\t\t\t\t\t\t\t\t<td class=\"is-us\">Keeps working, answered locally through the 2Captcha emulator<\/td>\n\t\t\t\t\t\t\t\t\t\t<td>Works, but every token is drawn from a paid balance<\/td>\n\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">Image CAPTCHA turnaround<\/th>\n\t\t\t\t\t\t\t\t\t\t<td class=\"is-us\">Roughly 0.1 seconds, answered on the same machine<\/td>\n\t\t\t\t\t\t\t\t\t\t<td>Upload, queue and polling for every image<\/td>\n\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">Parallel tabs<\/th>\n\t\t\t\t\t\t\t\t\t\t<td class=\"is-us\">No thread limit; your hardware sets the pace<\/td>\n\t\t\t\t\t\t\t\t\t\t<td>Concurrency caps or a pricier plan<\/td>\n\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t<th scope=\"row\">Challenge data<\/th>\n\t\t\t\t\t\t\t\t\t\t<td class=\"is-us\">Stays on the machine running Chrome<\/td>\n\t\t\t\t\t\t\t\t\t\t<td>Sent to a third party with every solve<\/td>\n\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tbody>\n\t\t\t\t\t\t<\/table>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/section>\n\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t<section class=\"cskl-section cskl-pricing\" id=\"licenses\" aria-label=\"Licenses\">\n\t\t\t\t<section class=\"cskpr cskpr--compact\" data-no-translation><div class=\"cskpr-in\"><div class=\"cskpr-head\"><p class=\"cskpr-eyebrow\"><span class=\"cskpr-dot\"><\/span>\u4ef7\u683c<\/p><h2 class=\"cskpr-h2\">\u4e0d\u518d<em>\u6309\u6b21\u4ed8\u8d39<\/em><\/h2><\/div><div class=\"cskpr-card\"><p class=\"cskpr-lab\">\u9009\u62e9\u4f60\u7684\u6388\u6743<\/p><div class=\"cskpr-tiers\" role=\"group\" aria-label=\"\u9009\u62e9\u4f60\u7684\u6388\u6743\"><button type=\"button\" class=\"cskpr-tier is-on\" data-i=\"0\" aria-pressed=\"true\"><span class=\"cskpr-marktile\"><svg class=\"cskpr-mark\" viewBox=\"0 0 90 90\" width=\"44\" height=\"44\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20 0H70A20 20 0 0 1 90 20V70A20 20 0 0 1 70 90H0V20A20 20 0 0 1 20 0Z\" fill=\"#d08848\"\/><path d=\"M20 42V30A25 20 0 0 1 70 30A5 5 0 0 1 60 30A15 10 0 0 0 30 30V42Z\" fill=\"#0a0e14\"\/><rect x=\"15\" y=\"40\" width=\"60\" height=\"35\" rx=\"5\" fill=\"#0a0e14\"\/><path d=\"M45 45A10 10 0 0 1 50 63.66V65A5 5 0 0 1 40 65V63.66A10 10 0 0 1 45 45Z\" fill=\"#d08848\"\/><\/svg><\/span><span class=\"cskpr-tiertext\"><span class=\"cskpr-tiername\">\u9752\u94dc<\/span><span class=\"cskpr-dev\"><span class=\"cskpr-screens\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5.5 4h13a3 3 0 0 1 3 3v6.5a3 3 0 0 1-3 3h-13a3 3 0 0 1-3-3v-6.5a3 3 0 0 1 3-3zM8.5 20h7M12 16.5V20\"\/><\/svg><\/span><span class=\"cskpr-devtext\">1 \u53f0\u8bbe\u5907<\/span><\/span><\/span><span class=\"cskpr-tierprice\"><span class=\"cskpr-amt\">$35<\/span><span class=\"cskpr-per\">\/ \u6708<\/span><span class=\"cskpr-pd\">\u6bcf\u53f0\u8bbe\u5907 $35<\/span><span class=\"cskpr-pf\" hidden><\/span><\/span><\/button><button type=\"button\" class=\"cskpr-tier\" data-i=\"1\"><span class=\"cskpr-badge\">2 \u500d\u541e\u5410\u91cf<\/span><span class=\"cskpr-marktile\"><svg class=\"cskpr-mark\" viewBox=\"0 0 90 90\" width=\"44\" height=\"44\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20 0H70A20 20 0 0 1 90 20V70A20 20 0 0 1 70 90H0V20A20 20 0 0 1 20 0Z\" fill=\"#c0c0c0\"\/><path d=\"M20 42V30A25 20 0 0 1 70 30A5 5 0 0 1 60 30A15 10 0 0 0 30 30V42Z\" fill=\"#0a0e14\"\/><rect x=\"15\" y=\"40\" width=\"60\" height=\"35\" rx=\"5\" fill=\"#0a0e14\"\/><path d=\"M45 45A10 10 0 0 1 50 63.66V65A5 5 0 0 1 40 65V63.66A10 10 0 0 1 45 45Z\" fill=\"#c0c0c0\"\/><\/svg><\/span><span class=\"cskpr-tiertext\"><span class=\"cskpr-tiername\">\u767d\u94f6<\/span><span class=\"cskpr-dev\"><span class=\"cskpr-screens\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5.5 4h13a3 3 0 0 1 3 3v6.5a3 3 0 0 1-3 3h-13a3 3 0 0 1-3-3v-6.5a3 3 0 0 1 3-3zM8.5 20h7M12 16.5V20\"\/><\/svg><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5.5 4h13a3 3 0 0 1 3 3v6.5a3 3 0 0 1-3 3h-13a3 3 0 0 1-3-3v-6.5a3 3 0 0 1 3-3zM8.5 20h7M12 16.5V20\"\/><\/svg><\/span><span class=\"cskpr-devtext\">2 \u53f0\u8bbe\u5907<\/span><\/span><\/span><span class=\"cskpr-tierprice\"><span class=\"cskpr-amt\">$60<\/span><span class=\"cskpr-per\">\/ \u6708<\/span><span class=\"cskpr-pd is-save\">\u6bcf\u53f0\u8bbe\u5907 $30<\/span><span class=\"cskpr-pf\" hidden><\/span><\/span><\/button><button type=\"button\" class=\"cskpr-tier\" data-i=\"2\"><span class=\"cskpr-badge cskpr-badge--best\">3 \u500d\u541e\u5410\u91cf<\/span><span class=\"cskpr-marktile\"><svg class=\"cskpr-mark\" viewBox=\"0 0 90 90\" width=\"44\" height=\"44\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20 0H70A20 20 0 0 1 90 20V70A20 20 0 0 1 70 90H0V20A20 20 0 0 1 20 0Z\" fill=\"#ffd703\"\/><path d=\"M20 42V30A25 20 0 0 1 70 30A5 5 0 0 1 60 30A15 10 0 0 0 30 30V42Z\" fill=\"#0a0e14\"\/><rect x=\"15\" y=\"40\" width=\"60\" height=\"35\" rx=\"5\" fill=\"#0a0e14\"\/><path d=\"M45 45A10 10 0 0 1 50 63.66V65A5 5 0 0 1 40 65V63.66A10 10 0 0 1 45 45Z\" fill=\"#ffd703\"\/><\/svg><\/span><span class=\"cskpr-tiertext\"><span class=\"cskpr-tiername\">\u9ec4\u91d1<\/span><span class=\"cskpr-dev\"><span class=\"cskpr-screens\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5.5 4h13a3 3 0 0 1 3 3v6.5a3 3 0 0 1-3 3h-13a3 3 0 0 1-3-3v-6.5a3 3 0 0 1 3-3zM8.5 20h7M12 16.5V20\"\/><\/svg><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5.5 4h13a3 3 0 0 1 3 3v6.5a3 3 0 0 1-3 3h-13a3 3 0 0 1-3-3v-6.5a3 3 0 0 1 3-3zM8.5 20h7M12 16.5V20\"\/><\/svg><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5.5 4h13a3 3 0 0 1 3 3v6.5a3 3 0 0 1-3 3h-13a3 3 0 0 1-3-3v-6.5a3 3 0 0 1 3-3zM8.5 20h7M12 16.5V20\"\/><\/svg><\/span><span class=\"cskpr-devtext\">3 \u53f0\u8bbe\u5907<\/span><\/span><\/span><span class=\"cskpr-tierprice\"><span class=\"cskpr-amt\">$75<\/span><span class=\"cskpr-per\">\/ \u6708<\/span><span class=\"cskpr-pd is-save\">\u6bcf\u53f0\u8bbe\u5907 $25<\/span><span class=\"cskpr-pf\" hidden><\/span><\/span><\/button><\/div><div class=\"cskpr-hr2\"><\/div><div class=\"cskpr-body\"><div class=\"cskpr-buy\"><p class=\"cskpr-selrow\"><span class=\"cskpr-marktile cskpr-marktile--sm\" id=\"cskpr-selmark\"><svg class=\"cskpr-mark\" viewBox=\"0 0 90 90\" width=\"36\" height=\"36\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20 0H70A20 20 0 0 1 90 20V70A20 20 0 0 1 70 90H0V20A20 20 0 0 1 20 0Z\" fill=\"#d08848\"\/><path d=\"M20 42V30A25 20 0 0 1 70 30A5 5 0 0 1 60 30A15 10 0 0 0 30 30V42Z\" fill=\"#0a0e14\"\/><rect x=\"15\" y=\"40\" width=\"60\" height=\"35\" rx=\"5\" fill=\"#0a0e14\"\/><path d=\"M45 45A10 10 0 0 1 50 63.66V65A5 5 0 0 1 40 65V63.66A10 10 0 0 1 45 45Z\" fill=\"#d08848\"\/><\/svg><\/span><span class=\"cskpr-selname\" id=\"cskpr-selname\">\u9752\u94dc\u6388\u6743<\/span><\/p><p class=\"cskpr-pricerow\"><s class=\"cskpr-was\" id=\"cskpr-was\" hidden><\/s><span class=\"cskpr-price\" id=\"cskpr-price\">$35<\/span><span class=\"cskpr-priceper\">\/ \u6708<\/span><\/p><p class=\"cskpr-promo\" id=\"cskpr-promo\" hidden><\/p><a class=\"cskpr-cta\" id=\"cskpr-cta\" href=\"https:\/\/capskip.com\/zh\/product\/bronze-license\/\"><span id=\"cskpr-ctatext\">\u8ba2\u9605\u9752\u94dc\u6388\u6743<\/span><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4.5 12h15M13.5 6l6 6-6 6\"\/><\/svg><\/a><p class=\"cskpr-instant\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M13.25 2.75 5.25 13.25h6.5l-1 8 8-10.5h-6.5z\"\/><\/svg><span>\u6388\u6743\u5373\u65f6\u6fc0\u6d3b<\/span><\/p><p class=\"cskpr-fine\">\u6309\u6708\u8ba1\u8d39\uff0c\u53ef\u968f\u65f6\u5728\u8d26\u6237\u4e2d\u53d6\u6d88\u3002<\/p><\/div><div class=\"cskpr-rule2\"><\/div><div class=\"cskpr-feats\"><p class=\"cskpr-ftitle\">\u529f\u80fd\u76f8\u540c\uff0c\u673a\u5668\u8d8a\u591a\uff0c\u541e\u5410\u91cf\u8d8a\u5927\u3002<\/p><p class=\"cskpr-fsub\">\u6bcf\u53f0\u673a\u5668\u7684\u8bc6\u522b\u901f\u5ea6\u90fd\u53d7\u9650\u4e8e\u5b83\u81ea\u5df1\u7684 CPU \u548c\u5185\u5b58\u3002\u673a\u5668\u8d8a\u591a\uff0c\u540c\u65f6\u8fd0\u884c\u7684\u7ebf\u7a0b\u5c31\u8d8a\u591a\uff1a\u767d\u94f6\u53ef\u540c\u65f6\u8bc6\u522b\u4e24\u500d\u6570\u91cf\u7684\u9a8c\u8bc1\u7801\uff0c\u9ec4\u91d1\u5219\u662f\u4e09\u500d\u3002<\/p><ul class=\"cskpr-list\"><li><svg class=\"csi cskpr-ck\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12.5l4.5 4.5L19 7.5\"\/><\/svg><span>\u65e0\u9650\u89e3\u51b3\uff0c\u65e0\u6bcf\u65e5\u4e0a\u9650<\/span><\/li><li><svg class=\"csi cskpr-ck\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12.5l4.5 4.5L19 7.5\"\/><\/svg><span>\u65e0\u9650\u7ebf\u7a0b\uff0c\u901f\u5ea6\u968f\u786c\u4ef6\u63d0\u5347<\/span><\/li><li><svg class=\"csi cskpr-ck\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12.5l4.5 4.5L19 7.5\"\/><\/svg><span>90% \u81f3 100% \u7684\u8bc6\u522b\u51c6\u786e\u7387<\/span><\/li><li><svg class=\"csi cskpr-ck\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12.5l4.5 4.5L19 7.5\"\/><\/svg><span>\u53ef\u76f4\u63a5\u66ff\u4ee3\u4e3b\u6d41\u6253\u7801\u670d\u52a1\u7684 API<\/span><\/li><li><svg class=\"csi cskpr-ck\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12.5l4.5 4.5L19 7.5\"\/><\/svg><span>\u51e0\u4e4e\u517c\u5bb9\u4efb\u4f55\u5de5\u5177\uff0c\u65e0\u9700\u7f16\u5199\u4ee3\u7801<\/span><\/li><li><svg class=\"csi cskpr-ck\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12.5l4.5 4.5L19 7.5\"\/><\/svg><span>REST API\u3001SDK \u548c\u6d4f\u89c8\u5668\u6269\u5c55<\/span><\/li><li><svg class=\"csi cskpr-ck\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12.5l4.5 4.5L19 7.5\"\/><\/svg><span>\u51fa\u73b0\u65b0\u7684\u9a8c\u8bc1\u7801\u7c7b\u578b\u65f6\u514d\u8d39\u8bad\u7ec3<\/span><\/li><li><svg class=\"csi cskpr-ck\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5 12.5l4.5 4.5L19 7.5\"\/><\/svg><span>\u5728\u4f60\u81ea\u5df1\u7684\u673a\u5668\u4e0a\u8fd0\u884c\uff0c\u6570\u636e\u4e0d\u5916\u4f20<\/span><\/li><\/ul><p class=\"cskpr-cov\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 19.5v-15M6 10.5l6-6 6 6\"\/><\/svg><span>\u4e0a\u9762\u5c55\u793a\u7684\u6bcf\u4e00\u79cd\u9a8c\u8bc1\u7801\u7c7b\u578b\uff0c\u6bcf\u4e2a\u6388\u6743\u90fd\u652f\u6301\u3002 <a href=\"https:\/\/capskip.com\/zh\/#coverage\">\u67e5\u770b\u652f\u6301\u8303\u56f4<\/a><\/span><\/p><\/div><\/div><\/div><\/div><\/section>\n\t\t\t\t\t\t\t\t<div class=\"cskl-trialnote\">\n\t\t\t\t\t<div class=\"cskl-trialnote__text\">\n\t\t\t\t\t\t<h3>Just want to try it first?<\/h3>\n\t\t\t\t\t\t<p>Start with a free 3-day trial and solve 500 CAPTCHAs of any type on your own targets.<\/p>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<a class=\"cskl-btn cskl-btn--ghost\" href=\"https:\/\/capskip.com\/zh\/product\/trial-license\/\">Start the free trial<\/a>\n\t\t\t\t<\/div>\n\t\t\t<\/section>\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t<section class=\"cskl-section cskl-related\" aria-label=\"Related pages\">\n\t\t\t<div class=\"cskl-section__head\">\n\t\t\t\t<h2>Related CAPTCHA solvers &amp; guides<\/h2>\n\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"cskl-related-grid\">\n\t\t\t\t\t\t\t\t\t<a class=\"cskl-related-card\" href=\"https:\/\/capskip.com\/zh\/nodejs-captcha-solver\/\">\n\t\t\t\t\t\t<span class=\"cskl-related-card__icon cskl-related-card__icon--mark\"><svg class=\"csv\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path fill=\"#5fa04e\" d=\"M12 24c-.32 0-.64-.08-.92-.25l-2.94-1.74c-.44-.24-.22-.33-.08-.38.58-.2.7-.25 1.33-.6.06-.04.15-.02.22.02l2.26 1.34c.08.04.2.04.27 0l8.79-5.08c.08-.05.13-.14.13-.24V6.92c0-.1-.05-.19-.14-.24l-8.79-5.07c-.08-.05-.19-.05-.27 0L3.08 6.68C2.99 6.73 2.94 6.83 2.94 6.92v10.15c0 .1.05.19.14.23l2.41 1.39c1.31.65 2.11-.12 2.11-.89V7.79c0-.14.11-.25.26-.25h1.11c.14 0 .25.11.25.25v10.02c0 1.74-.95 2.74-2.6 2.74-.51 0-.91 0-2.03-.55L2.28 18.68c-.57-.33-.92-.94-.92-1.6V6.92c0-.66.35-1.27.92-1.6l8.79-5.08c.56-.31 1.3-.31 1.85 0l8.79 5.08c.57.33.92.94.92 1.6v10.15c0 .66-.35 1.27-.92 1.6l-8.79 5.08C12.64 23.92 12.32 24 12 24zM19.1 13.99c0-1.9-1.28-2.41-3.99-2.76-2.73-.36-3.01-.55-3.01-1.19 0-.53.23-1.23 2.26-1.23 1.81 0 2.47.39 2.75 1.61.02.11.13.2.25.2h1.14c.07 0 .14-.03.19-.08.05-.05.07-.12.07-.2-.18-2.1-1.57-3.08-4.39-3.08-2.51 0-4 1.06-4 2.83 0 1.92 1.49 2.46 3.89 2.69 2.88.28 3.1.7 3.1 1.27 0 .98-.79 1.4-2.64 1.4-2.33 0-2.84-.58-3.01-1.74-.02-.12-.13-.21-.25-.21h-1.14c-.14 0-.25.11-.25.25 0 1.48.81 3.25 4.65 3.25C17.5 17.01 19.1 15.91 19.1 13.99z\"\/><\/svg><\/span>\n\t\t\t\t\t\t<span class=\"cskl-related-card__body\">\n\t\t\t\t\t\t\t<span class=\"cskl-related-card__title\">Node.js CAPTCHA Solver<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"cskl-related-card__blurb\">npm install capskip<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"cskl-related-card__arrow\" aria-hidden=\"true\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4.5 12h15M13.5 6l6 6-6 6\"\/><\/svg><\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<a class=\"cskl-related-card\" href=\"https:\/\/capskip.com\/zh\/playwright-captcha-solver\/\">\n\t\t\t\t\t\t<span class=\"cskl-related-card__icon cskl-related-card__icon--mark\"><svg class=\"csv\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path fill=\"#2d4552\" d=\"M7.91 13.17C7.01 13.42 6.43 13.87 6.04 14.31 6.41 13.99 6.91 13.69 7.58 13.5 8.26 13.3 8.85 13.31 9.33 13.4V13.02C8.92 12.98 8.45 13.01 7.91 13.17ZM6 9.99 2.67 10.87C2.67 10.87 2.73 10.95 2.84 11.07L5.67 10.32C5.67 10.32 5.63 10.84 5.28 11.3 5.94 10.8 6 9.99 6 9.99ZM8.78 17.81C4.1 19.07 1.62 13.64.87 10.83.53 9.53.38 8.54.34 7.91.33 7.84.33 7.79.34 7.74.1 7.75-.02 7.88 0 8.24.04 8.88.19 9.86.54 11.16 1.29 13.98 3.77 19.4 8.45 18.14 9.47 17.87 10.24 17.37 10.81 16.73 10.28 17.21 9.62 17.58 8.78 17.81ZM9.66 6.67V7H11.5C11.46 6.88 11.42 6.78 11.39 6.67H9.66ZM11.91 9.41C12.74 9.65 13.17 10.23 13.4 10.74L14.33 11C14.33 11 14.2 9.21 12.58 8.75 11.06 8.32 10.13 9.59 10.01 9.75 10.45 9.44 11.1 9.18 11.91 9.41ZM19.24 10.75C17.72 10.31 16.79 11.59 16.68 11.75 17.12 11.44 17.76 11.18 18.58 11.41 19.4 11.65 19.84 12.23 20.07 12.74L20.99 13C20.99 13 20.86 11.21 19.24 10.75ZM18.33 15.48 10.67 13.34C10.67 13.34 10.75 13.76 11.07 14.3L17.52 16.1C18.05 15.8 18.33 15.48 18.33 15.48ZM13.02 20.09C6.95 18.46 7.68 10.73 8.66 7.07 9.07 5.56 9.48 4.44 9.83 3.69 9.62 3.64 9.45 3.75 9.28 4.09 8.92 4.84 8.45 6.04 8 7.74 7.02 11.4 6.28 19.13 12.35 20.75 15.21 21.52 17.44 20.35 19.1 18.53 17.52 19.95 15.51 20.75 13.02 20.09Z\"\/><path fill=\"#e2574c\" d=\"M9.66 16V14.44L5.33 15.67C5.33 15.67 5.65 13.81 7.91 13.17 8.6 12.97 9.18 12.97 9.66 13.07V6.67H11.83C11.6 5.94 11.37 5.38 11.18 4.99 10.86 4.34 10.53 4.77 9.79 5.39 9.27 5.82 7.96 6.75 5.98 7.28 4 7.82 2.4 7.67 1.73 7.56.79 7.4.29 7.19.34 7.910.38 8.54.53 9.53.87 10.83 1.62 13.64 4.1 19.07 8.78 17.81 10.01 17.48 10.87 16.83 11.47 16H9.66V16ZM2.67 10.87 6 9.99C6 9.99 5.9 11.27 4.65 11.6 3.41 11.93 2.67 10.87 2.67 10.87Z\"\/><path fill=\"#2ead33\" d=\"M22.19 6.74C21.32 6.89 19.25 7.08 16.68 6.4 14.12 5.71 12.42 4.51 11.74 3.94 10.79 3.14 10.36 2.59 9.95 3.43 9.58 4.17 9.12 5.38 8.66 7.07 7.68 10.73 6.95 18.46 13.02 20.09 19.08 21.71 22.31 14.65 23.29 10.99 23.74 9.3 23.94 8.02 24 7.19 24.06 6.26 23.42 6.53 22.19 6.74ZM10 9.77C10 9.77 10.96 8.29 12.58 8.75 14.2 9.21 14.33 11 14.33 11L10 9.77ZM13.96 16.44C11.11 15.61 10.67 13.34 10.67 13.34L18.33 15.48C18.33 15.48 16.78 17.27 13.96 16.44ZM16.67 11.77C16.67 11.77 17.62 10.29 19.24 10.75 20.86 11.21 20.99 13 20.99 13L16.67 11.77Z\"\/><path fill=\"#d65348\" d=\"M8.15 14.87 5.33 15.67C5.33 15.67 5.64 13.92 7.71 13.23L6.12 7.24 5.98 7.28C4 7.82 2.4 7.67 1.73 7.56.79 7.4.29 7.19.34 7.91.38 8.54.53 9.53.87 10.83 1.62 13.64 4.1 19.07 8.78 17.81L8.92 17.77 8.15 14.87ZM2.67 10.87 6 9.99C6 9.99 5.9 11.27 4.65 11.6 3.41 11.93 2.67 10.87 2.67 10.87Z\"\/><path fill=\"#1d8d22\" d=\"M14.09 16.48 13.96 16.44C11.11 15.61 10.67 13.34 10.67 13.34L14.62 14.44 16.71 6.4 16.68 6.4C14.12 5.71 12.42 4.51 11.74 3.94 10.78 3.14 10.36 2.59 9.95 3.43 9.58 4.17 9.12 5.38 8.66 7.07 7.68 10.73 6.95 18.46 13.02 20.09L13.14 20.11 14.09 16.48ZM10 9.77C10 9.77 10.96 8.29 12.58 8.75 14.2 9.21 14.33 11 14.33 11L10 9.77Z\"\/><path fill=\"#c04b41\" d=\"M8.29 14.83 7.54 15.04C7.72 16.05 8.03 17.01 8.52 17.87 8.61 17.85 8.7 17.83 8.78 17.81 9.01 17.75 9.23 17.67 9.43 17.59 8.88 16.77 8.51 15.82 8.29 14.83ZM8 7.74C7.61 9.19 7.26 11.27 7.36 13.37 7.53 13.29 7.71 13.22 7.91 13.17L8.05 13.13C7.88 10.9 8.25 8.62 8.66 7.07 8.77 6.68 8.88 6.31 8.98 5.97 8.81 6.08 8.63 6.19 8.42 6.3 8.28 6.74 8.14 7.21 8 7.74Z\"\/><\/svg><\/span>\n\t\t\t\t\t\t<span class=\"cskl-related-card__body\">\n\t\t\t\t\t\t\t<span class=\"cskl-related-card__title\">Playwright CAPTCHA Solver<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"cskl-related-card__blurb\">Solve CAPTCHAs in Playwright<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"cskl-related-card__arrow\" aria-hidden=\"true\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4.5 12h15M13.5 6l6 6-6 6\"\/><\/svg><\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<a class=\"cskl-related-card\" href=\"https:\/\/capskip.com\/zh\/selenium-captcha-solver\/\">\n\t\t\t\t\t\t<span class=\"cskl-related-card__icon cskl-related-card__icon--mark\"><svg class=\"csv\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path fill=\"#43b02a\" d=\"M23.17 3.47l-7.42 8.32a.23.23 0 0 1-.33 0l-3.79-3.9a.23.23 0 0 1 0-.28L12.87 6a.23.23 0 0 1 .37 0l2.11 2.35a.23.23 0 0 0 .34 0l5.94-8.09A.16.16 0 0 0 21.5 0H.72a.17.17 0 0 0-.17.17v23.65A.17.17 0 0 0 .72 24h22.57a.17.17 0 0 0 .17-.17V3.6a.16.16 0 0 0-.28-.13zM6.93 21.37a5.71 5.71 0 0 1-4.05-1.44.22.22 0 0 1 0-.29l.88-1.24a.22.22 0 0 1 .33-.04 4.34 4.34 0 0 0 2.96 1.16c1.16 0 1.72-.53 1.72-1.1 0-1.75-5.7-.55-5.7-4.28 0-1.65 1.43-3 3.76-3a5.57 5.57 0 0 1 3.71 1.24.22.22 0 0 1 0 .3l-.91 1.2a.22.22 0 0 1-.32.04 4.29 4.29 0 0 0-2.71-.94c-.91 0-1.41.4-1.41 1 0 1.57 5.69.52 5.69 4.2.01 1.81-1.28 3.18-3.96 3.18zm12.44-3.43a.19.19 0 0 1-.19.19h-5.2a.06.06 0 0 0-.06.07 1.99 1.99 0 0 0 2.11 1.64 3.26 3.26 0 0 0 1.8-.6.19.19 0 0 1 .28.04l.64.93a.2.2 0 0 1-.04.26 4.71 4.71 0 0 1-2.89.9 3.73 3.73 0 0 1-3.93-3.87 3.74 3.74 0 0 1 3.81-3.85c2.2 0 3.68 1.64 3.68 4.05zm-3.68-2.75a1.76 1.76 0 0 0-1.8 1.56.06.06 0 0 0 .06.07h3.49a.06.06 0 0 0 .06-.07 1.7 1.7 0 0 0-1.81-1.56Z\"\/><\/svg><\/span>\n\t\t\t\t\t\t<span class=\"cskl-related-card__body\">\n\t\t\t\t\t\t\t<span class=\"cskl-related-card__title\">Selenium CAPTCHA Solver<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"cskl-related-card__blurb\">Solve CAPTCHAs in Selenium<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"cskl-related-card__arrow\" aria-hidden=\"true\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4.5 12h15M13.5 6l6 6-6 6\"\/><\/svg><\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<a class=\"cskl-related-card\" href=\"https:\/\/capskip.com\/zh\/recaptcha-solver\/\">\n\t\t\t\t\t\t<span class=\"cskl-related-card__icon cskl-related-card__icon--mark\"><svg class=\"csv\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><g transform=\"scale(.375)\"><path fill=\"#1c3aa9\" d=\"M64 31.955l-.033-1.37V4.687l-7.16 7.16C50.948 4.674 42.033.093 32.05.093c-10.4 0-19.622 4.96-25.458 12.64l11.736 11.86a15.55 15.55 0 0 1 4.754-5.334c2.05-1.6 4.952-2.906 8.968-2.906.485 0 .86.057 1.135.163 4.976.393 9.288 3.14 11.828 7.124l-8.307 8.307c10.522-.042 22.41-.068 27.295.004\"\/><path fill=\"#4285f4\" d=\"M31.862 0l-1.37.033H4.594l7.16 7.16C4.58 13.052 0 21.967 0 31.95c0 10.4 4.96 19.622 12.64 25.458L24.5 45.672a15.55 15.55 0 0 1-5.334-4.754c-1.6-2.05-2.906-4.952-2.906-8.968 0-.485.057-.86.163-1.135.393-4.976 3.14-9.288 7.124-11.828l8.307 8.307c-.042-10.522-.068-22.41.004-27.295\"\/><path fill=\"#ababab\" d=\"M.001 31.955l.033 1.37v25.9l7.16-7.16c5.86 7.173 14.774 11.754 24.76 11.754 10.4 0 19.622-4.96 25.458-12.64l-11.736-11.86a15.55 15.55 0 0 1-4.754 5.334c-2.05 1.6-4.952 2.906-8.968 2.906-.485 0-.86-.057-1.135-.163-4.976-.393-9.288-3.14-11.828-7.124l8.307-8.307c-10.522.042-22.41.068-27.295-.004\"\/><\/g><\/svg><\/span>\n\t\t\t\t\t\t<span class=\"cskl-related-card__body\">\n\t\t\t\t\t\t\t<span class=\"cskl-related-card__title\">reCAPTCHA Solver<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"cskl-related-card__blurb\">Bypass v2, v3 &amp; Enterprise<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"cskl-related-card__arrow\" aria-hidden=\"true\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4.5 12h15M13.5 6l6 6-6 6\"\/><\/svg><\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<a class=\"cskl-related-card\" href=\"https:\/\/capskip.com\/zh\/cloudflare-turnstile-solver\/\">\n\t\t\t\t\t\t<span class=\"cskl-related-card__icon cskl-related-card__icon--mark\"><svg class=\"csv\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path fill=\"#f6821f\" d=\"M20.91 18.86H4.78C2.16 18.86 0 16.85 0 14.36c0-2.34 1.88-4.31 4.31-4.5A7.45 7.45 0 0 1 17.81 9.06a4.59 4.59 0 0 1 1.5-.23c2.44 0 4.45 1.88 4.64 4.22.05.19.05.42.05.61 0 2.86-2.44 5.2-3.09 5.2z\"\/><path fill=\"#fbad41\" d=\"M4.31 9.86A7.45 7.45 0 0 1 17.81 9.06c-2.25-.47-4.59.19-6.28 1.83-.94.94-1.55 2.11-1.78 3.38H0c0-2.34 1.88-4.31 4.31-4.41z\"\/><\/svg><\/span>\n\t\t\t\t\t\t<span class=\"cskl-related-card__body\">\n\t\t\t\t\t\t\t<span class=\"cskl-related-card__title\">Cloudflare Turnstile Solver<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"cskl-related-card__blurb\">Widget &amp; challenge page<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"cskl-related-card__arrow\" aria-hidden=\"true\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4.5 12h15M13.5 6l6 6-6 6\"\/><\/svg><\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<a class=\"cskl-related-card\" href=\"https:\/\/capskip.com\/zh\/captcha-solver-for-web-scraping\/\">\n\t\t\t\t\t\t<span class=\"cskl-related-card__icon cskl-related-card__icon--mark\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M5.5 4h13a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3h-13a3 3 0 0 1-3-3v-10a3 3 0 0 1 3-3zM2.5 8.5h19M5.75 6.25h.01M8.24 6.25h.01\"\/><path class=\"a\" d=\"M12 11v6M9.25 14.5 12 17.25l2.75-2.75\"\/><\/svg><\/span>\n\t\t\t\t\t\t<span class=\"cskl-related-card__body\">\n\t\t\t\t\t\t\t<span class=\"cskl-related-card__title\">CAPTCHA Solver for Web Scraping<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"cskl-related-card__blurb\">Unlimited solves for crawlers<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"cskl-related-card__arrow\" aria-hidden=\"true\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4.5 12h15M13.5 6l6 6-6 6\"\/><\/svg><\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\n\t\t\t\t\t\t\t\t\t\t<div class=\"cskl-seowrap\">\n\t\t\t\t\t\t\t<div class=\"cskip-seo\">\n\t\t\t\t\t\t\t\t\t\t\t<h2 class=\"cskip-seo__h2\">How to solve reCAPTCHA in Puppeteer: plugin route or SDK route<\/h2>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"cskip-seo__body\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p>Puppeteer gives you two dependable ways to solve reCAPTCHA with CapSkip. The plugin route reuses puppeteer-extra-plugin-recaptcha untouched. The SDK route calls the capskip npm package yourself, and it also reaches Turnstile, GeeTest v3 and image CAPTCHAs, which the plugin never looks for.<\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p>Plugin route. Open the CapSkip app, turn the 2Captcha emulator on, then press Add to hosts file. This redirects 2captcha.com to CapSkip for that one computer only, so the Node process running Puppeteer must sit on the same machine as the app. Register the plugin as before, with the provider id 2captcha and, in the token field, a key from the CapSkip settings (with key validation off, any text is accepted). After each navigation, page.solveRecaptchas() finds the widgets, sends them to what it still takes for 2Captcha, and fills in the tokens CapSkip returns.<\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p>SDK route. After npm install capskip, create a single client for 127.0.0.1 on port 8080, where a fresh CapSkip install listens. Read the sitekey with page.$eval, then await solver.recaptcha(sitekey, page.url()). An invisible widget takes invisible: 1, and reCAPTCHA v3 takes version v3 plus the action the page uses.<\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p>Finish inside two minutes, because the token expires. Write result.code into the g-recaptcha-response textarea with page.evaluate, fire the widget callback when one is declared, and submit. Turnstile follows the identical pattern with solver.turnstile() and the cf-turnstile-response field. For an image CAPTCHA, screenshot the element in base64 and pass it to solver.normal() as a data:image\/png;base64 string.<\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p>Related guides: <a href=\"https:\/\/capskip.com\/nodejs-captcha-solver\/\">Node.js CAPTCHA solver<\/a> \u00b7 <a href=\"https:\/\/capskip.com\/recaptcha-v2-nodejs\/\">reCAPTCHA v2 in Node.js<\/a> \u00b7 <a href=\"https:\/\/capskip.com\/2captcha-api-alternative\/\">2Captcha API alternative<\/a><\/p>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"cskip-faq\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<details class=\"cskip-faq__q\">\n\t\t\t\t\t\t\t\t\t<summary>What does a reCAPTCHA solve look like in a Puppeteer script?<\/summary>\n\t\t\t\t\t\t\t\t\t<div class=\"cskip-faq__a\"><div class=\"cskip-faq__inner\"><div class=\"cskip-faq__text\">Three awaited steps with the capskip npm client: page.$eval reads the data-sitekey value, solver.recaptcha(sitekey, page.url()) returns the token, and page.evaluate writes result.code into g-recaptcha-response before you click submit. On a puppeteer-extra project, a single page.solveRecaptchas() call does the same job.<\/div><\/div><\/div>\n\t\t\t\t\t\t\t\t<\/details>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<details class=\"cskip-faq__q\">\n\t\t\t\t\t\t\t\t\t<summary>Can puppeteer-extra-plugin-recaptcha send its work to CapSkip?<\/summary>\n\t\t\t\t\t\t\t\t\t<div class=\"cskip-faq__a\"><div class=\"cskip-faq__inner\"><div class=\"cskip-faq__text\">Yes, without editing it. Keep the 2captcha provider id, then in the CapSkip app enable 2Captcha emulation and use the Add button beside Hosts file. Requests the plugin makes to 2captcha.com then resolve to CapSkip on that computer, so run the script on the same PC or VPS as the app.<\/div><\/div><\/div>\n\t\t\t\t\t\t\t\t<\/details>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<details class=\"cskip-faq__q\">\n\t\t\t\t\t\t\t\t\t<summary>Does the plugin still need a funded 2Captcha account?<\/summary>\n\t\t\t\t\t\t\t\t\t<div class=\"cskip-faq__a\"><div class=\"cskip-faq__inner\"><div class=\"cskip-faq__text\">No account and no balance. The plugin still expects a value in its token field, so paste the API key shown in the CapSkip settings, or any string while key validation is off. Nothing is billed per call, because the requests never leave your machine.<\/div><\/div><\/div>\n\t\t\t\t\t\t\t\t<\/details>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<details class=\"cskip-faq__q\">\n\t\t\t\t\t\t\t\t\t<summary>Why are some challenges left after page.solveRecaptchas() runs?<\/summary>\n\t\t\t\t\t\t\t\t\t<div class=\"cskip-faq__a\"><div class=\"cskip-faq__inner\"><div class=\"cskip-faq__text\">That method only searches for reCAPTCHA and hCaptcha widgets, and CapSkip answers both through its 2Captcha emulation. Anything else on the page, such as Turnstile, a GeeTest v3 slide, ALTCHA or an image CAPTCHA, is invisible to the plugin, so handle it with the capskip SDK in the same script, right beside the plugin call.<\/div><\/div><\/div>\n\t\t\t\t\t\t\t\t<\/details>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<details class=\"cskip-faq__q\">\n\t\t\t\t\t\t\t\t\t<summary>Can Puppeteer pass the full-page Cloudflare check?<\/summary>\n\t\t\t\t\t\t\t\t\t<div class=\"cskip-faq__a\"><div class=\"cskip-faq__inner\"><div class=\"cskip-faq__text\">Yes. For a widget embedded in a form, give solver.turnstile() the sitekey plus the current URL, then fill cf-turnstile-response. The full-page check also needs the data and pagedata strings the challenge exposes. Its result carries the userAgent the token was issued under, so switch to it with page.setUserAgent before you submit.<\/div><\/div><\/div>\n\t\t\t\t\t\t\t\t<\/details>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<details class=\"cskip-faq__q\">\n\t\t\t\t\t\t\t\t\t<summary>Is puppeteer-extra-plugin-stealth enough to avoid CAPTCHAs?<\/summary>\n\t\t\t\t\t\t\t\t\t<div class=\"cskip-faq__a\"><div class=\"cskip-faq__inner\"><div class=\"cskip-faq__text\">It lowers how often they show up, not whether they can. Stealth patches hide the signals that mark headless Chrome as automated, yet a site can still serve a challenge, and that one needs a real answer. Run stealth for fewer prompts and CapSkip for the prompts that remain.<\/div><\/div><\/div>\n\t\t\t\t\t\t\t\t<\/details>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<details class=\"cskip-faq__q\">\n\t\t\t\t\t\t\t\t\t<summary>What changes for reCAPTCHA v3 in Puppeteer?<\/summary>\n\t\t\t\t\t\t\t\t\t<div class=\"cskip-faq__a\"><div class=\"cskip-faq__inner\"><div class=\"cskip-faq__text\">There is no widget to fill, only a score. Call solver.recaptcha() with version set to v3 and the action string the site hands to grecaptcha.execute, then send the token along with the request the page would make. Google rates v3 tokens by IP reputation and browser signals, and a clean proxy matters when a site wants a high score.<\/div><\/div><\/div>\n\t\t\t\t\t\t\t\t<\/details>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<details class=\"cskip-faq__q\">\n\t\t\t\t\t\t\t\t\t<summary>Can the CapSkip extension run in headless Puppeteer?<\/summary>\n\t\t\t\t\t\t\t\t\t<div class=\"cskip-faq__a\"><div class=\"cskip-faq__inner\"><div class=\"cskip-faq__text\">Yes, in Chrome's new headless mode, the default since Puppeteer 22, and with a visible window. The legacy headless shell has no extension support at all. Either way the extension needs the CapSkip app running. The SDK and the puppeteer-extra route have no such limit, since neither asks the browser to do the solving.<\/div><\/div><\/div>\n\t\t\t\t\t\t\t\t<\/details>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\n\t\t\t\t\t\t<section class=\"cskl-final\">\n\t\t\t\t<h2>Give every Puppeteer run a way past the CAPTCHA<\/h2>\n\t\t\t\t<p>Install CapSkip next to your Node.js project, keep the plugin you have or add the npm client, and the next challenge costs one awaited call instead of a stalled tab, at the same monthly price.<\/p>\n\t\t\t\t<div class=\"cskl-final__cta\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"cskl-btn cskl-btn--primary\" href=\"https:\/\/capskip.com\/zh\/product\/trial-license\/\">Start free trial <svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4.5 12h15M13.5 6l6 6-6 6\"\/><\/svg><\/a>\n\t\t\t\t\t<a class=\"cskl-btn cskl-btn--purple\" href=\"#licenses\"><svg class=\"csi\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M3.5 16.5a4 4 0 1 0 8 0 4 4 0 1 0-8 0M10.4 13.6 20 4\"\/><path class=\"a\" d=\"M17 7l2.5 2.5M14.5 9.5l2 2\"\/><\/svg> Buy a license<\/a>\n\t\t\t\t<\/div>\n\t\t\t<\/section>\n\n\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-24537","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/capskip.com\/zh\/wp-json\/wp\/v2\/pages\/24537","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/capskip.com\/zh\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/capskip.com\/zh\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/capskip.com\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/capskip.com\/zh\/wp-json\/wp\/v2\/comments?post=24537"}],"version-history":[{"count":3,"href":"https:\/\/capskip.com\/zh\/wp-json\/wp\/v2\/pages\/24537\/revisions"}],"predecessor-version":[{"id":24569,"href":"https:\/\/capskip.com\/zh\/wp-json\/wp\/v2\/pages\/24537\/revisions\/24569"}],"wp:attachment":[{"href":"https:\/\/capskip.com\/zh\/wp-json\/wp\/v2\/media?parent=24537"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}