{"id":20367999,"url":"https://github.com/mcaptcha/dos","last_synced_at":"2025-10-19T09:27:09.675Z","repository":{"id":104908069,"uuid":"494709189","full_name":"mCaptcha/dos","owner":"mCaptcha","description":"Demo app comparing mCaptcha protected and unprotected pages with realistic computation simulation","archived":false,"fork":false,"pushed_at":"2023-06-28T07:46:37.000Z","size":138,"stargazers_count":0,"open_issues_count":5,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-15T05:48:07.895Z","etag":null,"topics":["benchmark","locust","mcaptcha","proof-of-work","spam-protection"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mCaptcha.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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-05-21T07:14:36.000Z","updated_at":"2022-05-28T15:19:02.000Z","dependencies_parsed_at":"2023-06-28T11:15:53.946Z","dependency_job_id":null,"html_url":"https://github.com/mCaptcha/dos","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mCaptcha%2Fdos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mCaptcha%2Fdos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mCaptcha%2Fdos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mCaptcha%2Fdos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mCaptcha","download_url":"https://codeload.github.com/mCaptcha/dos/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241913695,"owners_count":20041459,"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":["benchmark","locust","mcaptcha","proof-of-work","spam-protection"],"created_at":"2024-11-15T00:36:03.685Z","updated_at":"2025-10-19T09:27:09.586Z","avatar_url":"https://github.com/mCaptcha.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\" \u003e\n\n# DoS Demo: Comparing mCaptcha-protected endpoint performance against exposed endpoints with non-simulated, realistic load\n\n**This demo uses a registration workflow that looks as real as\npossible: password and password re-type confirmation followed by\npassword hashing and storing in DB**\n\n\u003c/div\u003e\n\n## Requirements\n\n1. mCaptcha server with a captcha configured. Please self-host an\n   mCaptcha instance as the demo server is just that --- a demo server. See\n   [here](https://github.com/mCaptcha/mCaptcha/blob/master/docs/DEPLOYMENT.md)\n   for deployment instructions.\n\n2. Python 3.10.4: might work on other versions but I tested it on this\n   version\n\n3. rustc: [`mCaptcha/pow_py`](https://github.com/mCaptcha/pow_py), the\n   proof of work library used in mCaptcha(well, the Python bindings to\n   it) is not published on pypi(still figuring out how to) so the user\n   will have to compile from source\n\n## Overview:\n\n-   [server](./server/): a demo flask endpoint with two endpoints that do\n    the exact same thing: process and register a user but differ in the\n    fact the one of them(`/protected`) is protected by mCaptcha.\n\n-   [unprotected](./unprotected): DoS Client written using\n    [locust](https://locust.io) that launches an attack on the unprotected\n    endpoint\n\n-   [protected](./unprotected): DoS Client written using\n    [locust](https://locust.io) that launches an attack on the rotected\n    endpoint. It generates proof of work and solves the captcha on every\n    request.\n\n## Funding\n\n### NLnet\n\n\u003cdiv align=\"center\"\u003e\n\t\u003cimg\n\t\theight=\"150px\"\n\t\talt=\"NLnet NGIZero logo\"\n\t\tsrc=\"./docs/third-party/NGIZero-green.hex.svg\"\n\t/\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n2023 development is funded through the [NGI0 Entrust\nFund](https://nlnet.nl/entrust), via [NLnet](https://nlnet.nl/). Please\nsee [here](https://nlnet.nl/project/mCaptcha/) for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcaptcha%2Fdos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmcaptcha%2Fdos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcaptcha%2Fdos/lists"}