Latest commit

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

solve-captcha

skills.shClawHub

Solve CAPTCHAs from the command line using 2Captcha human-powered service.

Canonical source: https://github.com/adinvadim/2captcha-cli

Privacy and authorized use

This tool sends CAPTCHA images, page URLs, sitekeys, challenge IDs, and task metadata to 2Captcha for processing by the 2Captcha service and its human solvers. Use it only for authorized automation, and do not submit sensitive, regulated, internal, or third-party user data unless you have approval.

Published locations

Features

  • 10 captcha types — Image, reCAPTCHA v2/v3, hCaptcha, Turnstile, FunCaptcha, GeeTest, Amazon WAF
  • Zero dependencies — Pure Python 3 stdlib
  • Human-first design — Clear output, helpful errors, progress indicators
  • Script-friendly--json output, proper exit codes, --quiet mode
  • Flexible config — Flag > env > config file precedence

Installation

Agent skill

# skills.sh: Codex, Claude Code, Cursor, and other supported agents
npx skills add adinvadim/2captcha-cli
npx skills add adinvadim/2captcha-cli --global
npx skills add adinvadim/2captcha-cli --agent codex
npx skills use adinvadim/2captcha-cli@2captcha
# OpenClaw / ClawHub
openclaw skills install 2captcha
clawhub install 2captcha

CLI

# Review source, then install locally
git clone https://github.com/adinvadim/2captcha-cli.git
cd 2captcha-cli
python3 solve-captcha --version
mkdir -p ~/.local/bin
ln -sf "$PWD/solve-captcha"~/.local/bin/solve-captcha
# Or with Homebrew (coming soon)# brew install adinvadim/tap/solve-captcha# Or clone manually
git clone https://github.com/adinvadim/2captcha-cli.git
cd 2captcha-cli
chmod +x solve-captcha
sudo ln -s $(pwd)/solve-captcha /usr/local/bin/

Old adamvinsky/2captcha-cli links are obsolete. Use adinvadim/2captcha-cli.

Configuration

API key lookup order:

  1. --api-key / -k flag
  2. TWOCAPTCHA_API_KEY environment variable
  3. ~/.config/2captcha/api-key file
  4. ~/.2captcha-api-key file
# Option 1: Environmentexport TWOCAPTCHA_API_KEY="your-key"# Option 2: Config file
mkdir -p ~/.config/2captcha
echo"your-key">~/.config/2captcha/api-key

Usage

Quick examples

# Image captcha
solve-captcha image captcha.png
solve-captcha image https://example.com/captcha.jpg --math
# reCAPTCHA v2
solve-captcha recaptcha2 -s 6Le-wvkSAAAA... -u https://example.com
# hCaptcha
solve-captcha hcaptcha -s a5f74b19-9e45... -u https://example.com
# Cloudflare Turnstile
solve-captcha turnstile -s 0x4AAA... -u https://example.com
# Check balance
solve-captcha balance

Do not use these commands on sensitive or internal pages unless sending CAPTCHA content and page metadata to 2Captcha is approved for that workflow.

Commands

CommandDescription
image <file|url>Solve image captcha (OCR)
recaptcha2Solve reCAPTCHA v2
recaptcha3Solve reCAPTCHA v3
hcaptchaSolve hCaptcha
turnstileSolve Cloudflare Turnstile
funcaptchaSolve Arkose Labs FunCaptcha
geetestSolve GeeTest v3
geetest4Solve GeeTest v4
amazonSolve Amazon WAF CAPTCHA
text <question>Solve text question
balanceCheck account balance

Global flags

FlagDescription
-h, --helpShow help
-V, --versionShow version
-k, --api-keyAPI key (overrides env/config)
-j, --jsonOutput full JSON response
-q, --quietSuppress progress output
-v, --verboseVerbose debug output
-t, --timeoutTimeout in seconds (default: 180)
--no-colorDisable colored output

Image captcha options

solve-captcha image captcha.png [options]
OptionDescription
--phraseAnswer contains multiple words
--case-sensitiveCase-sensitive answer
--numeric N0=any, 1=numbers, 2=letters, 3=either, 4=both
--mathRequires calculation
--min-length NMinimum answer length
--max-length NMaximum answer length
--comment TEXTInstructions for solver
--lang LANGLanguage pool (en, rn)

Output

Human mode (default)

$ solve-captcha image captcha.png
Submitting image captcha...
Solving... 12s
✓ Solved in 0.00025 USD
abc123

JSON mode

$ solve-captcha --json image captcha.png
{
"errorId": 0,
"status": "ready",
"solution": {"text": "abc123"},
"cost": "0.00025"
}

Quiet mode (for scripts)

TOKEN=$(solve-captcha -q recaptcha2 -s KEY -u URL)

Exit codes

CodeMeaning
0Success
1General error
2Invalid usage / missing args
3Timeout
4Authentication error
130Interrupted (Ctrl-C)

Environment

Respects standard conventions:

  • NO_COLOR — Disable colors
  • TERM=dumb — Disable colors
  • Non-TTY stderr — Disable progress/colors

Feedback

Open bugs and feature requests in GitHub Issues.

License

MIT © Vadim Kostin (@adinvadim)

About

Solve CAPTCHAs from CLI using 2Captcha service

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

