You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Reworks the README around the terms people actually search for: a
supported-captcha table keyed by how each type gets searched, a section
on why solving locally beats a per-solve cloud API, a 2captcha
alternative section, worked Selenium and Playwright snippets, and an FAQ
aimed at question searches. Adds a PyPI badge and internal links to the
other CapSkip clients.
Expands PyPI keywords from 8 to 30 and rewrites the package description,
since PyPI search weights both heavily. Adds the 3.13, OS Independent,
Browsers and Utilities classifiers.
No behaviour change: 90 tests still passing.
Official Python client for the [CapSkip](https://capskip.com)**local** captcha solver.
8
+
**Solve reCAPTCHA v2, reCAPTCHA v3, Cloudflare Turnstile, GeeTest and image captchas from Python.**
8
9
9
-
CapSkip runs on your machine and exposes a standard captcha-solver HTTP API (the familiar `in.php` / `res.php` endpoints). This SDK wraps that API with clean, familiar method names, so you can solve captchas locally — no per-solve API fees beyond your CapSkip license.
10
+
Official Python client for [CapSkip](https://capskip.com), a **local captcha solver** that runs on your own machine. Licensed once, not billed per solve.
11
+
12
+
```bash
13
+
pip install capskip
14
+
```
15
+
16
+
---
17
+
18
+
## How it works
19
+
20
+
CapSkip is a desktop app. It does the solving on your machine and exposes the standard captcha-solver HTTP API — the same `in.php` / `res.php` endpoints every 2captcha-compatible client already speaks — on `127.0.0.1:8080`.
21
+
22
+
This SDK is a thin wrapper over that API, with the method names you would expect: `normal()`, `recaptcha()`, `turnstile()`, `geetest()`. Nothing leaves your network, and there is no credit balance to keep an eye on.
23
+
24
+
## Supported captcha types
25
+
26
+
| Captcha | Method |
27
+
|---|---|
28
+
|**Image captcha solver** (distorted text / OCR) |`solver.normal(file)`|
**hCaptcha and FunCaptcha/Arkose are not supported.** hCaptcha is the one people misidentify most often, since it also puts a `data-sitekey` on the widget — check for `class="h-captcha"` or a `js.hcaptcha.com` script before reaching for `recaptcha()`.
39
+
40
+
Point the SDK at the [live captcha demo pages](https://capskip.com/captcha-demo/) to sanity-check your setup against real widgets.
10
41
11
42
---
12
43
13
44
## Quick start (5 minutes)
14
45
15
-
### 1. Install CapSkip
46
+
### 1. Install the CapSkip captcha solver
16
47
17
-
Download and run the CapSkip desktop app from [capskip.com](https://capskip.com). Leave it running in the background.
48
+
Download and run the CapSkip desktop app from [capskip.com](https://capskip.com/download/). Leave it running in the background.
Cloud captcha APIs charge per solve, which turns a retry loop into an expense and routes every page URL and sitekey you touch through someone else's queue.
91
+
92
+
CapSkip flips that around:
93
+
94
+
-**Unlimited solving** — one license, no per-captcha charge, no balance to top up
95
+
-**Runs on `127.0.0.1`** — the SDK never talks to a third-party server
96
+
-**No per-key rate limit** — throughput is whatever your machine can manage
97
+
-**Fast** — image captchas come back in well under a second; a typical reCAPTCHA v2 lands in 30–45 seconds
98
+
99
+
### Coming from 2captcha or Anti-Captcha
100
+
101
+
CapSkip answers on the same `in.php` / `res.php` endpoints, so it works as a **2captcha API alternative**: an existing integration usually needs nothing more than its host pointed at `127.0.0.1:8080`. The [migration notes](https://capskip.com/2captcha-api-alternative/) cover the details, if you would rather keep your current client library than switch to this one.
70
102
71
103
---
72
104
@@ -217,6 +249,44 @@ More examples: [`examples/`](examples/)
217
249
218
250
---
219
251
252
+
## Selenium, Playwright and Scrapy
253
+
254
+
The SDK hands back a token; your existing browser tooling does the driving. The shape is the same whichever you use:
255
+
256
+
1. Read the sitekey off the page (`data-sitekey`, or the widget's config object).
257
+
2. Call the matching solve method with that sitekey and the page URL.
258
+
3. Write the token into the response field and submit.
Scrapy and plain `requests` work the same way — solve first, then send the token as whatever form field the site expects. Longer walkthroughs: [Selenium](https://capskip.com/selenium-captcha-solver/) and [Playwright](https://capskip.com/playwright-captcha-solver/).
287
+
288
+
---
289
+
220
290
## Return value
221
291
222
292
Every solve method returns:
@@ -253,6 +323,42 @@ except TimeoutException:
253
323
254
324
---
255
325
326
+
## FAQ
327
+
328
+
### How do I solve a captcha in Python?
329
+
330
+
Install the CapSkip desktop app, `pip install capskip`, then call the method that matches the widget — `recaptcha()`, `turnstile()`, `geetest()` or `normal()`. Each one polls until CapSkip has an answer, then returns a token, or the recognized text in the case of an image captcha.
331
+
332
+
### Is this a free captcha solver?
333
+
334
+
The SDK itself is MIT-licensed and free. Solving needs the CapSkip app, which is bought once rather than metered per captcha, so your cost stops scaling with volume.
335
+
336
+
### Which captchas can it solve?
337
+
338
+
reCAPTCHA v2 (checkbox and invisible), reCAPTCHA v3, reCAPTCHA Enterprise, Cloudflare Turnstile, GeeTest v3, and image/text captchas. Not hCaptcha, and not FunCaptcha/Arkose.
339
+
340
+
### Does it work with Selenium and Playwright?
341
+
342
+
Yes — see [above](#selenium-playwright-and-scrapy). The SDK never touches a browser itself, so it drops into whatever stack you already have, Scrapy and plain `requests` included.
343
+
344
+
### Why is my reCAPTCHA v3 score low?
345
+
346
+
Google derives v3 scores from IP reputation, cookies and browsing history. A solver returns a valid token, but it cannot change how Google grades that token — `score=` is forwarded as the target you want, not a guarantee. If a site enforces a high threshold, solve through a cleaner IP using the `proxy` argument.
347
+
348
+
### Can I use it as a 2captcha alternative?
349
+
350
+
Yes. CapSkip serves the same endpoints, so you can either move to this SDK or repoint an existing 2captcha client at `127.0.0.1:8080`.
351
+
352
+
### Does the captcha have to be on a public page?
353
+
354
+
For widget captchas, yes — CapSkip loads the URL you pass it. Image captchas only need the image, and that can be a local file.
355
+
356
+
### Is asyncio supported?
357
+
358
+
`AsyncCapSkip` is a full async client. Use it with `asyncio.gather` to run several solves at once.
359
+
360
+
---
361
+
256
362
## Development
257
363
258
364
```bash
@@ -276,10 +382,12 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for the full development workflow.
276
382
277
383
## Links
278
384
279
-
-[CapSkip website](https://capskip.com)
280
-
-[CapSkip API docs](https://capskip.com/api-docs/)
281
-
-[Report an issue](https://github.com/capskip/capskip-python/issues)
- Other clients: [Node.js](https://github.com/capskip/capskip-node) · [PHP](https://github.com/capskip/capskip-php) · [.NET](https://github.com/capskip/capskip-dotnet) · [MCP server for AI agents](https://github.com/capskip/capskip-mcp)
390
+
-[PyPI package](https://pypi.org/project/capskip/) · [report an issue](https://github.com/capskip/capskip-python/issues)
description = "Python SDK for the CapSkiplocal captcha solver"
8
+
description = "Captcha solver for Python: solve reCAPTCHA v2/v3, Cloudflare Turnstile, GeeTest and image captchas with CapSkip, a local unlimited captcha solver with no per-solve fees."
9
9
readme = "README.md"
10
10
license = { text = "MIT" }
11
11
authors = [{ name = "CapSkip", email = "support@capskip.com" }]
12
12
keywords = [
13
13
"captcha",
14
14
"captcha-solver",
15
+
"captcha-solving",
16
+
"captcha-bypass",
17
+
"unlimited-captcha-solver",
18
+
"local-captcha-solver",
19
+
"free-captcha-solver",
15
20
"recaptcha",
21
+
"recaptcha-solver",
22
+
"recaptcha-v2",
23
+
"recaptcha-v3",
24
+
"recaptcha-enterprise",
16
25
"cloudflare",
17
26
"turnstile",
27
+
"turnstile-solver",
28
+
"cloudflare-turnstile",
18
29
"geetest",
30
+
"geetest-solver",
31
+
"image-captcha",
32
+
"ocr",
33
+
"2captcha-alternative",
34
+
"anti-captcha-alternative",
35
+
"selenium",
36
+
"playwright",
37
+
"scrapy",
38
+
"browser-automation",
39
+
"web-scraping",
19
40
"capskip",
20
41
"automation",
21
42
]
@@ -27,8 +48,12 @@ classifiers = [
27
48
"Programming Language :: Python :: 3.10",
28
49
"Programming Language :: Python :: 3.11",
29
50
"Programming Language :: Python :: 3.12",
51
+
"Programming Language :: Python :: 3.13",
52
+
"Operating System :: OS Independent",
30
53
"Topic :: Software Development :: Libraries :: Python Modules",
0 commit comments