Skip to content

0x676e67/rnet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rnet

CI PyPI - License Python Version from PEP 621 TOML PyPI PyPI Downloads

🚀 Help me work seamlessly with open source sharing by sponsoring me on GitHub

A blazing-fast Python HTTP client with advanced browser fingerprinting that accurately emulates Chrome, Firefox, Safari, Opera, and OkHttp, with precise TLS and HTTP2 signatures, and powered by wreq for high performance.

Features

  • Async and Blocking Clients
  • Plain bodies, JSON, urlencoded, multipart
  • Cookie Store
  • Redirect Policy
  • Original Headers
  • Rotating Proxies
  • WebSocket Upgrade
  • Connection Pooling
  • Streaming Transfers
  • Zero-Copy Transfers
  • HTTPS via BoringSSL
  • Free-Threaded Safety
  • Automatic Decompression

Example

The following example uses the asyncio runtime with rnet installed via pip:

pip install asyncio rnet==3.0.0rc8

And then the code:

import asyncio
from rnet import Client, Emulation


async def main():
    # Build a client
    client = Client(emulation=Emulation.Firefox143)

    # Use the API you're already familiar with
    resp = await client.get("https://tls.peet.ws/api/all")

    # Print the response
    print(await resp.text())


if __name__ == "__main__":
    asyncio.run(main())

Additional learning resources include:

  • DeepWiki

  • API Documentation

  • Repository Tests

  • Synchronous Examples

  • Asynchronous Examples

  • Available OS emulations
    OS Description
    Windows Windows (any version)
    MacOS macOS (any version)
    Linux Linux (any distribution)
    Android Android (mobile)
    iOS iOS (iPhone/iPad)
  • Available browser emulations
    Browser Versions
    Chrome Chrome100, Chrome101, Chrome104, Chrome105, Chrome106, Chrome107, Chrome108, Chrome109, Chrome110, Chrome114, Chrome116, Chrome117, Chrome118, Chrome119, Chrome120, Chrome123, Chrome124, Chrome126, Chrome127, Chrome128, Chrome129, Chrome130, Chrome131, Chrome132, Chrome133, Chrome134, Chrome135, Chrome136, Chrome137, Chrome138, Chrome139, Chrome140
    Safari SafariIos17_2, SafariIos17_4_1, SafariIos16_5, Safari15_3, Safari15_5, Safari15_6_1, Safari16, Safari16_5, Safari17_0, Safari17_2_1, Safari17_4_1, Safari17_5, Safari18, SafariIPad18, Safari18_2, SafariIos18_1_1, Safari18_3, Safari18_3_1, Safari18_5, Safari26, SafariIos26, SafariIPad26
    Firefox Firefox109, Firefox117, Firefox128, Firefox133, Firefox135, FirefoxPrivate135, FirefoxAndroid135, Firefox136, FirefoxPrivate136, Firefox139, Firefox142, Firefox143
    OkHttp OkHttp3_9, OkHttp3_11, OkHttp3_13, OkHttp3_14, OkHttp4_9, OkHttp4_10, OkHttp4_12, OkHttp5
    Edge Edge101, Edge122, Edge127, Edge131, Edge134
    Opera Opera116, Opera117, Opera118, Opera119

Platforms

  1. Linux
  • glibc >= 2.34: x86_64, aarch64, armv7, i686
  • musl: x86_64, aarch64, armv7, i686
  1. macOS: x86_64,aarch64

  2. Windows: x86_64,i686,aarch64

Building

  1. Development

Install the BoringSSL build environment by referring to boring and boringssl.

# on ubuntu or debian
sudo apt install -y build-essential cmake perl pkg-config libclang-dev musl-tools git
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
pip install uv maturin

uv venv
source .venv/bin/activate

# Development
maturin develop --uv

# Build wheels
maturin build --release
  1. Musllinux

Make sure you have Docker installed. The provided image may be outdated, so you might need to build it yourself. See rust-cross-musl and the upstream rust-cross/rust-musl-cross for reference.
Note: The upstream image does not include some platform-specific linker environment variables; you may need to add these manually.

bash .github/musl_build.sh i686-unknown-linux-musl
bash .github/musl_build.sh x86_64-unknown-linux-musl
bash .github/musl_build.sh aarch64-unknown-linux-musl
bash .github/musl_build.sh armv7-unknown-linux-musleabihf
  1. Manylinux

For Manylinux compilation, refer to manylinux.

Services

Help sustain the ongoing development of this open-source project by reaching out for commercial support. Receive private guidance, expert reviews, or direct access to the maintainer, with personalized technical assistance tailored to your needs.

Benchmark

Outperforms requests, httpx, Python-TLS-Client, and curl_cffi. See the benchmark for details. Benchmark data is for reference only—actual performance may vary based on your environment and use case.

License

Licensed under either of Apache License, Version 2.0 (LICENSE or http://www.apache.org/licenses/LICENSE-2.0).

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.

Sponsors

TLS fingerprinting alone isn't enough for modern bot protection. Hyper Solutions provides the missing piece - API endpoints that generate valid antibot tokens for:

AkamaiDataDomeKasadaIncapsula

No browser automation. Just simple API calls that return the exact cookies and headers these systems require.

🚀 Get Your API Key | 📖 Docs | 💬 Discord


CapSolver 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!