solve-captcha

skills.shClawHub

Solve CAPTCHAs from the command line using 2Captcha human-powered service.

Canonical source: https://github.com/adinvadim/2captcha-cli

Privacy and authorized use

This tool sends CAPTCHA images, page URLs, sitekeys, challenge IDs, and task metadata to 2Captcha for processing by the 2Captcha service and its human solvers. Use it only for authorized automation, and do not submit sensitive, regulated, internal, or third-party user data unless you have approval.

Published locations

Features

  • 10 captcha types — Image, reCAPTCHA v2/v3, hCaptcha, Turnstile, FunCaptcha, GeeTest, Amazon WAF
  • Zero dependencies — Pure Python 3 stdlib
  • Human-first design — Clear output, helpful errors, progress indicators
  • Script-friendly--json output, proper exit codes, --quiet mode
  • Flexible config — Flag > env > config file precedence

Installation

Agent skill

# skills.sh: Codex, Claude Code, Cursor, and other supported agents
npx skills add adinvadim/2captcha-cli
npx skills add adinvadim/2captcha-cli --global
npx skills add adinvadim/2captcha-cli --agent codex
npx skills use adinvadim/2captcha-cli@2captcha
# OpenClaw / ClawHub
openclaw skills install 2captcha
clawhub install 2captcha

CLI

# Review source, then install locally
git clone https://github.com/adinvadim/2captcha-cli.git
cd 2captcha-cli
python3 solve-captcha --version
mkdir -p ~/.local/bin
ln -sf "$PWD/solve-captcha"~/.local/bin/solve-captcha
# Or with Homebrew (coming soon)# brew install adinvadim/tap/solve-captcha# Or clone manually
git clone https://github.com/adinvadim/2captcha-cli.git
cd 2captcha-cli
chmod +x solve-captcha
sudo ln -s $(pwd)/solve-captcha /usr/local/bin/

Old adamvinsky/2captcha-cli links are obsolete. Use adinvadim/2captcha-cli.

Configuration

API key lookup order:

  1. --api-key / -k flag
  2. TWOCAPTCHA_API_KEY environment variable
  3. ~/.config/2captcha/api-key file
  4. ~/.2captcha-api-key file
# Option 1: Environmentexport TWOCAPTCHA_API_KEY="your-key"# Option 2: Config file
mkdir -p ~/.config/2captcha
echo"your-key">~/.config/2captcha/api-key

Usage

Quick examples

# Image captcha
solve-captcha image captcha.png
solve-captcha image https://example.com/captcha.jpg --math
# reCAPTCHA v2
solve-captcha recaptcha2 -s 6Le-wvkSAAAA... -u https://example.com
# hCaptcha
solve-captcha hcaptcha -s a5f74b19-9e45... -u https://example.com
# Cloudflare Turnstile
solve-captcha turnstile -s 0x4AAA... -u https://example.com
# Check balance
solve-captcha balance

Do not use these commands on sensitive or internal pages unless sending CAPTCHA content and page metadata to 2Captcha is approved for that workflow.

Commands

CommandDescription
image <file|url>Solve image captcha (OCR)
recaptcha2Solve reCAPTCHA v2
recaptcha3Solve reCAPTCHA v3
hcaptchaSolve hCaptcha
turnstileSolve Cloudflare Turnstile
funcaptchaSolve Arkose Labs FunCaptcha
geetestSolve GeeTest v3
geetest4Solve GeeTest v4
amazonSolve Amazon WAF CAPTCHA
text <question>Solve text question
balanceCheck account balance

Global flags

FlagDescription
-h, --helpShow help
-V, --versionShow version
-k, --api-keyAPI key (overrides env/config)
-j, --jsonOutput full JSON response
-q, --quietSuppress progress output
-v, --verboseVerbose debug output
-t, --timeoutTimeout in seconds (default: 180)
--no-colorDisable colored output

Image captcha options

solve-captcha image captcha.png [options]
OptionDescription
--phraseAnswer contains multiple words
--case-sensitiveCase-sensitive answer
--numeric N0=any, 1=numbers, 2=letters, 3=either, 4=both
--mathRequires calculation
--min-length NMinimum answer length
--max-length NMaximum answer length
--comment TEXTInstructions for solver
--lang LANGLanguage pool (en, rn)

Output

Human mode (default)

$ solve-captcha image captcha.png
Submitting image captcha...
Solving... 12s
✓ Solved in 0.00025 USD
abc123

JSON mode

$ solve-captcha --json image captcha.png
{
"errorId": 0,
"status": "ready",
"solution": {"text": "abc123"},
"cost": "0.00025"
}

Quiet mode (for scripts)

TOKEN=$(solve-captcha -q recaptcha2 -s KEY -u URL)

Exit codes

CodeMeaning
0Success
1General error
2Invalid usage / missing args
3Timeout
4Authentication error
130Interrupted (Ctrl-C)

Environment

Respects standard conventions:

  • NO_COLOR — Disable colors
  • TERM=dumb — Disable colors
  • Non-TTY stderr — Disable progress/colors

Feedback

Open bugs and feature requests in GitHub Issues.

License

MIT © Vadim Kostin (@adinvadim)

About

Solve CAPTCHAs from CLI using 2Captcha service

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

