Solve hCaptcha in Multilogin profiles.
Multilogin X is an anti-detect browser that runs many browser profiles, each with its own fingerprint and proxy. Its Mimic profiles take Chrome Web Store extensions, and the NoneCap hCaptcha solver is on the Chrome Web Store: add it in the extension manager, assign it to the profiles you choose, and it solves hCaptcha there as you browse. If you start profiles from code through the Multilogin launcher, 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 in the extension manager
These steps follow Multilogin's own installing browser extensions page. The extension manager is on Pro 20 and higher plans, for the account owner and managers. This is the NoneCap listing's URL:
https://chromewebstore.google.com/detail/nonecap-%E2%80%94-hcaptcha-auto-s/kahepbmokpbbkfognbmimpmnlfibcolf - Copy the URL above.
- In Multilogin X, click Extensions in the top menu, then Add.
- Choose local or cloud storage, paste the URL and click Add.
- Assign it to profiles: select the extension and click Manage assigned profiles, pick the profiles and click Confirm. You can also right-click profiles under Profiles, Browser and choose Extensions, or pick it in the Extra section when you create or edit a profile.
- Start a Mimic profile and open a page with hCaptcha. When the challenge opens, the extension solves it on the page.
Two other ways in
- Inside one profile. Start a Mimic profile, open the NoneCap listing and click Add to Chrome. It installs in that profile only.
- For every Mimic profile. Every NoneCap extension release is published on GitHub as a zip. Create the
custom_extensionsandmimicfolders inside themlxfolder in your home folder if they are not there, and unzip the release into its own folder insidemlx/custom_extensions/mimic(the folder must holdmanifest.json; a.crxalone does not work). Multilogin applies extensions in that folder to all Mimic profiles, new and existing.
On the folder route you can set your NoneCap API key once for every
profile: the zip includes provision.example.json. Copy it to
provision.json next to manifest.json, put your key
in it, and each profile that loads the folder picks the key up when the
extension starts. A folder you copied stays on that release; to update,
replace it with the newer release (and copy your provision.json
across).
Things to know
- Mimic profiles only. Multilogin's help center says Chrome extensions do not work in Stealthfox, which it describes as a legacy browser that no longer gets core updates.
- The extension needs Chrome 120 or newer.
- An extension stays in a profile until you remove it, and one saved extension can be assigned to many profiles.
- 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, or set it once with provision.json on the folder
route above. 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
Multilogin's
Playwright,
Puppeteer
and
Selenium
examples share one pattern: with the desktop app running, a GET
to launcher.mlx.yt:45001/api/v2/profile/f/FOLDER_ID/p/PROFILE_ID/start
with automation_type set starts a Mimic profile and returns
data.port; your tool connects to http://127.0.0.1:
plus that port. The request carries your Multilogin token as a Bearer
header. The API token you copy from Info in the app lasts
30 minutes; for longer runs Multilogin's
automation token
page shows how to create one. Automation is on Pro 10 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 Python SDK (pip install nonecap playwright requests),
put the token in h-captcha-response and submit:
import os
import requests
from nonecap import NoneCap
from playwright.sync_api import sync_playwright
LAUNCHER = "https://launcher.mlx.yt:45001/api"
HEADERS = {"Accept": "application/json", "Authorization": f"Bearer {os.environ['MLX_TOKEN']}"}
FOLDER_ID = os.environ["MLX_FOLDER_ID"]
PROFILE_ID = os.environ["MLX_PROFILE_ID"]
nc = NoneCap(api_key=os.environ["NONECAP_KEY"])
started = requests.get(
f"{LAUNCHER}/v2/profile/f/{FOLDER_ID}/p/{PROFILE_ID}/start",
params={"automation_type": "playwright", "headless_mode": "false"},
headers=HEADERS,
)
started.raise_for_status()
port = started.json()["data"]["port"]
with sync_playwright() as pw:
browser = pw.chromium.connect_over_cdp(f"http://127.0.0.1:{port}")
page = browser.contexts[0].new_page()
page.goto("https://target.example/login", wait_until="networkidle")
sitekey = page.get_attribute("[data-sitekey]", "data-sitekey")
solve = nc.solve(
type="hcaptcha",
sitekey=sitekey,
url=page.url,
user_agent=page.evaluate("navigator.userAgent"),
# proxy="http://user:pass@host:port", # the profile's own proxy, if it has one
)
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,
)
with page.expect_navigation():
page.click("[type=submit]")
browser.close()
requests.get(f"{LAUNCHER}/v1/profile/stop/p/{PROFILE_ID}", headers=HEADERS)
nc.close()
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. Multilogin's examples also say to use a Playwright or Puppeteer version
that matches the current Mimic core.
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 Multilogin?
Does it work in Stealthfox profiles?
Which Multilogin plan do I need?
Does it solve reCAPTCHA or Cloudflare Turnstile?
Can I use NoneCap with the Multilogin API?
automation_type=playwright (or puppeteer, selenium), connect to http://127.0.0.1: plus the port it returns, and request the token from the NoneCap API. The Python example on this page does exactly that.