{"id":13592405,"url":"https://github.com/RuslanUC/aio-hcaptcha","last_synced_at":"2025-04-08T23:32:26.954Z","repository":{"id":60786632,"uuid":"545386882","full_name":"RuslanUC/aio-hcaptcha","owner":"RuslanUC","description":"Unofficial async wrapper for interacting with hCaptcha","archived":false,"fork":false,"pushed_at":"2022-10-28T13:34:02.000Z","size":89,"stargazers_count":24,"open_issues_count":6,"forks_count":10,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-03T07:36:38.253Z","etag":null,"topics":["async","captcha","hcaptcha","hcaptcha-solver","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RuslanUC.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-10-04T09:21:03.000Z","updated_at":"2024-09-23T09:48:27.000Z","dependencies_parsed_at":"2022-10-04T19:59:27.468Z","dependency_job_id":null,"html_url":"https://github.com/RuslanUC/aio-hcaptcha","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RuslanUC%2Faio-hcaptcha","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RuslanUC%2Faio-hcaptcha/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RuslanUC%2Faio-hcaptcha/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RuslanUC%2Faio-hcaptcha/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RuslanUC","download_url":"https://codeload.github.com/RuslanUC/aio-hcaptcha/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223346721,"owners_count":17130484,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async","captcha","hcaptcha","hcaptcha-solver","python"],"created_at":"2024-08-01T16:01:08.892Z","updated_at":"2024-11-06T13:31:07.450Z","avatar_url":"https://github.com/RuslanUC.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# AsyncHcaptcha\n\n### Installing\nPython 3.7 or higher and chrome with chromedriver are required\n```sh\npip install async-hcaptcha\n```\n\n### Example\n```py\nfrom async_hcaptcha import AioHcaptcha\nfrom async_hcaptcha.utils import getUrl\n\nasync def getAnswers(question, tasklist):\n    from os import makedirs\n    makedirs(\"captcha_images\")\n\n    answers = {}\n\n    tl = {str(i): list(tasklist.keys())[i] for i in range(len(tasklist.keys()))}\n    for i, k in tl.items():\n        with open(f\"captcha_images/{i}.jpg\", \"wb\") as f:\n            f.write(await getUrl(tasklist[k], False))\n\n    print(question)\n    print(\"Answer with true/false or 1/0:\")\n\n    for i, uuid in tl.items():\n        ans = input(f\"{i}? \").lower()\n        if ans in (\"1\", \"true\"):\n            answers[uuid] = \"true\"\n        else:\n            answers[uuid] = \"false\"\n    return answers\n\nasync def main():\n    solver = AioHcaptcha(\"a5f74b19-9e45-40e0-b45d-47ff91b7a6c2\", \"https://accounts.hcaptcha.com/demo\",\n                         {\"executable_path\": \"chromedriver.exe\"}, getAnswers)\n    resp = await solver.solve()\n    print(resp)\n\nif __name__ == \"__main__\":\n    from asyncio import get_event_loop\n    get_event_loop().run_until_complete(main())\n\n```\n\n### Automatically solved example\n```py\nfrom async_hcaptcha import AioHcaptcha\n\nasync def main():\n    solver = AioHcaptcha(\"a5f74b19-9e45-40e0-b45d-47ff91b7a6c2\", \"https://accounts.hcaptcha.com/demo\",\n                         {\"executable_path\": \"chromedriver.exe\"})\n    resp = await solver.solve()\n    print(resp)\n\nif __name__ == \"__main__\":\n    from asyncio import get_event_loop\n    get_event_loop().run_until_complete(main())\n```\n\n### Captcha with rqdata example\n```py\nfrom async_hcaptcha import AioHcaptcha\n\nasync def main():\n    solver = AioHcaptcha(\"a5f74b19-9e45-40e0-b45d-47ff91b7a6c2\", \"https://accounts.hcaptcha.com/demo\",\n                         {\"executable_path\": \"chromedriver.exe\"})\n    resp = await solver.solve(custom_params={\"rqdata\": \"xHJHshn3p71FcYoVCW5zA3m2CFw59JXBecFaR2l90z/NjjoYaXq2FBTi05LPnOX1v/MwStZg9DZKQA4f4ExkDjwlMaS3AKGIrcb2rUKsg8nDI9IaXEFDAhWqvuuCuaW3urxO2J1B/NEkfS938O58cqrE00aPILCQPUHVU1l/Ek8\"})\n    print(resp)\n\nif __name__ == \"__main__\":\n    from asyncio import get_event_loop\n    get_event_loop().run_until_complete(main())\n```\n\n# TODO\n  - Make hsw solving without selenium\n  \n### Async-hcaptcha uses code from [hcaptcha-challenger](https://github.com/QIN2DIM/hcaptcha-challenger/tree/main/src/services/hcaptcha_challenger/solutions) and [py-hcaptcha](https://github.com/AcierP/py-hcaptcha/blob/main/hcaptcha/proofs/hsl.py).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRuslanUC%2Faio-hcaptcha","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FRuslanUC%2Faio-hcaptcha","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRuslanUC%2Faio-hcaptcha/lists"}