solve-captcha

skills.shClawHub

Solve CAPTCHAs from the command line using 2Captcha human-powered service.

Canonical source: https://github.com/adinvadim/2captcha-cli

Privacy and authorized use

This tool sends CAPTCHA images, page URLs, sitekeys, challenge IDs, and task metadata to 2Captcha for processing by the 2Captcha service and its human solvers. Use it only for authorized automation, and do not submit sensitive, regulated, internal, or third-party user data unless you have approval.

Published locations

Features

  • 10 captcha types — Image, reCAPTCHA v2/v3, hCaptcha, Turnstile, FunCaptcha, GeeTest, Amazon WAF
  • Zero dependencies — Pure Python 3 stdlib
  • Human-first design — Clear output, helpful errors, progress indicators
  • Script-friendly--json output, proper exit codes, --quiet mode
  • Flexible config — Flag > env > config file precedence

Installation

Agent skill

# skills.sh: Codex, Claude Code, Cursor, and other supported agents
npx skills add adinvadim/2captcha-cli
npx skills add adinvadim/2captcha-cli --global
npx skills add adinvadim/2captcha-cli --agent codex
npx skills use adinvadim/2captcha-cli@2captcha
# OpenClaw / ClawHub
openclaw skills install 2captcha
clawhub install 2captcha

CLI

# Review source, then install locally
git clone https://github.com/adinvadim/2captcha-cli.git
cd 2captcha-cli
python3 solve-captcha --version
mkdir -p ~/.local/bin
ln -sf "$PWD/solve-captcha"~/.local/bin/solve-captcha
# Or with Homebrew (coming soon)# brew install adinvadim/tap/solve-captcha# Or clone manually
git clone https://github.com/adinvadim/2captcha-cli.git
cd 2captcha-cli
chmod +x solve-captcha
sudo ln -s $(pwd)/solve-captcha /usr/local/bin/

Old adamvinsky/2captcha-cli links are obsolete. Use adinvadim/2captcha-cli.

Configuration

API key lookup order:

  1. --api-key / -k flag
  2. TWOCAPTCHA_API_KEY environment variable
  3. ~/.config/2captcha/api-key file
  4. ~/.2captcha-api-key file
# Option 1: Environmentexport TWOCAPTCHA_API_KEY="your-key"# Option 2: Config file
mkdir -p ~/.config/2captcha
echo"your-key">~/.config/2captcha/api-key

Usage

Quick examples

# Image captcha
solve-captcha image captcha.png
solve-captcha image https://example.com/captcha.jpg --math
# reCAPTCHA v2
solve-captcha recaptcha2 -s 6Le-wvkSAAAA... -u https://example.com
# hCaptcha
solve-captcha hcaptcha -s a5f74b19-9e45... -u https://example.com
# Cloudflare Turnstile
solve-captcha turnstile -s 0x4AAA... -u https://example.com
# Check balance
solve-captcha balance

Do not use these commands on sensitive or internal pages unless sending CAPTCHA content and page metadata to 2Captcha is approved for that workflow.

Commands

CommandDescription
image <file|url>Solve image captcha (OCR)
recaptcha2Solve reCAPTCHA v2
recaptcha3Solve reCAPTCHA v3
hcaptchaSolve hCaptcha
turnstileSolve Cloudflare Turnstile
funcaptchaSolve Arkose Labs FunCaptcha
geetestSolve GeeTest v3
geetest4Solve GeeTest v4
amazonSolve Amazon WAF CAPTCHA
text <question>Solve text question
balanceCheck account balance

Global flags

FlagDescription
-h, --helpShow help
-V, --versionShow version
-k, --api-keyAPI key (overrides env/config)
-j, --jsonOutput full JSON response
-q, --quietSuppress progress output
-v, --verboseVerbose debug output
-t, --timeoutTimeout in seconds (default: 180)
--no-colorDisable colored output

Image captcha options

solve-captcha image captcha.png [options]
OptionDescription
--phraseAnswer contains multiple words
--case-sensitiveCase-sensitive answer
--numeric N0=any, 1=numbers, 2=letters, 3=either, 4=both
--mathRequires calculation
--min-length NMinimum answer length
--max-length NMaximum answer length
--comment TEXTInstructions for solver
--lang LANGLanguage pool (en, rn)

Output

Human mode (default)

$ solve-captcha image captcha.png
Submitting image captcha...
Solving... 12s
✓ Solved in 0.00025 USD
abc123

JSON mode

$ solve-captcha --json image captcha.png
{
"errorId": 0,
"status": "ready",
"solution": {"text": "abc123"},
"cost": "0.00025"
}

Quiet mode (for scripts)

TOKEN=$(solve-captcha -q recaptcha2 -s KEY -u URL)

Exit codes

CodeMeaning
0Success
1General error
2Invalid usage / missing args
3Timeout
4Authentication error
130Interrupted (Ctrl-C)

Environment

Respects standard conventions:

  • NO_COLOR — Disable colors
  • TERM=dumb — Disable colors
  • Non-TTY stderr — Disable progress/colors

Feedback

Open bugs and feature requests in GitHub Issues.

License

MIT © Vadim Kostin (@adinvadim)

About

Solve CAPTCHAs from CLI using 2Captcha service

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

