{"id":31749146,"url":"https://github.com/techinz/browsers-benchmark","last_synced_at":"2025-10-09T14:32:46.113Z","repository":{"id":302535393,"uuid":"1012496755","full_name":"techinz/browsers-benchmark","owner":"techinz","description":"Browser automation engine benchmark - Test bypass rates, performance \u0026 stealth against Cloudflare, DataDome, reCAPTCHA and other bot detection systems ","archived":false,"fork":false,"pushed_at":"2025-09-25T02:49:23.000Z","size":80403,"stargazers_count":99,"open_issues_count":1,"forks_count":3,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-10-04T02:55:25.443Z","etag":null,"topics":["anti-detect","antidetect-browser","automation","browser","captcha","patchright","playwright","puppeteer","python","stealth"],"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/techinz.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,"zenodo":null}},"created_at":"2025-07-02T12:25:02.000Z","updated_at":"2025-10-01T12:59:44.000Z","dependencies_parsed_at":"2025-07-02T23:35:14.803Z","dependency_job_id":null,"html_url":"https://github.com/techinz/browsers-benchmark","commit_stats":null,"previous_names":["techinz/browsers-benchmark"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/techinz/browsers-benchmark","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techinz%2Fbrowsers-benchmark","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techinz%2Fbrowsers-benchmark/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techinz%2Fbrowsers-benchmark/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techinz%2Fbrowsers-benchmark/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/techinz","download_url":"https://codeload.github.com/techinz/browsers-benchmark/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techinz%2Fbrowsers-benchmark/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279001534,"owners_count":26083119,"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","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["anti-detect","antidetect-browser","automation","browser","captcha","patchright","playwright","puppeteer","python","stealth"],"created_at":"2025-10-09T14:31:45.834Z","updated_at":"2025-10-09T14:32:46.105Z","avatar_url":"https://github.com/techinz.png","language":"Python","funding_links":[],"categories":["Scraping \u0026 Automation"],"sub_categories":[],"readme":"# Browser Engine Benchmark\n\n[![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)\n[![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)\n\nA toolkit for testing browser automation engines against modern web protection systems. It checks how well each engine can bypass bot detection and measures their speed, resource usage, and resistance to fingerprinting.\n\n---\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://www.nstproxy.com/?type=flow\u0026utm_source=techinz\" target=\"_blank\"\u003e\n        \u003cimg width=\"624\" height=\"277\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/280e27fd-90c6-4bc3-8300-ab3ed16e57f7\" /\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\nIf you're looking for a reliable proxy to \u003cb\u003ebypass anti-bot systems, scrape at scale, and access geo-restricted data without blocks\u003c/b\u003e, \u003ca href=\"https://www.nstproxy.com/?type=flow\u0026utm_source=techinz\"\u003eNstproxy\u003c/a\u003e is built for you. Perfect for large-scale web scraping, SEO monitoring, e-commerce data collection, price intelligence, and automation — even under the strictest anti-scraping protections.\n\nNstproxy offers a global pool of residential, datacenter, and IPv6 proxies with rotating or sticky sessions, advanced anti-block tech, and pricing from $0.1/GB for maximum uptime and ROI.\n\n\u003cb\u003eKey Features:\u003c/b\u003e\n- 🌍 \u003cb\u003eGlobal IP Coverage\u003c/b\u003e – 110M+ residential IPs, 195+ countries, IPv4/IPv6\n- 🔄 \u003cb\u003eRotation Control\u003c/b\u003e – Per request or sticky sessions for consistent sessions\n- 🛡 \u003cb\u003eAnti-ban \u0026 CAPTCHA Bypass\u003c/b\u003e – Designed for high scraping success rates\n- 💰 \u003cb\u003eAffordable\u003c/b\u003e – From $0.1/GB, far below market average\n- ⚡ \u003cb\u003eMulti-purpose\u003c/b\u003e – Scraping, SEO, automation, e-commerce, analytics\n- 🔌 \u003cb\u003eEasy Integration\u003c/b\u003e – Python, Puppeteer, Playwright, Node.js\n- 📈 \u003cb\u003eUnlimited Scaling\u003c/b\u003e – Handle any volume with stable performance\n\nAn all-in-one proxy solution for developers and traders who need reliability, scalability, and cost efficiency.  \n👉 Learn more: \u003ca href=\"https://www.nstproxy.com/?type=flow\u0026utm_source=techinz\"\u003eNstproxy.com\u003c/a\u003e: https://www.nstproxy.com/?type=flow\u0026utm_source=techinz  | \u003ca href=\"https://app.nstproxy.com/?utm_source=techinz\"\u003eDashboard\u003c/a\u003e  \nTelegram: https://t.me/nstproxy Discord: https://discord.gg/5jjWCAmvng   \nUse code: \u003cb\u003eTECHINZ get 10% OFF\u003c/b\u003e\n\n---\n\n## 🎯 Overview\nModern web applications use advanced bot detection like Cloudflare, DataDome, and Imperva to block automated access. This benchmark suite shows how different browser automation engines handle these defenses:\n- **Bypass Success Rate**: Effectiveness against major protection systems\n- **Performance Metrics**: Memory usage, CPU consumption, and page load times\n- **Fingerprinting Resistance**: reCAPTCHA scores and CreepJS trust ratings\n- **Network Analysis**: IP detection (proxy validation) and WebRTC leak testing\n\n## 🚀 Key Features\n### Protection System Testing\n- **Cloudflare** \n- **DataDome**   \n- **Amazon** \n- **Google Search** \n- **Ticketmaster (Imperva)**\n- \u003ci\u003eMore systems coming soon\u003c/i\u003e\n\n### Browser Engine Support\n- \u003ca href=\"https://playwright.dev\"\u003e**Playwright**\u003c/a\u003e - Microsoft's automation framework (Chrome, Firefox, Safari)\n- \u003ca href=\"https://camoufox.com\"\u003e**Camoufox**\u003c/a\u003e - Playwright-based\n- \u003ca href=\"https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-python\"\u003e**Patchright**\u003c/a\u003e - Playwright-based\n- \u003ca href=\"https://github.com/tinyfish-io/tf-playwright-stealth\"\u003e**Playwright Stealth**\u003c/a\u003e - Playwright-based\n- \u003ca href=\"https://www.selenium.dev\"\u003e**Selenium**\u003c/a\u003e - Open-source browser automation framework (apparently deprecated, so it is tested without proxies)\n- \u003ca href=\"https://seleniumbase.io/\"\u003e**Seleniumbase**\u003c/a\u003e - Open-source professional toolkit for web automation activities\n- \u003ca href=\"https://github.com/ultrafunkamsterdam/nodriver\"\u003e**NoDriver**\u003c/a\u003e - Open-source browser automation framework (supports only SOCKS5 proxies)\n- \u003ca href=\"https://github.com/cdpdriver/zendriver\"\u003e**ZenDriver**\u003c/a\u003e - NoDriver-based\n- \u003ci\u003eMore engines coming soon. What engine should I add next?\u003c/i\u003e\n\n### Analytics\n- Automated report generation with visualizations\n- Performance profiling and resource usage tracking\n- Exportable results in JSON and Markdown formats\n\n## 🔒 **Important: Proxy Requirements**\n**Using a clean proxy is essential for accurate benchmark results.**\n\u003cdetails\u003e\n\u003csummary\u003eWhy Proxies Are Required\u003c/summary\u003e\n\n- **IP Reputation**: Your home/datacenter IP may already be flagged by protection systems from previous automation attempts, browser extensions, or security software\n- **Clean Testing Environment**: A fresh proxy IP ensures you're testing the browser engine's capabilities, not your IP's reputation\n- **Rate Limiting**: Repeated tests from the same IP can trigger rate limiting, affecting bypass success rates\n\u003c/details\u003e\n\n## 📊 Sample Results\nThis benchmark provides detailed comparative analysis. Here's an excerpt from a recent test run (more in \u003ca href=\"results/example\"\u003eresults/example\u003c/a\u003e):  \n\u003ci\u003eReal IP in this example - 149.102.240.75\u003c/i\u003e  \n\u003ci\u003eProxy IP in this example is different for each engine\u003c/i\u003e\n\n### Overall Bypass Rate\n| Engine | Bypass Rate (%) |\n|-----------------|----------------:|\n| camoufox_headless | 83.3 |\n| nodriver-chrome | 83.3 |\n| playwright-firefox | 83.3 |\n| camoufox | 66.7 |\n| patchright | 66.7 |\n| playwright-firefox_headless | 66.7 |\n| zendriver-chrome_headless | 50.0 |\n| tf-playwright-stealth-firefox_headless | 50.0 |\n| tf-playwright-stealth-chromium_headless | 50.0 |\n| tf-playwright-stealth-chromium | 50.0 |\n| seleniumbase-cdp-chrome | 50.0 |\n| nodriver-chrome_headless | 33.3 |\n| tf-playwright-stealth-firefox | 33.3 |\n| selenium-chrome__no_proxy | 33.3 |\n| playwright-chrome_headless | 33.3 |\n| zendriver-chrome | 33.3 |\n| playwright-chrome | 16.7 |\n| patchright_headless | 16.7 |\n| selenium-chrome_headless__no_proxy | 16.7 |\n\n\n### Resource Usage Comparison\n| Engine | Memory Usage (MB) | CPU Usage (%) |\n|-----------------|------------------:|--------------:|\n| playwright-chrome_headless | 212.0 | 4.9 |\n| tf-playwright-stealth-chromium_headless | 298.0 | 9.4 |\n| selenium-chrome_headless__no_proxy | 354.0 | 11.5 |\n| zendriver-chrome | 364.0 | 10.2 |\n| seleniumbase-cdp-chrome | 375.0 | 14.0 |\n| zendriver-chrome_headless | 424.0 | 13.4 |\n| playwright-chrome | 454.0 | 20.2 |\n| tf-playwright-stealth-chromium | 462.0 | 19.8 |\n| selenium-chrome__no_proxy | 519.0 | 15.5 |\n| nodriver-chrome_headless | 547.0 | 20.0 |\n| nodriver-chrome | 554.0 | 19.0 |\n| patchright_headless | 560.0 | 12.6 |\n| playwright-firefox_headless | 606.0 | 28.1 |\n| tf-playwright-stealth-firefox | 659.0 | 26.4 |\n| patchright | 709.0 | 19.2 |\n| tf-playwright-stealth-firefox_headless | 822.0 | 46.2 |\n| camoufox | 1007.0 | 43.5 |\n| playwright-firefox | 1012.0 | 51.7 |\n| camoufox_headless | 1037.0 | 45.5 |\n\n\n### Recaptcha Scores - https://antcpt.com/score_detector\n| Engine | Recaptcha Score (0-1) |\n|-----------------|--------------------:|\n| patchright | 0.30 |\n| camoufox | 0.10 |\n| camoufox_headless | 0.10 |\n| patchright_headless | 0.10 |\n| playwright-chrome | 0.10 |\n| playwright-firefox | 0.10 |\n| playwright-firefox_headless | 0.10 |\n| seleniumbase-cdp-chrome | 0.10 |\n| tf-playwright-stealth-chromium | 0.10 |\n| tf-playwright-stealth-chromium_headless | 0.10 |\n| tf-playwright-stealth-firefox | 0.10 |\n| tf-playwright-stealth-firefox_headless | 0.10 |\n| nodriver-chrome | nan |\n| nodriver-chrome_headless | nan |\n| playwright-chrome_headless | nan |\n| selenium-chrome__no_proxy | nan |\n| selenium-chrome_headless__no_proxy | nan |\n| zendriver-chrome | nan |\n| zendriver-chrome_headless | nan |\n\nNote 1: \"nan\" indicates no score was obtained - the website just stopped working when tests were run\n\nNote 2: `\nThis Score is taken by solving the reCAPTCHA v3 on your browser.\nThe Score shows if Google considers you as HUMAN or BOT.\n1.0 is very likely a good interaction, 0.0 is very likely a bot\nWith low score values (\u003c 0.3) you'll get a slow reCAPTCHA 2, it would be hard to solve it.\nAnd vise versa, with score \u003e= 0.7 it will be much easier. \n`\n\n\n### CreepJS Scores - https://abrahamjuliot.github.io/creepjs\n| Engine | Trust Score (%) | Bot Score (%) | WebRTC IP |\n|-----------------|----------------:|--------------:|----------:|\n| camoufox | 0.00 | 0.00 | 179.60.189.65 |\n| nodriver-chrome | 0.00 | 0.00 | 149.102.240.75 |\n| nodriver-chrome_headless | 0.00 | 0.00 | 149.102.240.75 |\n| patchright | 0.00 | 0.00 | 149.102.240.75 |\n| patchright_headless | 0.00 | 0.00 | 149.102.240.75 |\n| playwright-chrome | 0.00 | 0.00 | 149.102.240.75 |\n| playwright-chrome_headless | 0.00 | 0.00 | 149.102.240.75 |\n| playwright-firefox | 0.00 | 0.00 | 149.102.240.75 |\n| playwright-firefox_headless | 0.00 | 0.00 | 149.102.240.75 |\n| selenium-chrome__no_proxy | 0.00 | 0.00 | 149.102.240.75 |\n| selenium-chrome_headless__no_proxy | 0.00 | 0.00 | 149.102.240.75 |\n| seleniumbase-cdp-chrome | 0.00 | 0.00 | 149.102.240.75 |\n| tf-playwright-stealth-chromium | 0.00 | 0.00 | 149.102.240.75 |\n| tf-playwright-stealth-chromium_headless | 0.00 | 0.00 | 149.102.240.75 |\n| tf-playwright-stealth-firefox | 0.00 | 0.00 | 149.102.240.75 |\n| tf-playwright-stealth-firefox_headless | 0.00 | 0.00 |  |\n| zendriver-chrome | 0.00 | 0.00 | 149.102.240.75 |\n| zendriver-chrome_headless | 0.00 | 0.00 | 149.102.240.75 |\n| camoufox_headless | nan | nan | Not detected |\n\nNote: \n1. CreepJS disabled trust and bot scores for now - https://github.com/abrahamjuliot/creepjs/issues/292\n2. If the WebRTC IP is different from your real IP - no leakage (applicapable only with proxy).\n\n\n### IP (Ipify)\n| Engine | IP |\n|-----------------|----------:|\n| camoufox | 179.60.189.65 |\n| camoufox_headless | 142.168.221.86 |\n| nodriver-chrome | 181.188.19.203 |\n| nodriver-chrome_headless | 38.13.154.130 |\n| patchright | 73.10.95.50 |\n| patchright_headless | 108.153.53.3 |\n| playwright-chrome | 31.48.214.36 |\n| playwright-chrome_headless | 45.188.194.209 |\n| playwright-firefox | 142.168.221.86 |\n| playwright-firefox_headless | 165.238.24.218 |\n| selenium-chrome__no_proxy | 149.102.240.75 |\n| selenium-chrome_headless__no_proxy | 149.102.240.75 |\n| seleniumbase-cdp-chrome | 207.146.227.90 |\n| tf-playwright-stealth-chromium | 37.5.253.239 |\n| tf-playwright-stealth-chromium_headless | 204.204.177.118 |\n| tf-playwright-stealth-firefox | 208.32.186.48 |\n| tf-playwright-stealth-firefox_headless | 204.205.129.70 |\n| zendriver-chrome | 207.146.227.90 |\n| zendriver-chrome_headless | 204.205.78.214 |\n\nNote: If the IP is your proxy's IP - good, your real IP - bad (applicapable only with proxy).\n\n### Visual Dashboard\n![Bypass Dashboard](results/example/media/bypass_dashboard.png)\n\n### Recaptcha Score Visualization\n![Recaptcha Scores](results/example/media/recaptcha_scores.png)\n\n### CreepJS Visualization\n![CreepJS Scores](results/example/media/creepjs_scores.png)\n\n## 🛠️ Installation\n\n### Quick Start\n1. **Clone the repository**\n   ```bash\n   git clone https://github.com/techinz/browsers-benchmark.git\n   cd browsers-benchmark\n   ```\n\n2. **Set up Python environment**\n   ```bash\n   python -m venv venv\n   source venv/bin/activate  # On Windows: venv\\Scripts\\activate\n   pip install -r requirements.txt\n   ```\n\n3. **Install browser engines**\n\n   **Playwright**\n   ```bash\n   playwright install\n   # On Linux also run:\n   playwright install-deps\n   ```\n\n   **Camoufox**\n   ```bash\n   # Windows\n   camoufox fetch\n   \n   # Linux  \n   python -m camoufox fetch\n   sudo apt install -y libgtk-3-0 libx11-xcb1 libasound2\n   ```\n\n   **Patchright**\n   ```bash\n   patchright install chromium\n   ```\n\n4. **Configure settings**\n   ```bash\n   cp .env.example .env\n   # Edit .env with your proxy settings if needed\n   ```\n\n5. **Configure proxies**\n   1. Create a file named `proxies.txt` in the `documents` directory.\n   2. Add your proxy URLs in format `http://username:password@proxy_host:port` or `http://proxy_host:port`.  \n      ❗️ IMPORTANT (1): Number of proxies has to be not less than number of engines you want to test.  \n      ❗️ IMPORTANT (2): Some engines support different proxy protocols - for example, Playwright supports only HTTP and HTTPS, but NoDriver supports only SOCKS5.  \n         This implies that you have to add multiple proxy protocols to the `proxies.txt` file or exclude some engines from the test.  \n         At the moment you need all HTTP/HTTPS proxies and at least 1 SOCKS5 for NoDriver. Also, the benchmark will show you what proxy protocols are missing.  \n      ❗️ IMPORTANT (3): Selenium won't use any proxies.  \n\n   Example `proxies.txt` content (each line is a separate proxy):\n   ```\n   http://proxy1.example.com:8080\n   http://proxy2.example.com:8080\n   http://username:password@proxy3.example.com:8080\n   http://username:password@proxy4.example.com:8080\n   socks5://username:password@proxy5.example.com:8080\n   ```\n\n6. **Run benchmark**\n   ```bash\n   python main.py\n   ```\n\n## ⚙️ Configuration\n\n### Environment Variables (.env)\n```bash\n# Proxy Configuration (highly recommended to enable)\nPROXY_ENABLED=true\nPROXY_FILE_PATH=documents/proxies.txt\nPROXY_MAX_RETRIES=3\n\n# Performance Settings\nPAGE_LOAD_TIMEOUT_S=90\nPAGE_STABILIZATION_DELAY_S=5\nMAX_RETRIES=3\n```\n\n## 📈 Output \u0026 Reports\n\nThe benchmark generates reports in the `results/` directory:\n\n- **`summary.md`** - Human-readable markdown report\n- **`benchmark_results.json`** - Raw data for further analysis  \n- **`media/`** - Generated visualizations and screenshots\n  - `bypass_dashboard.png` - Multi-metric dashboard\n  - `recaptcha_scores.png` - reCAPTCHA performance chart\n  - `creepjs_scores.png` - Fingerprinting resistance analysis\n  - `screenshots` - Screenshots of all tested targets\n\n## 🏗️ Architecture\n\nThe codebase follows a modular architecture for extensibility:\n\n```\n├── config/           # Configuration management\n├── engines/          # Browser engine implementations  \n├── utils/\n│   ├── targets/      # Test target definitions\n│   ├── report/       # Report generation system\n│   ├── logging/      # Structured logging\n│   └── ...\n└── results/          # Output directory\n```\n\n### Adding New Targets\n1. Modify `config/benchmark_targets.py` to add custom test targets:\n\n    ```python\n    Target(\n        name=\"custom_site\",\n        url=\"https://example.com\",\n        check_function=\"check_custom_bypass\",\n        description=\"Custom site protection test\"\n    )\n    ```\n2. Create a check function for the target in `utils/targets/check_bypass`, for example in a file named `custom_bypass.py`:\n    ```python\n    from engines.base import BrowserEngine\n\n    async def check_custom_bypass(engine: BrowserEngine) -\u003e bool:\n        element_found, element_html = await engine.locator('//div[@class=\"captcha\"]')\n\n        return not element_found # no captcha found - success!\n    ```\n3. Add it to the checkers mapping in `config/benchmark_targets.py`'s `BypassTargetsSettings`:\n    ```python\n    checkers: Dict[str, Callable] = Field(\n        default_factory=lambda: {\n            \"check_cloudflare_bypass\": check_cloudflare_bypass,\n            \"check_datadome_bypass\": check_datadome_bypass,\n            ...\n            \"check_custom_bypass\": check_custom_bypass,\n        }\n    )\n    ```\n\n### Adding New Engines\n1. Extend the `BrowserEngine` base class:\n\n   ```python  \n   class CustomEngine(BrowserEngine):\n       async def start(self) -\u003e None:\n           # Initialize browser\n           \n       async def navigate(self, url: str) -\u003e Dict[str, Any]:\n           # Navigation logic\n   ```\n   \n   Or, if Playwright-based, extend `PlaywrightBase` base class:\n   ```python  \n   class CustomPlaywrightBasedEngine(PlaywrightBase):\n       ...\n   ```\n   \n    Or, if Selenium-based, extend `SeleniumBase` base class:\n   ```python  \n   class CustomSeleniumBasedEngine(SeleniumBase):\n       ...\n   ```\n   \n2. Add it to the engines mapping in `config/engines.py`'s `EnginesSettings`:\n    ```python\n    base_engines = [\n            {\n                \"class\": PlaywrightEngine,\n                \"params\": {\"headless\": True, \"name\": \"playwright-chrome_headless\", \"browser_type\": \"chromium\"}\n            },\n            ...\n            {\n                \"class\": CustomEngine,\n                \"params\": {\"headless\": True, \"name\": \"custom_engine\", \"browser_type\": \"chromium\"}\n            }\n   ]\n    ```\n\n## 🔧 Platform-Specific Notes\n### Troubleshooting\n\n**Common Issues:**\n- **Detection failures**: Verify proxy configuration and target accessibility\n\n## 🤝 Contributing\n\nContributions are welcome! Areas where help is needed:\n- **New Protection Systems**: Add support for additional bot detection services\n- **Browser Engines**: Implement support for new automation frameworks (e.g. Selenium-based)\n- **Analysis Tools**: Enhance reporting and visualization\n\n## 📝 License\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## ⚠️ Disclaimer\nThis tool is designed for educational and research purposes. Users are responsible for ensuring compliance with website terms of service and applicable laws. The authors and contributors do not encourage or endorse any malicious use of this software.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechinz%2Fbrowsers-benchmark","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftechinz%2Fbrowsers-benchmark","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechinz%2Fbrowsers-benchmark/lists"}