{"id":22528671,"url":"https://github.com/JacobLinCool/recaptcha-solver","last_synced_at":"2025-08-03T23:32:35.291Z","repository":{"id":50372946,"uuid":"518882660","full_name":"JacobLinCool/recaptcha-solver","owner":"JacobLinCool","description":"Solve reCAPTCHA challenges by using offline speech recognition.","archived":false,"fork":false,"pushed_at":"2024-06-25T01:24:22.000Z","size":1164,"stargazers_count":29,"open_issues_count":4,"forks_count":14,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-11-21T15:35:26.854Z","etag":null,"topics":["automation","playwright","recaptcha"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/JacobLinCool.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-07-28T14:39:15.000Z","updated_at":"2024-11-20T04:15:23.000Z","dependencies_parsed_at":"2023-12-15T03:37:46.843Z","dependency_job_id":"c3345ce0-9ff2-4a97-a9b4-cae2c2a23cc8","html_url":"https://github.com/JacobLinCool/recaptcha-solver","commit_stats":{"total_commits":53,"total_committers":3,"mean_commits":"17.666666666666668","dds":0.09433962264150941,"last_synced_commit":"a8041f85185c35b474652a61bb2c66c93a628c1e"},"previous_names":["jacoblincool/recaptcha-resolver"],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JacobLinCool%2Frecaptcha-solver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JacobLinCool%2Frecaptcha-solver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JacobLinCool%2Frecaptcha-solver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JacobLinCool%2Frecaptcha-solver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JacobLinCool","download_url":"https://codeload.github.com/JacobLinCool/recaptcha-solver/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228137355,"owners_count":17875204,"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":["automation","playwright","recaptcha"],"created_at":"2024-12-07T07:11:44.074Z","updated_at":"2024-12-07T07:11:45.230Z","avatar_url":"https://github.com/JacobLinCool.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# reCAPTCHA Solver\n\nSolve reCAPTCHA challenges by using offline speech recognition.\n\n\u003e It can be very useful when you want to do E2E tests with your application protected by reCAPTCHA.\n\nRequirements:\n\n- `ffmpeg` installed\n\nFeatures:\n\n- Offline: A pretrained small model is included.\n- Fast: Solve each challenge in less than 3 seconds.\n- Accurate: Over 95% accuracy.\n- Auto-retry: If the challenge is not solved, it will retry it.\n- Supports reCAPTCHA v2 and v3 (invisible).\n\n## Install\n\n```sh\nnpm i recaptcha-solver\n```\n\nIt will automatically download a 40 MB acoustic model which will be used to solve the challenges.\n\nThe model is from \u003chttps://alphacephei.com/vosk/models\u003e (Apache 2.0).\n\n## Example\n\nCheckout [`example/index.mjs`](example/index.mjs)!\n\n```js\nimport { chromium } from \"playwright-core\";\nimport { solve } from \"recaptcha-solver\";\n\nconst EXAMPLE_PAGE = \"https://www.google.com/recaptcha/api2/demo\";\n\nmain();\n\nasync function main() {\n    const browser = await chromium.launch({ headless: false });\n    const page = await browser.newPage();\n    await page.goto(EXAMPLE_PAGE);\n\n    console.time(\"solve reCAPTCHA\");\n    await solve(page);\n    console.log(\"solved!\");\n    console.timeEnd(\"solve reCAPTCHA\");\n\n    await page.click(\"#recaptcha-demo-submit\");\n\n    page.on(\"close\", async () =\u003e {\n        await browser.close();\n        process.exit(0);\n    });\n}\n```\n\n```sh\n❯ node example/index.mjs\nsolved!\nsolve reCAPTCHA: 4.285s\n```\n\nWith `VERBOSE` environment variable:\n\n```sh\n❯ VERBOSE=1 node example/index.mjs\n[reCAPTCHA solver] bframe loaded: false\n[reCAPTCHA solver] invisible: false\n[reCAPTCHA solver] action required: true\n[reCAPTCHA solver] [Mutex] init locked\n[reCAPTCHA solver] [Mutex] ready waiting\n[reCAPTCHA solver] [Mutex] get sound unlocked\n[reCAPTCHA solver] [Mutex] ready locked\n[reCAPTCHA solver] reconized: for their start urine\n[reCAPTCHA solver] [Mutex] done waiting\n[reCAPTCHA solver] [Mutex] verified unlocked\n[reCAPTCHA solver] [Mutex] done locked\n[reCAPTCHA solver] passed: true\nsolved!\nsolve reCAPTCHA: 4.072s\n```\n\n### Demo\n\n[demo.mp4 (23s)](example/demo.mp4)\n\nhttps://user-images.githubusercontent.com/28478594/181560802-a6be4c0f-3258-4cd6-b605-3d9671b04a8f.mp4\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJacobLinCool%2Frecaptcha-solver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FJacobLinCool%2Frecaptcha-solver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJacobLinCool%2Frecaptcha-solver/lists"}