solve-captcha

skills.shClawHub

Solve CAPTCHAs from the command line using 2Captcha human-powered service.

Canonical source: https://github.com/adinvadim/2captcha-cli

Privacy and authorized use

This tool sends CAPTCHA images, page URLs, sitekeys, challenge IDs, and task metadata to 2Captcha for processing by the 2Captcha service and its human solvers. Use it only for authorized automation, and do not submit sensitive, regulated, internal, or third-party user data unless you have approval.

Published locations

Features

  • 10 captcha types — Image, reCAPTCHA v2/v3, hCaptcha, Turnstile, FunCaptcha, GeeTest, Amazon WAF
  • Zero dependencies — Pure Python 3 stdlib
  • Human-first design — Clear output, helpful errors, progress indicators
  • Script-friendly--json output, proper exit codes, --quiet mode
  • Flexible config — Flag > env > config file precedence

Installation

Agent skill

# skills.sh: Codex, Claude Code, Cursor, and other supported agents
npx skills add adinvadim/2captcha-cli
npx skills add adinvadim/2captcha-cli --global
npx skills add adinvadim/2captcha-cli --agent codex
npx skills use adinvadim/2captcha-cli@2captcha
# OpenClaw / ClawHub
openclaw skills install 2captcha
clawhub install 2captcha

CLI

# Review source, then install locally
git clone https://github.com/adinvadim/2captcha-cli.git
cd 2captcha-cli
python3 solve-captcha --version
mkdir -p ~/.local/bin
ln -sf "$PWD/solve-captcha"~/.local/bin/solve-captcha
# Or with Homebrew (coming soon)# brew install adinvadim/tap/solve-captcha# Or clone manually
git clone https://github.com/adinvadim/2captcha-cli.git
cd 2captcha-cli
chmod +x solve-captcha
sudo ln -s $(pwd)/solve-captcha /usr/local/bin/

Old adamvinsky/2captcha-cli links are obsolete. Use adinvadim/2captcha-cli.

Configuration

API key lookup order:

  1. --api-key / -k flag
  2. TWOCAPTCHA_API_KEY environment variable
  3. ~/.config/2captcha/api-key file
  4. ~/.2captcha-api-key file
# Option 1: Environmentexport TWOCAPTCHA_API_KEY="your-key"# Option 2: Config file
mkdir -p ~/.config/2captcha
echo"your-key">~/.config/2captcha/api-key

Usage

Quick examples

# Image captcha
solve-captcha image captcha.png
solve-captcha image https://example.com/captcha.jpg --math
# reCAPTCHA v2
solve-captcha recaptcha2 -s 6Le-wvkSAAAA... -u https://example.com
# hCaptcha
solve-captcha hcaptcha -s a5f74b19-9e45... -u https://example.com
# Cloudflare Turnstile
solve-captcha turnstile -s 0x4AAA... -u https://example.com
# Check balance
solve-captcha balance

Do not use these commands on sensitive or internal pages unless sending CAPTCHA content and page metadata to 2Captcha is approved for that workflow.

Commands

CommandDescription
image <file|url>Solve image captcha (OCR)
recaptcha2Solve reCAPTCHA v2
recaptcha3Solve reCAPTCHA v3
hcaptchaSolve hCaptcha
turnstileSolve Cloudflare Turnstile
funcaptchaSolve Arkose Labs FunCaptcha
geetestSolve GeeTest v3
geetest4Solve GeeTest v4
amazonSolve Amazon WAF CAPTCHA
text <question>Solve text question
balanceCheck account balance

Global flags

FlagDescription
-h, --helpShow help
-V, --versionShow version
-k, --api-keyAPI key (overrides env/config)
-j, --jsonOutput full JSON response
-q, --quietSuppress progress output
-v, --verboseVerbose debug output
-t, --timeoutTimeout in seconds (default: 180)
--no-colorDisable colored output

Image captcha options

solve-captcha image captcha.png [options]
OptionDescription
--phraseAnswer contains multiple words
--case-sensitiveCase-sensitive answer
--numeric N0=any, 1=numbers, 2=letters, 3=either, 4=both
--mathRequires calculation
--min-length NMinimum answer length
--max-length NMaximum answer length
--comment TEXTInstructions for solver
--lang LANGLanguage pool (en, rn)

Output

Human mode (default)

$ solve-captcha image captcha.png
Submitting image captcha...
Solving... 12s
✓ Solved in 0.00025 USD
abc123

JSON mode

$ solve-captcha --json image captcha.png
{
"errorId": 0,
"status": "ready",
"solution": {"text": "abc123"},
"cost": "0.00025"
}

Quiet mode (for scripts)

TOKEN=$(solve-captcha -q recaptcha2 -s KEY -u URL)

Exit codes

CodeMeaning
0Success
1General error
2Invalid usage / missing args
3Timeout
4Authentication error
130Interrupted (Ctrl-C)

Environment

Respects standard conventions:

  • NO_COLOR — Disable colors
  • TERM=dumb — Disable colors
  • Non-TTY stderr — Disable progress/colors

Feedback

Open bugs and feature requests in GitHub Issues.

License

MIT © Vadim Kostin (@adinvadim)

About

Solve CAPTCHAs from CLI using 2Captcha service

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

