Solve hCaptcha in Dolphin{anty} profiles.

Dolphin{anty} is an anti-detect browser that runs many browser profiles, each with its own fingerprint and proxy. It installs Chrome Web Store extensions into those profiles, and the NoneCap hCaptcha solver is on the Chrome Web Store: add it once in the Extensions section and it solves hCaptcha in your profiles as you browse. If you start profiles from code through Dolphin{anty}'s local API, request tokens from the NoneCap API instead; that route is further down. NoneCap is a captcha solver service that focuses on hCaptcha, and does not solve reCAPTCHA or Turnstile.

Add the extension from the Chrome Web Store

These steps follow Dolphin{anty}'s own How to add extensions page. Dolphin{anty} wants the store link without anything after a ?, so use this one:

NoneCap on the Chrome Web Store
https://chromewebstore.google.com/detail/nonecap-%E2%80%94-hcaptcha-auto-s/kahepbmokpbbkfognbmimpmnlfibcolf
  1. Copy the link above.
  2. In Dolphin{anty}, open Extensions in the left menu and click + next to the search bar.
  3. On the Chrome Web Store tab, paste the link.
  4. Choose All sites to add it to every profile, or the profile type (FB, Google, Crypto, TikTok) whose profiles should get it. You can also share it with your team, and it then appears in their profiles of that type.
  5. Click Create, start a profile and open a page with hCaptcha. When the challenge opens, the extension solves it on the page.

Dolphin{anty} recommends this route over installing from the store inside a profile: its extensions FAQ says an in-profile install takes more space and can slow profiles down, and an install through the app reaches every profile of the chosen type at once. The same FAQ says extensions update automatically either way.

Or upload the release zip

Every NoneCap extension release is also published on GitHub. In the same dialog, switch to the Upload file tab, give the extension a name and upload the zip. Dolphin{anty} needs the files at the top of the archive, not inside a subfolder, and zip uploads need the Starter plan or higher.

Things to know

  • Extension limits by plan, from Dolphin{anty}'s docs: 10 on Free, 25 on Starter, no limit on Base, Team and Enterprise.
  • The extension needs Chrome 120 or newer. Dolphin{anty} warns that extensions can misbehave in profiles with an outdated user agent; its FAQ says to update the profile's user agent if that happens.
  • If the extension is missing from a profile, check that it was added for that profile's type, or for All sites.
  • While it solves, the browser shows a "started debugging this browser" banner. That is expected: the extension attaches only for the solve and detaches when the attempt ends. The extension privacy policy says what it sends.
  • Settings and your API key are stored per profile.

Free solves or your API key

The extension includes 100 free solves a day without an account, which suits a few profiles. For more, create a NoneCap account, copy an API key from the dashboard and paste it into the extension's options in each profile. Solves then draw from your balance, from 1 credit per challenge round, and a failed solve is never charged. See pricing.

Profiles you start from code

Dolphin{anty}'s Basic Automation page describes the local API: with the app running and signed in (with your login, or with an API token from your Dolphin{anty} account), a GET to /v1.0/browser_profiles/PROFILE_ID/start?automation=1 on port 3001 starts the profile and returns an automation object with a port and a wsEndpoint. Puppeteer connects to ws://127.0.0.1:port plus that path; Playwright's connectOverCDP takes the same address. If port 3001 was busy, the app picks another one and shows it in its Health window.

In a script, request the token yourself rather than waiting on the extension: read the page's sitekey, call NoneCap with the Node SDK (npm install nonecap puppeteer-core), put the token in h-captcha-response and submit:

Node · Dolphin{anty} + Puppeteer
import puppeteer from "puppeteer-core";
import { NoneCap } from "nonecap";

const DOLPHIN = "http://localhost:3001/v1.0";
const PROFILE_ID = process.env.DOLPHIN_PROFILE_ID;
const nc = new NoneCap({ apiKey: process.env.NONECAP_KEY });

// The Dolphin{anty} app must be running and signed in; a token signs it in.
await fetch(`${DOLPHIN}/auth/login-with-token`, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ token: process.env.DOLPHIN_API_TOKEN }),
});

const started = await (
  await fetch(`${DOLPHIN}/browser_profiles/${PROFILE_ID}/start?automation=1`)
).json();
const { port, wsEndpoint } = started.automation;
const browser = await puppeteer.connect({
  browserWSEndpoint: `ws://127.0.0.1:${port}${wsEndpoint}`,
});

const page = await browser.newPage();
await page.goto("https://target.example/login", { waitUntil: "networkidle2" });

const sitekey = await page.$eval("[data-sitekey]", (el) =>
  el.getAttribute("data-sitekey")
);
const solve = await nc.solve({
  type: "hcaptcha",
  sitekey,
  url: page.url(),
  user_agent: await page.evaluate(() => navigator.userAgent),
  // proxy: "http://user:pass@host:port",  // the profile's own proxy, if it has one
});

await page.evaluate((token) => {
  for (const name of ["h-captcha-response", "g-recaptcha-response"]) {
    const el = document.querySelector(`textarea[name="${name}"]`);
    if (el) el.value = token;
  }
}, solve.token);
await Promise.all([page.waitForNavigation(), page.click("[type=submit]")]);

await browser.disconnect();
await fetch(`${DOLPHIN}/browser_profiles/${PROFILE_ID}/stop`);

Pass the profile's user agent as user_agent, as above: some sites accept a token only from the browser version that solved it. If the profile runs through a proxy, send that proxy as proxy so the token is solved from the same address the profile submits it from. For an invisible widget, call its data-callback with the token after injecting it; the Puppeteer guide shows how. For Selenium, Dolphin{anty} recommends its own ChromeDriver build, linked from the same Basic Automation page.

Dolphin{anty} is a NoneCap partner

Dolphin{anty} is on our partners page, with 20% off Dolphin{anty} for NoneCap users with the code NONECAP20 at dolphin-anty.com.

Use it where you're allowed to

NoneCap's terms rule out fraud, credential stuffing, spam and unauthorised access, and leave it to you to check the terms of the sites your profiles visit.

Last updated November 2026.

Frequently asked

Can I add a captcha solver extension to Dolphin{anty}?
Yes. Dolphin{anty} adds extensions from a Chrome Web Store link in its Extensions section, and the NoneCap hCaptcha solver is on the Chrome Web Store. Paste the listing's link, choose All sites (or one profile type) and click Create. The steps are at the top of this page.
Why doesn't the extension show up in my profile?
Dolphin{anty}'s FAQ gives two causes: the extension was added for a different profile type than the profile has (an extension added for TikTok profiles does not load in FB profiles), or the install went wrong. Pick All sites, or remove the extension in Extensions and add it again from the Chrome Web Store link.
Does it work on the Free plan?
The extension does: Dolphin{anty} lets Free accounts add up to 10 extensions from the Chrome Web Store. Uploading a zip needs Starter or higher, and Dolphin{anty}'s plan page lists API automation among the things the Free plan does not include, so the code route below needs a paid plan.
Does it solve reCAPTCHA or Cloudflare Turnstile?
No. NoneCap solves hCaptcha only: image grids, drag puzzles and point-on-image challenges. For reCAPTCHA or Turnstile you need a different solver.
Can I use NoneCap with the Dolphin{anty} API?
Yes. Start the profile with automation=1, connect Puppeteer or Playwright to the port and wsEndpoint the response returns, and request the token from the NoneCap API. The Node example on this page does exactly that.

Start solving hCaptcha in minutes.

1,300 free credits on signup. Pay per solve, credits never expire, failed solves never charged.