{"id":25707550,"url":"https://github.com/0x676e67/rnet","last_synced_at":"2026-02-18T18:00:52.650Z","repository":{"id":276963630,"uuid":"930255337","full_name":"0x676e67/rnet","owner":"0x676e67","description":"An ergonomic Python HTTP Client with TLS fingerprint","archived":false,"fork":false,"pushed_at":"2026-02-11T04:42:36.000Z","size":5680,"stargazers_count":1209,"open_issues_count":5,"forks_count":93,"subscribers_count":16,"default_branch":"main","last_synced_at":"2026-02-11T08:47:08.693Z","etag":null,"topics":["akamai","akamai-fingerprint","crawler","fingerprint","http","http-client","http2","https","ja3","ja4","python","rust","scraper","tls","tls-client","tls-fingerprint","web-scraping","websocket","websocket-client"],"latest_commit_sha":null,"homepage":"https://python.wreq.org","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/0x676e67.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks_dev":null,"custom":["https://github.com/0x676e67/0x676e67/blob/main/SPONSOR.md"]}},"created_at":"2025-02-10T10:37:00.000Z","updated_at":"2026-02-11T07:55:12.000Z","dependencies_parsed_at":"2025-12-13T17:16:47.800Z","dependency_job_id":null,"html_url":"https://github.com/0x676e67/rnet","commit_stats":null,"previous_names":["0x676e67/rnet"],"tags_count":67,"template":false,"template_full_name":null,"purl":"pkg:github/0x676e67/rnet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0x676e67%2Frnet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0x676e67%2Frnet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0x676e67%2Frnet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0x676e67%2Frnet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0x676e67","download_url":"https://codeload.github.com/0x676e67/rnet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0x676e67%2Frnet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29588776,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T16:55:40.614Z","status":"ssl_error","status_checked_at":"2026-02-18T16:55:37.558Z","response_time":162,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["akamai","akamai-fingerprint","crawler","fingerprint","http","http-client","http2","https","ja3","ja4","python","rust","scraper","tls","tls-client","tls-fingerprint","web-scraping","websocket","websocket-client"],"created_at":"2025-02-25T08:03:10.693Z","updated_at":"2026-02-18T18:00:52.644Z","avatar_url":"https://github.com/0x676e67.png","language":"Rust","readme":"# rnet\n\n[![CI](https://github.com/0x676e67/rnet/actions/workflows/ci.yml/badge.svg)](https://github.com/0x676e67/rnet/actions/workflows/ci.yml)\n![GitHub License](https://img.shields.io/github/license/0x676e67/rnet?color=blue)\n![Python Version from PEP 621 TOML](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2F0x676e67%2Frnet%2Fmain%2Fpyproject.toml\u0026logo=python)\n[![PyPI](https://img.shields.io/pypi/v/rnet?logo=python)](https://pypi.org/project/rnet/)\n[![PyPI Downloads](https://static.pepy.tech/badge/rnet)](https://pepy.tech/projects/rnet)\n\n\u003e 🚀 Help me work seamlessly with open source sharing by [sponsoring me on GitHub](https://github.com/0x676e67/0x676e67/blob/main/SPONSOR.md)\n\nAn ergonomic and modular Python HTTP client for advanced and low-level emulation, featuring customizable TLS, JA3/JA4, and HTTP/2 fingerprinting capabilities, powered by [wreq](https://github.com/0x676e67/wreq).\n\n## Features\n\n- Async and Blocking `Client`s\n- Plain bodies, JSON, urlencoded, multipart\n- HTTP Trailer\n- Cookie Store\n- Redirect Policy\n- Original Header\n- Rotating Proxies\n- Connection Pooling\n- Streaming Transfers\n- Zero-Copy Transfers\n- WebSocket Upgrade\n- HTTPS via BoringSSL\n- Free-Threaded Safety\n- Automatic Decompression\n- Certificate Store (CAs \u0026 mTLS)\n\n## Example\n\nThe following example uses the `asyncio` runtime with `rnet` installed via pip:\n\n```bash\npip install asyncio rnet --pre --upgrade\n```\n\nAnd then the code:\n\n```python\nimport asyncio\nfrom rnet import Client, Emulation\n\n\nasync def main():\n    # Build a client\n    client = Client(emulation=Emulation.Safari26)\n\n    # Use the API you're already familiar with\n    resp = await client.get(\"https://tls.peet.ws/api/all\")\n    print(await resp.text())\n\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n\n```\n\nAdditional learning resources include:\n\n- [DeepWiki](https://deepwiki.com/0x676e67/rnet)\n- [Documentation](https://rnet.readthedocs.io/)\n- [Synchronous Examples](https://github.com/0x676e67/rnet/tree/main/python/examples/blocking)\n- [Asynchronous Examples](https://github.com/0x676e67/rnet/tree/main/python/examples)\n\n## Behavior\n\n1. **HTTP/2 over TLS**\n\nDue to the complexity of TLS encryption and the widespread adoption of HTTP/2, browser fingerprints such as **JA3**, **JA4**, and **Akamai** cannot be reliably emulated using simple fingerprint strings. Instead of parsing and emulating these string-based fingerprints, `rnet` provides fine-grained control over TLS and HTTP/2 extensions and settings for precise browser behavior emulation.\n\n2. **Device Emulation**\n\nTLS and HTTP/2 fingerprints are often identical across various browser models because these underlying protocols evolve slower than browser release cycles. In most cases, the `User-Agent` version is the only variable. Detailed mapping is available in the [documentation](https://rnet.readthedocs.io/).\n\n## Building\n\n1. Platforms\n\n- Linux(**glibc**/**musl**): `x86_64`, `aarch64`, `armv7`, `i686`\n- macOS: `x86_64`,`aarch64`\n- Windows: `x86_64`,`i686`,`aarch64`\n- Android: `aarch64`, `x86_64`\n\n2. Development\n\nInstall the BoringSSL build environment by referring to [boringssl](https://github.com/google/boringssl/blob/main/BUILDING.md).\n\n```bash\n# on ubuntu or debian\nsudo apt install -y build-essential cmake perl pkg-config libclang-dev musl-tools git\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\npip install uv maturin\n\nuv venv\nsource .venv/bin/activate\n\n# development\nmaturin develop --uv\n\n# build wheels\nmaturin build --release\n```\n\n## Benchmark\n\nOutperforms `requests`, `httpx`, `aiohttp`, and `curl_cffi`, and you can see the [benchmark](https://github.com/0x676e67/rnet/tree/main/bench) for details — benchmark data is for reference only and actual performance may vary based on your environment and use case.\n\n## Services\n\nHelp sustain the ongoing development of this open-source project by reaching out for [commercial support](mailto:gngppz@gmail.com). Receive private guidance, expert reviews, or direct access to the maintainer, with personalized technical assistance tailored to your needs.\n\n## License\n\nLicensed under either of Apache License, Version 2.0 ([LICENSE](./LICENSE) or http://www.apache.org/licenses/LICENSE-2.0).\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the [Apache-2.0](./LICENSE) license, shall be licensed as above, without any additional terms or conditions.\n\n## Sponsors\n\n\u003ca href=\"https://scrape.do/?utm_source=github\u0026utm_medium=rnet\" target=\"_blank\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/0x676e67/rnet/main/.github/assets/scrapedo.svg\"\u003e\n\u003c/a\u003e\n\n**[Scrape.do](https://scrape.do/?utm_source=github\u0026utm_medium=rnet)** is the ultimate toolkit for collecting public data at scale. Unmatched speed, unbeatable prices, unblocked access.\n\nOne line of code. Instant data access\n\n🔁 Automatic Proxy Rotation 🤖 Bypass Anti-bot Solutions  ⛏️ Seamless Web Scraping\n\n🚀 **[Register](https://dashboard.scrape.do/login)** | 👔 **[Linkedin](https://www.linkedin.com/company/scrape-do/)** | 📖 **[Docs](https://scrape.do/documentation)**\n\n---\n\n\u003ca href=\"https://www.ez-captcha.com\" target=\"_blank\"\u003e\n  \u003cimg src=\"https://www.ez-captcha.com/siteLogo.png\" height=\"50\" width=\"50\"\u003e\n\u003c/a\u003e\n\nCaptcha solving can be slow and unreliable, but **[EzCaptcha](https://www.ez-captcha.com/?r=github-rnet)** delivers fast, reliable solving through a simple API — supporting a wide range of captcha types with no complex integration required.  \n\n**ReCaptcha** • **FunCaptcha** • **CloudFlare** • **Akamai** • **AkamaiSbsd** • **HCaptcha**  \n\nDesigned for developers, it offers high accuracy, low price, low latency, and easy integration, helping you automate verification while keeping traffic secure and user flows smooth.\n\n🚀 **[Get API Key](https://www.ez-captcha.com/?r=github-rnet)** | 📖 **[Docs](https://ezcaptcha.atlassian.net/wiki/spaces/IS/pages/7045121/EzCaptcha+API+Docs+English)** | 💬 **[Telegram](https://t.me/+NrVmPhlb9ZFkZGY5)**\n\n---\n\n\u003ca href=\"https://www.thordata.com/products/residential-proxies?ls=github\u0026lk=rnet\" target=\"_blank\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/0x676e67/rnet/main/.github/assets/thordata.svg\"\u003e\n\u003c/a\u003e\n\n**[Thordata](https://www.google.com/url?q=https://www.thordata.com/?ls%3Dgithub%26lk%3Drnet\u0026sa=D\u0026source=editors\u0026ust=1768812458958099\u0026usg=AOvVaw1VwMpnrjCaf7iWbVsM5V0k)**: Get Reliable Global Proxies at an Unbeatable Value. \n\nOne-click data collection with enterprise-grade stability and compliance. Join thousands of developers using ThorData for high-scale operations.\n\n**Exclusive Offer**: Sign up for a free Residential Proxy trial and 2,000 FREE SERP API calls!\n\n👔 **[Linkedin](https://www.linkedin.com/company/thordata/?viewAsMember=true)** | 💬 **[Discord](https://discord.gg/t9qnNKfurd)** | ✈️ **[Telegram](https://t.me/thordataproxy)**\n\n---\n\n\u003ca href=\"https://salamoonder.com/\" target=\"_blank\"\u003e\n  \u003cimg src=\"https://salamoonder.com/auth/assets/images/3d_logo.png\" height=\"50\" width=\"50\"\u003e\n\u003c/a\u003e\n\nAnti-bots evolve quickly, but **[Salamoonder](https://salamoonder.com/)** moves faster, delivering reliable anti-bot tokens with just two API requests — no browser automation or unnecessary complexity required.  \n\n**Kasada** • **Incapsula** • **Datadome** • **Akamai** • **And many more**  \n\n\nAutomatic updates keep your integration simple and low-maintenance, and it’s nearly **50%** cheaper than the competition, giving you faster results at a lower cost.\n\n🚀 **[Register](https://salamoonder.com/auth/register)** | 📖 **[Docs](https://apidocs.salamoonder.com/)** | 💬 **[Telegram](https://t.me/salamoonder_telegram)**\n\n---\n\n\u003ca href=\"https://hypersolutions.co/?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=rnet\" target=\"_blank\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/0x676e67/rnet/main/.github/assets/hypersolutions.jpg\" height=\"47\" width=\"149\"\u003e\u003c/a\u003e\n\nTLS fingerprinting alone isn't enough for modern bot protection. **[Hyper Solutions](https://hypersolutions.co?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=rnet)** provides the missing piece - API endpoints that generate valid antibot tokens for:\n\n**Akamai** • **DataDome** • **Kasada** • **Incapsula**\n\nNo browser automation. Just simple API calls that return the exact cookies and headers these systems require.\n\n🚀 **[Get Your API Key](https://hypersolutions.co?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=rnet)** | 📖 **[Docs](https://docs.justhyped.dev)** | 💬 **[Discord](https://discord.gg/akamai)**\n\n---\n\n\u003ca href=\"https://dashboard.capsolver.com/passport/register?inviteCode=y7CtB_a-3X6d\" target=\"_blank\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/0x676e67/rnet/main/.github/assets/capsolver.jpg\" height=\"47\" width=\"149\"\u003e\u003c/a\u003e\n\n[CapSolver](https://www.capsolver.com/?utm_source=github\u0026utm_medium=banner_repo\u0026utm_campaign=rnet) leverages AI-powered Auto Web Unblock to bypass Captchas effortlessly, providing fast, reliable, and cost-effective data access with seamless integration into Colly, Puppeteer, and Playwright—use code **`RNET`** for a 6% bonus!\n","funding_links":["https://github.com/0x676e67/0x676e67/blob/main/SPONSOR.md"],"categories":["Web \u0026 Networking","Rust"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0x676e67%2Frnet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0x676e67%2Frnet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0x676e67%2Frnet/lists"}