solve-captcha

skills.shClawHub

Solve CAPTCHAs from the command line using 2Captcha human-powered service.

Canonical source: https://github.com/adinvadim/2captcha-cli

Privacy and authorized use

This tool sends CAPTCHA images, page URLs, sitekeys, challenge IDs, and task metadata to 2Captcha for processing by the 2Captcha service and its human solvers. Use it only for authorized automation, and do not submit sensitive, regulated, internal, or third-party user data unless you have approval.

Published locations

Features

  • 10 captcha types — Image, reCAPTCHA v2/v3, hCaptcha, Turnstile, FunCaptcha, GeeTest, Amazon WAF
  • Zero dependencies — Pure Python 3 stdlib
  • Human-first design — Clear output, helpful errors, progress indicators
  • Script-friendly--json output, proper exit codes, --quiet mode
  • Flexible config — Flag > env > config file precedence

Installation

Agent skill

# skills.sh: Codex, Claude Code, Cursor, and other supported agents
npx skills add adinvadim/2captcha-cli
npx skills add adinvadim/2captcha-cli --global
npx skills add adinvadim/2captcha-cli --agent codex
npx skills use adinvadim/2captcha-cli@2captcha
# OpenClaw / ClawHub
openclaw skills install 2captcha
clawhub install 2captcha

CLI

# Review source, then install locally
git clone https://github.com/adinvadim/2captcha-cli.git
cd 2captcha-cli
python3 solve-captcha --version
mkdir -p ~/.local/bin
ln -sf "$PWD/solve-captcha"~/.local/bin/solve-captcha
# Or with Homebrew (coming soon)# brew install adinvadim/tap/solve-captcha# Or clone manually
git clone https://github.com/adinvadim/2captcha-cli.git
cd 2captcha-cli
chmod +x solve-captcha
sudo ln -s $(pwd)/solve-captcha /usr/local/bin/

Old adamvinsky/2captcha-cli links are obsolete. Use adinvadim/2captcha-cli.

Configuration

API key lookup order:

  1. --api-key / -k flag
  2. TWOCAPTCHA_API_KEY environment variable
  3. ~/.config/2captcha/api-key file
  4. ~/.2captcha-api-key file
# Option 1: Environmentexport TWOCAPTCHA_API_KEY="your-key"# Option 2: Config file
mkdir -p ~/.config/2captcha
echo"your-key">~/.config/2captcha/api-key

Usage

Quick examples

# Image captcha
solve-captcha image captcha.png
solve-captcha image https://example.com/captcha.jpg --math
# reCAPTCHA v2
solve-captcha recaptcha2 -s 6Le-wvkSAAAA... -u https://example.com
# hCaptcha
solve-captcha hcaptcha -s a5f74b19-9e45... -u https://example.com
# Cloudflare Turnstile
solve-captcha turnstile -s 0x4AAA... -u https://example.com
# Check balance
solve-captcha balance

Do not use these commands on sensitive or internal pages unless sending CAPTCHA content and page metadata to 2Captcha is approved for that workflow.

Commands

CommandDescription
image <file|url>Solve image captcha (OCR)
recaptcha2Solve reCAPTCHA v2
recaptcha3Solve reCAPTCHA v3
hcaptchaSolve hCaptcha
turnstileSolve Cloudflare Turnstile
funcaptchaSolve Arkose Labs FunCaptcha
geetestSolve GeeTest v3
geetest4Solve GeeTest v4
amazonSolve Amazon WAF CAPTCHA
text <question>Solve text question
balanceCheck account balance

Global flags

FlagDescription
-h, --helpShow help
-V, --versionShow version
-k, --api-keyAPI key (overrides env/config)
-j, --jsonOutput full JSON response
-q, --quietSuppress progress output
-v, --verboseVerbose debug output
-t, --timeoutTimeout in seconds (default: 180)
--no-colorDisable colored output

Image captcha options

solve-captcha image captcha.png [options]
OptionDescription
--phraseAnswer contains multiple words
--case-sensitiveCase-sensitive answer
--numeric N0=any, 1=numbers, 2=letters, 3=either, 4=both
--mathRequires calculation
--min-length NMinimum answer length
--max-length NMaximum answer length
--comment TEXTInstructions for solver
--lang LANGLanguage pool (en, rn)

Output

Human mode (default)

$ solve-captcha image captcha.png
Submitting image captcha...
Solving... 12s
✓ Solved in 0.00025 USD
abc123

JSON mode

$ solve-captcha --json image captcha.png
{
"errorId": 0,
"status": "ready",
"solution": {"text": "abc123"},
"cost": "0.00025"
}

Quiet mode (for scripts)

TOKEN=$(solve-captcha -q recaptcha2 -s KEY -u URL)

Exit codes

CodeMeaning
0Success
1General error
2Invalid usage / missing args
3Timeout
4Authentication error
130Interrupted (Ctrl-C)

Environment

Respects standard conventions:

  • NO_COLOR — Disable colors
  • TERM=dumb — Disable colors
  • Non-TTY stderr — Disable progress/colors

Feedback

Open bugs and feature requests in GitHub Issues.

License

MIT © Vadim Kostin (@adinvadim)

About

Solve CAPTCHAs from CLI using 2Captcha service

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

