twocaptcha-python


Nametwocaptcha-python JSON
Version 0.0.3 PyPI version JSON
download
home_pageNone
SummaryPython client for 2captcha solving service - Bypass reCAPTCHA, Cloudflare Turnstile, FunCaptcha, GeeTest and solve any other captchas
upload_time2025-10-14 11:29:41
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseMIT
keywords 2captcha 2captcha api 2captcha api python 2captcha api python client api automation captcha bypass captcha solver captcha solving service client cloudflare turnstile funcaptcha geetest hcaptcha image-captcha python recaptcha recaptcha bypass text-captcha twocaptcha
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # TwoCaptcha Python Library

A simple Python client for the [2captcha solving service](https://2captcha.com/api-docs) - Bypass reCAPTCHA, Cloudflare Turnstile, FunCaptcha, GeeTest and solve any other captchas.

## Installation

```bash
pip install twocaptcha-python
```

```bash
uv add twocaptcha-python
```

**Note**: You can use any task configuration directly from the [2Captcha API documentation](https://2captcha.com/api-docs). Just copy the task object from their examples and pass it to `solve_captcha()`.

## Supported Captcha Types

- **Normal CAPTCHA** - `ImageToTextTask`
- **reCAPTCHA V2** - `RecaptchaV2TaskProxyless`, `RecaptchaV2Task`
- **reCAPTCHA V3** - `RecaptchaV3TaskProxyless`, `RecaptchaV3Task`
- **reCAPTCHA Enterprise** - `RecaptchaV2EnterpriseTaskProxyless`, `RecaptchaV3EnterpriseTaskProxyless`
- **Arkose Labs CAPTCHA** - `FunCaptchaTaskProxyless`, `FunCaptchaTask`
- **GeeTest CAPTCHA** - `GeeTestTaskProxyless`, `GeeTestTask`
- **Cloudflare Turnstile** - `TurnstileTaskProxyless`, `TurnstileTask`
- **Capy Puzzle CAPTCHA** - `CapyTaskProxyless`, `CapyTask`
- **Lemin CAPTCHA** - `LeminTaskProxyless`, `LeminTask`
- **Amazon CAPTCHA** - `AmazonTaskProxyless`, `AmazonTask`
- **Text CAPTCHA** - `TextCaptchaTask`
- **Rotate CAPTCHA** - `RotateTask`
- **Click CAPTCHA** - `CoordinatesTask`
- **Draw Around** - `DrawAroundTask`
- **Grid CAPTCHA** - `GridTask`
- **Audio CAPTCHA** - `AudioTask`
- **MTCaptcha** - `MtCaptchaTaskProxyless`, `MtCaptchaTask`
- **DataDome CAPTCHA** - `DataDomeTaskProxyless`, `DataDomeTask`
- **Friendly Captcha** - `FriendlyCaptchaTaskProxyless`, `FriendlyCaptchaTask`
- **Bounding box** - `BoundingBoxTask`
- **Cutcaptcha** - `CutCaptchaTaskProxyless`, `CutCaptchaTask`
- **atbCAPTCHA** - `AtbCaptchaTaskProxyless`, `AtbCaptchaTask`
- **Tencent** - `TencentTaskProxyless`, `TencentTask`
- **Prosopo Procaptcha** - `ProsopoTaskProxyless`, `ProsopoTask`
- **CaptchaFox** - `CaptchaFoxTaskProxyless`, `CaptchaFoxTask`
- **VK Captcha** - `VKTaskProxyless`, `VKTask`
- **Temu Captcha** - `TemuTaskProxyless`, `TemuTask`

## Usage Examples

### Synchronous Client

```python
from TwoCaptcha import SyncTwoCaptcha, TwoCaptchaError

client = SyncTwoCaptcha(api_key="YOUR_API_KEY")

def auto_solve_captcha():
    """Auto solve captcha using 2captcha api."""
    try:
        task = {
            "type": "RecaptchaV2TaskProxyless",
            "websiteURL": "https://2captcha.com/demo/recaptcha-v2",
            "websiteKey": "6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u",
        }
        balance = client.balance()
        print(f"Balance: {balance}")
        result = client.solve_captcha(task)
        print(f"Result: {result}")

    except TwoCaptchaError as e:
        print(f"TwoCaptcha Error: {e}")

def manual_solve_captcha():
    """Manual solve captcha using 2captcha api."""
    try:
        task = {
            "type": "RecaptchaV2TaskProxyless",
            "websiteURL": "https://2captcha.com/demo/recaptcha-v2",
            "websiteKey": "6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u",
        }

        create_result = client.create_task(task)
        task_id = create_result["taskId"]
        print(f"Created task with ID: {task_id}")

        task_result = client.get_task_result(task_id)
        print(f"Task result: {task_result}")

    except TwoCaptchaError as e:
        print(f"TwoCaptcha Error: {e}")

# Run examples
auto_solve_captcha()
manual_solve_captcha()
```

### Asynchronous Client

```python
from TwoCaptcha import AsyncTwoCaptcha, TwoCaptchaError
import asyncio

async def auto_solve_captcha():
    """Auto solve captcha using 2captcha api."""
    client = AsyncTwoCaptcha(api_key="YOUR_API_KEY")
    try:
        task = {
            "type": "RecaptchaV2TaskProxyless",
            "websiteURL": "https://2captcha.com/demo/recaptcha-v2",
            "websiteKey": "6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u",
        }
        balance = await client.balance()
        print(f"Balance: {balance}")
        result = await client.solve_captcha(task)
        print(f"Result: {result}")

    except TwoCaptchaError as e:
        print(f"TwoCaptcha Error: {e}")
    finally:
        await client.close()

async def manual_solve_captcha():
    """Manual solve captcha using 2captcha api."""
    client = AsyncTwoCaptcha(api_key="YOUR_API_KEY")
    try:
        task = {
            "type": "RecaptchaV2TaskProxyless",
            "websiteURL": "https://2captcha.com/demo/recaptcha-v2",
            "websiteKey": "6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u",
        }

        create_result = await client.create_task(task)
        task_id = create_result["taskId"]
        print(f"Created task with ID: {task_id}")

        task_result = await client.get_task_result(task_id)
        print(f"Task result: {task_result}")

    except TwoCaptchaError as e:
        print(f"TwoCaptcha Error: {e}")
    finally:
        await client.close()

async def context_manager_example():
    """Context manager example."""
    async with AsyncTwoCaptcha(api_key="YOUR_API_KEY") as client:
        balance = await client.balance()
        print(f"Context manager balance: {balance}")

async def multiple_tasks_example():
    """Multiple tasks example."""
    client = AsyncTwoCaptcha(api_key="YOUR_API_KEY")
    try:
        tasks = [
            {
                "type": "RecaptchaV2TaskProxyless",
                "websiteURL": "https://2captcha.com/demo/recaptcha-v2",
                "websiteKey": "6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u",
            },
            {
                "type": "RecaptchaV2TaskProxyless",
                "websiteURL": "https://2captcha.com/demo/recaptcha-v2",
                "websiteKey": "6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u",
            },
        ]

        print("Solving multiple captchas concurrently...")
        results = await asyncio.gather(
            *[client.solve_captcha(task) for task in tasks], return_exceptions=True
        )

        for i, result in enumerate(results):
            if isinstance(result, Exception):
                print(f"Task {i+1} failed: {result}")
            else:
                print(f"Task {i+1} solved: {result['solution']['gRecaptchaResponse'][:30]}...")

    except Exception as e:
        print(f"Error in multiple tasks: {e}")
    finally:
        await client.close()

# Run examples
asyncio.run(auto_solve_captcha())
asyncio.run(manual_solve_captcha())
asyncio.run(context_manager_example())
asyncio.run(multiple_tasks_example())
```

### Different Captcha Types

#### reCAPTCHA v2 (Proxyless)

```python
task = {
    "type": "RecaptchaV2TaskProxyless",
    "websiteURL": "https://example.com",
    "websiteKey": "6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u"
}
result = client.solve_captcha(task)
```

#### reCAPTCHA v2 (With Proxy)

```python
task = {
    "type": "RecaptchaV2Task",
    "websiteURL": "https://example.com",
    "websiteKey": "6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u",
    "proxyType": "http",
    "proxyAddress": "1.2.3.4",
    "proxyPort": "8080",
    "proxyLogin": "user",
    "proxyPassword": "pass"
}
result = client.solve_captcha(task)
```

#### reCAPTCHA v3

```python
task = {
    "type": "RecaptchaV3TaskProxyless",
    "websiteURL": "https://example.com",
    "websiteKey": "6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu",
    "minScore": 0.9,
    "pageAction": "submit"
}
result = client.solve_captcha(task)
```

#### Normal Image Captcha

```python
task = {
    "type": "ImageToTextTask",
    "body": "base64_encoded_image_data"
}
result = client.solve_captcha(task)
```

#### Check Balance

```python
balance = client.balance()
print(f"Balance: ${balance['balance']}")
```

## Response Format

```json
{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "gRecaptchaResponse": "03ADUVZw...UWxTAe6ncIa",
    "token": "03ADUVZw...UWxTAe6ncIa"
  },
  "cost": "0.00299",
  "ip": "1.2.3.4",
  "createTime": 1692863536,
  "endTime": 1692863556,
  "solveCount": 1
}
```

## Error Handling

```python
from twocaptcha import TwoCaptchaError

try:
    result = client.solve_captcha(task)
except TwoCaptchaError as e:
    print(f"Error: {e}")
```

## API Methods

- `client.solve_captcha(task)` - Solve captcha and wait for result
- `client.balance()` - Check account balance
- `client.create_task.create_task(task)` - Create task only
- `client.get_task_result.get_task_result(task_id)` - Get task result
- `client.get_balance.get_balance()` - Check account balance (alternative)

## Configuration

```python
client = TwoCaptcha(
    api_key="YOUR_API_KEY",
    timeout=120,        # Max wait time in seconds
    polling_interval=5  # Check interval in seconds
)
```

## Documentation

For complete API documentation and task parameters, visit [2captcha.com/api-docs](https://2captcha.com/api-docs).

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "twocaptcha-python",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "Sujit Biswas <ssujitxx@gmail.com>",
    "keywords": "2captcha, 2captcha api, 2captcha api python, 2captcha api python client, api, automation, captcha bypass, captcha solver, captcha solving service, client, cloudflare turnstile, funcaptcha, geetest, hcaptcha, image-captcha, python, recaptcha, recaptcha bypass, text-captcha, twocaptcha",
    "author": null,
    "author_email": "Sujit Biswas <ssujitxx@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/90/5a/d0df728e4d224d59d49e0ed1e675f87ee57136b8356a496cad10354cba1d/twocaptcha_python-0.0.3.tar.gz",
    "platform": null,
    "description": "# TwoCaptcha Python Library\n\nA simple Python client for the [2captcha solving service](https://2captcha.com/api-docs) - Bypass reCAPTCHA, Cloudflare Turnstile, FunCaptcha, GeeTest and solve any other captchas.\n\n## Installation\n\n```bash\npip install twocaptcha-python\n```\n\n```bash\nuv add twocaptcha-python\n```\n\n**Note**: You can use any task configuration directly from the [2Captcha API documentation](https://2captcha.com/api-docs). Just copy the task object from their examples and pass it to `solve_captcha()`.\n\n## Supported Captcha Types\n\n- **Normal CAPTCHA** - `ImageToTextTask`\n- **reCAPTCHA V2** - `RecaptchaV2TaskProxyless`, `RecaptchaV2Task`\n- **reCAPTCHA V3** - `RecaptchaV3TaskProxyless`, `RecaptchaV3Task`\n- **reCAPTCHA Enterprise** - `RecaptchaV2EnterpriseTaskProxyless`, `RecaptchaV3EnterpriseTaskProxyless`\n- **Arkose Labs CAPTCHA** - `FunCaptchaTaskProxyless`, `FunCaptchaTask`\n- **GeeTest CAPTCHA** - `GeeTestTaskProxyless`, `GeeTestTask`\n- **Cloudflare Turnstile** - `TurnstileTaskProxyless`, `TurnstileTask`\n- **Capy Puzzle CAPTCHA** - `CapyTaskProxyless`, `CapyTask`\n- **Lemin CAPTCHA** - `LeminTaskProxyless`, `LeminTask`\n- **Amazon CAPTCHA** - `AmazonTaskProxyless`, `AmazonTask`\n- **Text CAPTCHA** - `TextCaptchaTask`\n- **Rotate CAPTCHA** - `RotateTask`\n- **Click CAPTCHA** - `CoordinatesTask`\n- **Draw Around** - `DrawAroundTask`\n- **Grid CAPTCHA** - `GridTask`\n- **Audio CAPTCHA** - `AudioTask`\n- **MTCaptcha** - `MtCaptchaTaskProxyless`, `MtCaptchaTask`\n- **DataDome CAPTCHA** - `DataDomeTaskProxyless`, `DataDomeTask`\n- **Friendly Captcha** - `FriendlyCaptchaTaskProxyless`, `FriendlyCaptchaTask`\n- **Bounding box** - `BoundingBoxTask`\n- **Cutcaptcha** - `CutCaptchaTaskProxyless`, `CutCaptchaTask`\n- **atbCAPTCHA** - `AtbCaptchaTaskProxyless`, `AtbCaptchaTask`\n- **Tencent** - `TencentTaskProxyless`, `TencentTask`\n- **Prosopo Procaptcha** - `ProsopoTaskProxyless`, `ProsopoTask`\n- **CaptchaFox** - `CaptchaFoxTaskProxyless`, `CaptchaFoxTask`\n- **VK Captcha** - `VKTaskProxyless`, `VKTask`\n- **Temu Captcha** - `TemuTaskProxyless`, `TemuTask`\n\n## Usage Examples\n\n### Synchronous Client\n\n```python\nfrom TwoCaptcha import SyncTwoCaptcha, TwoCaptchaError\n\nclient = SyncTwoCaptcha(api_key=\"YOUR_API_KEY\")\n\ndef auto_solve_captcha():\n    \"\"\"Auto solve captcha using 2captcha api.\"\"\"\n    try:\n        task = {\n            \"type\": \"RecaptchaV2TaskProxyless\",\n            \"websiteURL\": \"https://2captcha.com/demo/recaptcha-v2\",\n            \"websiteKey\": \"6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u\",\n        }\n        balance = client.balance()\n        print(f\"Balance: {balance}\")\n        result = client.solve_captcha(task)\n        print(f\"Result: {result}\")\n\n    except TwoCaptchaError as e:\n        print(f\"TwoCaptcha Error: {e}\")\n\ndef manual_solve_captcha():\n    \"\"\"Manual solve captcha using 2captcha api.\"\"\"\n    try:\n        task = {\n            \"type\": \"RecaptchaV2TaskProxyless\",\n            \"websiteURL\": \"https://2captcha.com/demo/recaptcha-v2\",\n            \"websiteKey\": \"6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u\",\n        }\n\n        create_result = client.create_task(task)\n        task_id = create_result[\"taskId\"]\n        print(f\"Created task with ID: {task_id}\")\n\n        task_result = client.get_task_result(task_id)\n        print(f\"Task result: {task_result}\")\n\n    except TwoCaptchaError as e:\n        print(f\"TwoCaptcha Error: {e}\")\n\n# Run examples\nauto_solve_captcha()\nmanual_solve_captcha()\n```\n\n### Asynchronous Client\n\n```python\nfrom TwoCaptcha import AsyncTwoCaptcha, TwoCaptchaError\nimport asyncio\n\nasync def auto_solve_captcha():\n    \"\"\"Auto solve captcha using 2captcha api.\"\"\"\n    client = AsyncTwoCaptcha(api_key=\"YOUR_API_KEY\")\n    try:\n        task = {\n            \"type\": \"RecaptchaV2TaskProxyless\",\n            \"websiteURL\": \"https://2captcha.com/demo/recaptcha-v2\",\n            \"websiteKey\": \"6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u\",\n        }\n        balance = await client.balance()\n        print(f\"Balance: {balance}\")\n        result = await client.solve_captcha(task)\n        print(f\"Result: {result}\")\n\n    except TwoCaptchaError as e:\n        print(f\"TwoCaptcha Error: {e}\")\n    finally:\n        await client.close()\n\nasync def manual_solve_captcha():\n    \"\"\"Manual solve captcha using 2captcha api.\"\"\"\n    client = AsyncTwoCaptcha(api_key=\"YOUR_API_KEY\")\n    try:\n        task = {\n            \"type\": \"RecaptchaV2TaskProxyless\",\n            \"websiteURL\": \"https://2captcha.com/demo/recaptcha-v2\",\n            \"websiteKey\": \"6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u\",\n        }\n\n        create_result = await client.create_task(task)\n        task_id = create_result[\"taskId\"]\n        print(f\"Created task with ID: {task_id}\")\n\n        task_result = await client.get_task_result(task_id)\n        print(f\"Task result: {task_result}\")\n\n    except TwoCaptchaError as e:\n        print(f\"TwoCaptcha Error: {e}\")\n    finally:\n        await client.close()\n\nasync def context_manager_example():\n    \"\"\"Context manager example.\"\"\"\n    async with AsyncTwoCaptcha(api_key=\"YOUR_API_KEY\") as client:\n        balance = await client.balance()\n        print(f\"Context manager balance: {balance}\")\n\nasync def multiple_tasks_example():\n    \"\"\"Multiple tasks example.\"\"\"\n    client = AsyncTwoCaptcha(api_key=\"YOUR_API_KEY\")\n    try:\n        tasks = [\n            {\n                \"type\": \"RecaptchaV2TaskProxyless\",\n                \"websiteURL\": \"https://2captcha.com/demo/recaptcha-v2\",\n                \"websiteKey\": \"6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u\",\n            },\n            {\n                \"type\": \"RecaptchaV2TaskProxyless\",\n                \"websiteURL\": \"https://2captcha.com/demo/recaptcha-v2\",\n                \"websiteKey\": \"6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u\",\n            },\n        ]\n\n        print(\"Solving multiple captchas concurrently...\")\n        results = await asyncio.gather(\n            *[client.solve_captcha(task) for task in tasks], return_exceptions=True\n        )\n\n        for i, result in enumerate(results):\n            if isinstance(result, Exception):\n                print(f\"Task {i+1} failed: {result}\")\n            else:\n                print(f\"Task {i+1} solved: {result['solution']['gRecaptchaResponse'][:30]}...\")\n\n    except Exception as e:\n        print(f\"Error in multiple tasks: {e}\")\n    finally:\n        await client.close()\n\n# Run examples\nasyncio.run(auto_solve_captcha())\nasyncio.run(manual_solve_captcha())\nasyncio.run(context_manager_example())\nasyncio.run(multiple_tasks_example())\n```\n\n### Different Captcha Types\n\n#### reCAPTCHA v2 (Proxyless)\n\n```python\ntask = {\n    \"type\": \"RecaptchaV2TaskProxyless\",\n    \"websiteURL\": \"https://example.com\",\n    \"websiteKey\": \"6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u\"\n}\nresult = client.solve_captcha(task)\n```\n\n#### reCAPTCHA v2 (With Proxy)\n\n```python\ntask = {\n    \"type\": \"RecaptchaV2Task\",\n    \"websiteURL\": \"https://example.com\",\n    \"websiteKey\": \"6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u\",\n    \"proxyType\": \"http\",\n    \"proxyAddress\": \"1.2.3.4\",\n    \"proxyPort\": \"8080\",\n    \"proxyLogin\": \"user\",\n    \"proxyPassword\": \"pass\"\n}\nresult = client.solve_captcha(task)\n```\n\n#### reCAPTCHA v3\n\n```python\ntask = {\n    \"type\": \"RecaptchaV3TaskProxyless\",\n    \"websiteURL\": \"https://example.com\",\n    \"websiteKey\": \"6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu\",\n    \"minScore\": 0.9,\n    \"pageAction\": \"submit\"\n}\nresult = client.solve_captcha(task)\n```\n\n#### Normal Image Captcha\n\n```python\ntask = {\n    \"type\": \"ImageToTextTask\",\n    \"body\": \"base64_encoded_image_data\"\n}\nresult = client.solve_captcha(task)\n```\n\n#### Check Balance\n\n```python\nbalance = client.balance()\nprint(f\"Balance: ${balance['balance']}\")\n```\n\n## Response Format\n\n```json\n{\n  \"errorId\": 0,\n  \"status\": \"ready\",\n  \"solution\": {\n    \"gRecaptchaResponse\": \"03ADUVZw...UWxTAe6ncIa\",\n    \"token\": \"03ADUVZw...UWxTAe6ncIa\"\n  },\n  \"cost\": \"0.00299\",\n  \"ip\": \"1.2.3.4\",\n  \"createTime\": 1692863536,\n  \"endTime\": 1692863556,\n  \"solveCount\": 1\n}\n```\n\n## Error Handling\n\n```python\nfrom twocaptcha import TwoCaptchaError\n\ntry:\n    result = client.solve_captcha(task)\nexcept TwoCaptchaError as e:\n    print(f\"Error: {e}\")\n```\n\n## API Methods\n\n- `client.solve_captcha(task)` - Solve captcha and wait for result\n- `client.balance()` - Check account balance\n- `client.create_task.create_task(task)` - Create task only\n- `client.get_task_result.get_task_result(task_id)` - Get task result\n- `client.get_balance.get_balance()` - Check account balance (alternative)\n\n## Configuration\n\n```python\nclient = TwoCaptcha(\n    api_key=\"YOUR_API_KEY\",\n    timeout=120,        # Max wait time in seconds\n    polling_interval=5  # Check interval in seconds\n)\n```\n\n## Documentation\n\nFor complete API documentation and task parameters, visit [2captcha.com/api-docs](https://2captcha.com/api-docs).\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Python client for 2captcha solving service - Bypass reCAPTCHA, Cloudflare Turnstile, FunCaptcha, GeeTest and solve any other captchas",
    "version": "0.0.3",
    "project_urls": {
        "Bug Tracker": "https://github.com/SSujitX/twocaptcha-python/issues",
        "Documentation": "https://github.com/SSujitX/twocaptcha-python#readme",
        "Homepage": "https://github.com/SSujitX/twocaptcha-python",
        "Issues": "https://github.com/SSujitX/twocaptcha-python/issues",
        "Repository": "https://github.com/SSujitX/twocaptcha-python"
    },
    "split_keywords": [
        "2captcha",
        " 2captcha api",
        " 2captcha api python",
        " 2captcha api python client",
        " api",
        " automation",
        " captcha bypass",
        " captcha solver",
        " captcha solving service",
        " client",
        " cloudflare turnstile",
        " funcaptcha",
        " geetest",
        " hcaptcha",
        " image-captcha",
        " python",
        " recaptcha",
        " recaptcha bypass",
        " text-captcha",
        " twocaptcha"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "965e92cdbd79f0cb0c3c8c933733adf0708ef72d9005e40dd3f41304cebbd683",
                "md5": "f94c39d0f436bebf848965c1338eef2b",
                "sha256": "8a96148d22dc30de9dfbeb7504f06c09f9234e106620d1694d8f3c721f8c7c0d"
            },
            "downloads": -1,
            "filename": "twocaptcha_python-0.0.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "f94c39d0f436bebf848965c1338eef2b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 10525,
            "upload_time": "2025-10-14T11:29:40",
            "upload_time_iso_8601": "2025-10-14T11:29:40.023221Z",
            "url": "https://files.pythonhosted.org/packages/96/5e/92cdbd79f0cb0c3c8c933733adf0708ef72d9005e40dd3f41304cebbd683/twocaptcha_python-0.0.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "905ad0df728e4d224d59d49e0ed1e675f87ee57136b8356a496cad10354cba1d",
                "md5": "ef4c1325027e50c92902411dbd08395c",
                "sha256": "45654e9a033191feceba3c851a737283643bb0c24c306ddff488ac0eddc1c097"
            },
            "downloads": -1,
            "filename": "twocaptcha_python-0.0.3.tar.gz",
            "has_sig": false,
            "md5_digest": "ef4c1325027e50c92902411dbd08395c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 12072,
            "upload_time": "2025-10-14T11:29:41",
            "upload_time_iso_8601": "2025-10-14T11:29:41.569911Z",
            "url": "https://files.pythonhosted.org/packages/90/5a/d0df728e4d224d59d49e0ed1e675f87ee57136b8356a496cad10354cba1d/twocaptcha_python-0.0.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-14 11:29:41",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "SSujitX",
    "github_project": "twocaptcha-python",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "twocaptcha-python"
}
        
Elapsed time: 0.45985s