🚀 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/HTTP2 signatures, and powered by wreq for high performance, outperforming requests, httpx, and curl_cffi (see benchmark).
ClientsThis asynchronous example demonstrates how to make a simple GET request using the rnet library. So you need install rnet and run the following code:
pip install asyncio rnet
And then the code:
import asyncio
from rnet import Impersonate, Client
async def main():
# Build a client
client = Client(impersonate=Impersonate.Firefox139)
# 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:
Linux
glibc >= 2.34: x86_64, aarch64, armv7, i686
musl: x86_64, aarch64, armv7, i686
macOS: x86_64,aarch64
Windows: x86_64,i686,aarch64
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
pip install maturin
pip install uv
uv venv
source .venv/bin/activate
maturin develop --uv
python3 examples/client.py
Compile wheels
Local Compilation
Install the BoringSSL build environment by referring to boring and boringssl.
maturin build --release
Make sure the Docker environment is installed. The provided image may be outdated, so you might need to build it yourself. Refer to rust-cross-musl and the upstream rust-cross/rust-musl-cross. Note that the upstream image lacks certain platform-specific linker environment variables, which you’ll need to add manually.
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
bash .github/musl_build.sh i686-unknown-linux-musl
For Manylinux compilation, refer to manylinux.
In fact, most device models share the same TLS/HTTP2 configuration, with the main difference being the User-Agent.
| 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 |
| 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 |
| Firefox | Firefox109, Firefox117, Firefox128, Firefox133, Firefox135, FirefoxPrivate135, FirefoxAndroid135, Firefox136, FirefoxPrivate136, Firefox139 |
| 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 |
For a comprehensive introduction to this library, refer to the DeepWiki documentation. This AI-generated guide, created by a third party, offers a solid overview and allows interaction with the AI to explore specific APIs.
If you would like to submit your contribution, please open a Pull Request.
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!
$ claude mcp add wreq-python \
-- python -m otcore.mcp_server <graph>