solve-captcha

skills.shClawHub

Solve CAPTCHAs from the command line using 2Captcha human-powered service.

Canonical source: https://github.com/adinvadim/2captcha-cli

Privacy and authorized use

This tool sends CAPTCHA images, page URLs, sitekeys, challenge IDs, and task metadata to 2Captcha for processing by the 2Captcha service and its human solvers. Use it only for authorized automation, and do not submit sensitive, regulated, internal, or third-party user data unless you have approval.

Published locations

Features

  • 10 captcha types — Image, reCAPTCHA v2/v3, hCaptcha, Turnstile, FunCaptcha, GeeTest, Amazon WAF
  • Zero dependencies — Pure Python 3 stdlib
  • Human-first design — Clear output, helpful errors, progress indicators
  • Script-friendly--json output, proper exit codes, --quiet mode
  • Flexible config — Flag > env > config file precedence

Installation

Agent skill

# skills.sh: Codex, Claude Code, Cursor, and other supported agents
npx skills add adinvadim/2captcha-cli
npx skills add adinvadim/2captcha-cli --global
npx skills add adinvadim/2captcha-cli --agent codex
npx skills use adinvadim/2captcha-cli@2captcha
# OpenClaw / ClawHub
openclaw skills install 2captcha
clawhub install 2captcha

CLI

# Review source, then install locally
git clone https://github.com/adinvadim/2captcha-cli.git
cd 2captcha-cli
python3 solve-captcha --version
mkdir -p ~/.local/bin
ln -sf "$PWD/solve-captcha"~/.local/bin/solve-captcha
# Or with Homebrew (coming soon)# brew install adinvadim/tap/solve-captcha# Or clone manually
git clone https://github.com/adinvadim/2captcha-cli.git
cd 2captcha-cli
chmod +x solve-captcha
sudo ln -s $(pwd)/solve-captcha /usr/local/bin/

Old adamvinsky/2captcha-cli links are obsolete. Use adinvadim/2captcha-cli.

Configuration

API key lookup order:

  1. --api-key / -k flag
  2. TWOCAPTCHA_API_KEY environment variable
  3. ~/.config/2captcha/api-key file
  4. ~/.2captcha-api-key file
# Option 1: Environmentexport TWOCAPTCHA_API_KEY="your-key"# Option 2: Config file
mkdir -p ~/.config/2captcha
echo"your-key">~/.config/2captcha/api-key

Usage

Quick examples

# Image captcha
solve-captcha image captcha.png
solve-captcha image https://example.com/captcha.jpg --math
# reCAPTCHA v2
solve-captcha recaptcha2 -s 6Le-wvkSAAAA... -u https://example.com
# hCaptcha
solve-captcha hcaptcha -s a5f74b19-9e45... -u https://example.com
# Cloudflare Turnstile
solve-captcha turnstile -s 0x4AAA... -u https://example.com
# Check balance
solve-captcha balance

Do not use these commands on sensitive or internal pages unless sending CAPTCHA content and page metadata to 2Captcha is approved for that workflow.

Commands

CommandDescription
image <file|url>Solve image captcha (OCR)
recaptcha2Solve reCAPTCHA v2
recaptcha3Solve reCAPTCHA v3
hcaptchaSolve hCaptcha
turnstileSolve Cloudflare Turnstile
funcaptchaSolve Arkose Labs FunCaptcha
geetestSolve GeeTest v3
geetest4Solve GeeTest v4
amazonSolve Amazon WAF CAPTCHA
text <question>Solve text question
balanceCheck account balance

Global flags

FlagDescription
-h, --helpShow help
-V, --versionShow version
-k, --api-keyAPI key (overrides env/config)
-j, --jsonOutput full JSON response
-q, --quietSuppress progress output
-v, --verboseVerbose debug output
-t, --timeoutTimeout in seconds (default: 180)
--no-colorDisable colored output

Image captcha options

solve-captcha image captcha.png [options]
OptionDescription
--phraseAnswer contains multiple words
--case-sensitiveCase-sensitive answer
--numeric N0=any, 1=numbers, 2=letters, 3=either, 4=both
--mathRequires calculation
--min-length NMinimum answer length
--max-length NMaximum answer length
--comment TEXTInstructions for solver
--lang LANGLanguage pool (en, rn)

Output

Human mode (default)

$ solve-captcha image captcha.png
Submitting image captcha...
Solving... 12s
✓ Solved in 0.00025 USD
abc123

JSON mode

$ solve-captcha --json image captcha.png
{
"errorId": 0,
"status": "ready",
"solution": {"text": "abc123"},
"cost": "0.00025"
}

Quiet mode (for scripts)

TOKEN=$(solve-captcha -q recaptcha2 -s KEY -u URL)

Exit codes

CodeMeaning
0Success
1General error
2Invalid usage / missing args
3Timeout
4Authentication error
130Interrupted (Ctrl-C)

Environment

Respects standard conventions:

  • NO_COLOR — Disable colors
  • TERM=dumb — Disable colors
  • Non-TTY stderr — Disable progress/colors

Feedback

Open bugs and feature requests in GitHub Issues.

License

MIT © Vadim Kostin (@adinvadim)

About

Solve CAPTCHAs from CLI using 2Captcha service

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

