Solve hCaptcha in Octo Browser profiles.

Octo Browser is an anti-detect browser that runs many browser profiles, each with its own fingerprint and proxy. Its profiles take Chrome Web Store extensions, and the NoneCap hCaptcha solver is on the Chrome Web Store: add it in a profile's Extensions section and it solves hCaptcha there as you browse. If you start profiles from code through Octo'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 to a profile

These steps follow Octo Browser's own installing extensions page. Extensions work in Windows and macOS profiles, not Android profiles. This is the NoneCap listing's URL:

NoneCap on the Chrome Web Store
https://chromewebstore.google.com/detail/nonecap-%E2%80%94-hcaptcha-auto-s/kahepbmokpbbkfognbmimpmnlfibcolf
  1. Copy the URL above.
  2. In Octo Browser, open the profile's settings (or a template's) and check that Extensions is on under Cloud storage. Octo saves a profile's extensions only with that switch on.
  3. Go to Extensions and click Add a new extension.
  4. In the From the Web Store tab, paste the URL and click Add. Leave Enable auto-update ticked so the extension keeps updating.
  5. Save the profile, start it and open a page with hCaptcha. When the challenge opens, the extension solves it on the page.

Other ways to add it

  • Many profiles at once. Once added, the extension is in your account's extension list for every team member and device. Tick the profiles in the client, click Extensions at the bottom and click + next to NoneCap. Octo applies bulk changes to up to 1,000 profiles at a time, and not to profiles that are running.
  • Inside a running profile. Start a profile, open the NoneCap listing and click Add to Chrome, then close the profile so Octo syncs the extension to your account.
  • From a file. Every NoneCap extension release is published on GitHub as a zip. In Add a new extension, the From file or folder tab takes the zip or the unzipped folder.

Things to know

  • Windows and macOS profiles only. Octo's docs say extensions cannot be added to Android profiles.
  • The extension needs Chrome 120 or newer.
  • Extensions belong to your Octo account. If you transfer a profile to another Octo account, the extension does not go with it.
  • 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

Octo's Local API runs inside the desktop app on http://localhost:58888 while the app is open and signed in. A POST to /api/profiles/start with the profile's uuid and debug_port: true starts it with an automation port and returns ws_endpoint and debug_port. Playwright and Puppeteer connect to ws_endpoint; Selenium attaches through debuggerAddress at 127.0.0.1: plus debug_port, as Octo's API guide shows. A POST to /api/profiles/stop with the same uuid closes it. Octo's pricing page lists API access on Base and higher plans.

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 playwright), put the token in h-captcha-response and submit:

Node · Octo Browser + Playwright
import { chromium } from "playwright";
import { NoneCap } from "nonecap";

const OCTO = "http://localhost:58888/api/profiles";
const uuid = process.env.OCTO_PROFILE_UUID;
const nc = new NoneCap({ apiKey: process.env.NONECAP_KEY });

// The Octo Browser app must be running and signed in.
const res = await fetch(`${OCTO}/start`, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ uuid, headless: false, debug_port: true }),
});
const started = await res.json();
if (!res.ok) throw new Error(`Octo start failed: ${JSON.stringify(started)}`);

const browser = await chromium.connectOverCDP(started.ws_endpoint);
const page = await browser.contexts()[0].newPage();
await page.goto("https://target.example/login", { waitUntil: "networkidle" });

const sitekey = await page.getAttribute("[data-sitekey]", "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.close();
await fetch(`${OCTO}/stop`, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ uuid }),
});

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 Playwright guide shows how. If a profile's proxy is slow to connect, Octo's docs suggest raising timeout (seconds) in the start request.

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 Octo Browser?
Yes. Octo Browser adds Chrome Web Store extensions to profiles from the Extensions section of the profile or template editor, and the NoneCap hCaptcha solver is on the Chrome Web Store. Paste the listing's link in the From the Web Store tab and click Add. The steps are at the top of this page.
Why doesn't the extension show up or stay in my profile?
Octo's docs say extensions are saved only when Extensions is turned on in the profile's Cloud storage settings, so check that first. Extensions also work only in Windows and macOS profiles, not Android profiles.
Which Octo Browser plan do I need?
Octo's docs and pricing page list no plan limit on extensions. Octo's pricing page lists access to the API on Base and higher, not on Starter, so the code route below needs Base or higher.
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 Octo Browser API?
Yes. Start the profile with a POST to localhost:58888/api/profiles/start and debug_port: true, connect Playwright or Puppeteer to the ws_endpoint it 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.