solve-captcha

skills.shClawHub

Solve CAPTCHAs from the command line using 2Captcha human-powered service.

Canonical source: https://github.com/adinvadim/2captcha-cli

Privacy and authorized use

This tool sends CAPTCHA images, page URLs, sitekeys, challenge IDs, and task metadata to 2Captcha for processing by the 2Captcha service and its human solvers. Use it only for authorized automation, and do not submit sensitive, regulated, internal, or third-party user data unless you have approval.

Published locations

Features

  • 10 captcha types — Image, reCAPTCHA v2/v3, hCaptcha, Turnstile, FunCaptcha, GeeTest, Amazon WAF
  • Zero dependencies — Pure Python 3 stdlib
  • Human-first design — Clear output, helpful errors, progress indicators
  • Script-friendly--json output, proper exit codes, --quiet mode
  • Flexible config — Flag > env > config file precedence

Installation

Agent skill

# skills.sh: Codex, Claude Code, Cursor, and other supported agents
npx skills add adinvadim/2captcha-cli
npx skills add adinvadim/2captcha-cli --global
npx skills add adinvadim/2captcha-cli --agent codex
npx skills use adinvadim/2captcha-cli@2captcha
# OpenClaw / ClawHub
openclaw skills install 2captcha
clawhub install 2captcha

CLI

# Review source, then install locally
git clone https://github.com/adinvadim/2captcha-cli.git
cd 2captcha-cli
python3 solve-captcha --version
mkdir -p ~/.local/bin
ln -sf "$PWD/solve-captcha"~/.local/bin/solve-captcha
# Or with Homebrew (coming soon)# brew install adinvadim/tap/solve-captcha# Or clone manually
git clone https://github.com/adinvadim/2captcha-cli.git
cd 2captcha-cli
chmod +x solve-captcha
sudo ln -s $(pwd)/solve-captcha /usr/local/bin/

Old adamvinsky/2captcha-cli links are obsolete. Use adinvadim/2captcha-cli.

Configuration

API key lookup order:

  1. --api-key / -k flag
  2. TWOCAPTCHA_API_KEY environment variable
  3. ~/.config/2captcha/api-key file
  4. ~/.2captcha-api-key file
# Option 1: Environmentexport TWOCAPTCHA_API_KEY="your-key"# Option 2: Config file
mkdir -p ~/.config/2captcha
echo"your-key">~/.config/2captcha/api-key

Usage

Quick examples

# Image captcha
solve-captcha image captcha.png
solve-captcha image https://example.com/captcha.jpg --math
# reCAPTCHA v2
solve-captcha recaptcha2 -s 6Le-wvkSAAAA... -u https://example.com
# hCaptcha
solve-captcha hcaptcha -s a5f74b19-9e45... -u https://example.com
# Cloudflare Turnstile
solve-captcha turnstile -s 0x4AAA... -u https://example.com
# Check balance
solve-captcha balance

Do not use these commands on sensitive or internal pages unless sending CAPTCHA content and page metadata to 2Captcha is approved for that workflow.

Commands

CommandDescription
image <file|url>Solve image captcha (OCR)
recaptcha2Solve reCAPTCHA v2
recaptcha3Solve reCAPTCHA v3
hcaptchaSolve hCaptcha
turnstileSolve Cloudflare Turnstile
funcaptchaSolve Arkose Labs FunCaptcha
geetestSolve GeeTest v3
geetest4Solve GeeTest v4
amazonSolve Amazon WAF CAPTCHA
text <question>Solve text question
balanceCheck account balance

Global flags

FlagDescription
-h, --helpShow help
-V, --versionShow version
-k, --api-keyAPI key (overrides env/config)
-j, --jsonOutput full JSON response
-q, --quietSuppress progress output
-v, --verboseVerbose debug output
-t, --timeoutTimeout in seconds (default: 180)
--no-colorDisable colored output

Image captcha options

solve-captcha image captcha.png [options]
OptionDescription
--phraseAnswer contains multiple words
--case-sensitiveCase-sensitive answer
--numeric N0=any, 1=numbers, 2=letters, 3=either, 4=both
--mathRequires calculation
--min-length NMinimum answer length
--max-length NMaximum answer length
--comment TEXTInstructions for solver
--lang LANGLanguage pool (en, rn)

Output

Human mode (default)

$ solve-captcha image captcha.png
Submitting image captcha...
Solving... 12s
✓ Solved in 0.00025 USD
abc123

JSON mode

$ solve-captcha --json image captcha.png
{
"errorId": 0,
"status": "ready",
"solution": {"text": "abc123"},
"cost": "0.00025"
}

Quiet mode (for scripts)

TOKEN=$(solve-captcha -q recaptcha2 -s KEY -u URL)

Exit codes

CodeMeaning
0Success
1General error
2Invalid usage / missing args
3Timeout
4Authentication error
130Interrupted (Ctrl-C)

Environment

Respects standard conventions:

  • NO_COLOR — Disable colors
  • TERM=dumb — Disable colors
  • Non-TTY stderr — Disable progress/colors

Feedback

Open bugs and feature requests in GitHub Issues.

License

MIT © Vadim Kostin (@adinvadim)

About

Solve CAPTCHAs from CLI using 2Captcha service

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

solve-captcha

skills.shClawHub

Solve CAPTCHAs from the command line using 2Captcha human-powered service.

Canonical source: https://github.com/adinvadim/2captcha-cli

Privacy and authorized use

This tool sends CAPTCHA images, page URLs, sitekeys, challenge IDs, and task metadata to 2Captcha for processing by the 2Captcha service and its human solvers. Use it only for authorized automation, and do not submit sensitive, regulated, internal, or third-party user data unless you have approval.

Published locations

Features

  • 10 captcha types — Image, reCAPTCHA v2/v3, hCaptcha, Turnstile, FunCaptcha, GeeTest, Amazon WAF
  • Zero dependencies — Pure Python 3 stdlib
  • Human-first design — Clear output, helpful errors, progress indicators
  • Script-friendly--json output, proper exit codes, --quiet mode
  • Flexible config — Flag > env > config file precedence

Installation

Agent skill

# skills.sh: Codex, Claude Code, Cursor, and other supported agents
npx skills add adinvadim/2captcha-cli
npx skills add adinvadim/2captcha-cli --global
npx skills add adinvadim/2captcha-cli --agent codex
npx skills use adinvadim/2captcha-cli@2captcha
# OpenClaw / ClawHub
openclaw skills install 2captcha
clawhub install 2captcha

CLI

# Review source, then install locally
git clone https://github.com/adinvadim/2captcha-cli.git
cd 2captcha-cli
python3 solve-captcha --version
mkdir -p ~/.local/bin
ln -sf "$PWD/solve-captcha"~/.local/bin/solve-captcha
# Or with Homebrew (coming soon)# brew install adinvadim/tap/solve-captcha# Or clone manually
git clone https://github.com/adinvadim/2captcha-cli.git
cd 2captcha-cli
chmod +x solve-captcha
sudo ln -s $(pwd)/solve-captcha /usr/local/bin/

Old adamvinsky/2captcha-cli links are obsolete. Use adinvadim/2captcha-cli.

Configuration

API key lookup order:

  1. --api-key / -k flag
  2. TWOCAPTCHA_API_KEY environment variable
  3. ~/.config/2captcha/api-key file
  4. ~/.2captcha-api-key file
# Option 1: Environmentexport TWOCAPTCHA_API_KEY="your-key"# Option 2: Config file
mkdir -p ~/.config/2captcha
echo"your-key">~/.config/2captcha/api-key

Usage

Quick examples

# Image captcha
solve-captcha image captcha.png
solve-captcha image https://example.com/captcha.jpg --math
# reCAPTCHA v2
solve-captcha recaptcha2 -s 6Le-wvkSAAAA... -u https://example.com
# hCaptcha
solve-captcha hcaptcha -s a5f74b19-9e45... -u https://example.com
# Cloudflare Turnstile
solve-captcha turnstile -s 0x4AAA... -u https://example.com
# Check balance
solve-captcha balance

Do not use these commands on sensitive or internal pages unless sending CAPTCHA content and page metadata to 2Captcha is approved for that workflow.

Commands

CommandDescription
image <file|url>Solve image captcha (OCR)
recaptcha2Solve reCAPTCHA v2
recaptcha3Solve reCAPTCHA v3
hcaptchaSolve hCaptcha
turnstileSolve Cloudflare Turnstile
funcaptchaSolve Arkose Labs FunCaptcha
geetestSolve GeeTest v3
geetest4Solve GeeTest v4
amazonSolve Amazon WAF CAPTCHA
text <question>Solve text question
balanceCheck account balance

Global flags

FlagDescription
-h, --helpShow help
-V, --versionShow version
-k, --api-keyAPI key (overrides env/config)
-j, --jsonOutput full JSON response
-q, --quietSuppress progress output
-v, --verboseVerbose debug output
-t, --timeoutTimeout in seconds (default: 180)
--no-colorDisable colored output

Image captcha options

solve-captcha image captcha.png [options]
OptionDescription
--phraseAnswer contains multiple words
--case-sensitiveCase-sensitive answer
--numeric N0=any, 1=numbers, 2=letters, 3=either, 4=both
--mathRequires calculation
--min-length NMinimum answer length
--max-length NMaximum answer length
--comment TEXTInstructions for solver
--lang LANGLanguage pool (en, rn)

Output

Human mode (default)

$ solve-captcha image captcha.png
Submitting image captcha...
Solving... 12s
✓ Solved in 0.00025 USD
abc123

JSON mode

$ solve-captcha --json image captcha.png
{
"errorId": 0,
"status": "ready",
"solution": {"text": "abc123"},
"cost": "0.00025"
}

Quiet mode (for scripts)

TOKEN=$(solve-captcha -q recaptcha2 -s KEY -u URL)

Exit codes

CodeMeaning
0Success
1General error
2Invalid usage / missing args
3Timeout
4Authentication error
130Interrupted (Ctrl-C)

Environment

Respects standard conventions:

  • NO_COLOR — Disable colors
  • TERM=dumb — Disable colors
  • Non-TTY stderr — Disable progress/colors

Feedback

Open bugs and feature requests in GitHub Issues.

License

MIT © Vadim Kostin (@adinvadim)

About

Solve CAPTCHAs from CLI using 2Captcha service

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages