🚀 Help me work seamlessly with open source sharing by sponsoring me on GitHub
A blazing-fast Python HTTP client with TLS fingerprint, capable of mimicking TLS
and HTTP2
fingerprints of popular browsers like Chrome
, Safari
, Firefox
, and OkHttp
.
- Async and Blocking
Client
s - Plain bodies, JSON, urlencoded, multipart
- Header Order
- Cookie Store
- Redirect Policy
- Rotating Proxies
- WebSocket Upgrade
- Async DNS Resolver
- HTTPS via BoringSSL
This 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():
client = Client(
impersonate=Impersonate.Firefox136,
user_agent="rnet",
)
resp = await client.get("https://tls.browserleaks.com")
print("Status Code: ", resp.status_code)
print("Version: ", resp.version)
print("Response URL: ", resp.url)
print("Headers: ", resp.headers)
print("Encoding: ", resp.encoding)
print("Content-Length: ", resp.content_length)
print("Remote Address: ", resp.remote_addr)
print(await resp.text())
if __name__ == "__main__":
asyncio.run(main())
Additional learning resources include:
- Linux
- musl:
x86_64
,aarch64
,armv7
,i686
- glibc >= 2.17:
x86_64
- glibc >= 2.31:
aarch64
,armv7
,i686
-
macOS:
x86_64
,aarch64
-
Windows:
x86_64
,i686
,aarch64
- Install environment
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
pip install maturin
pip install uv
uv venv
source .venv/bin/activate
- Development
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
- Musllinux
Also install the Docker environment. The image might be outdated, so if building the image yourself is required, refer to rust-cross-musl and the upstream rust-cross-musl. The upstream rust-cross-musl lacks the relevant platform linker environment variables, which must be added 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
- Manylinux
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 , Chrome114 , Chrome116 , Chrome117 , Chrome118 , Chrome119 , Chrome120 , Chrome123 , Chrome124 , Chrome126 , Chrome127 , Chrome128 , Chrome129 , Chrome130 , Chrome131 , Chrome132 , Chrome133 |
Edge | Edge101 , Edge122 , Edge127 , Edge131 , Edge134 |
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 , Safari18_1_1 , Safari18_3 |
OkHttp | OkHttp3_9 , OkHttp3_11 , OkHttp3_13 , OkHttp3_14 , OkHttp4_9 , OkHttp4_10 , OkHttp4_12 , OkHttp5 |
Firefox | Firefox109 , Firefox117 , Firefox128 , Firefox133 , Firefox135 , FirefoxPrivate135 , FirefoxAndroid135 , Firefox136 , FirefoxPrivate136 |
The python documentation is automatically supported by pyo3-stub-gen. It is not perfect. If you have any suggestions, you can submit a PR to improve it.
If you would like to submit your contribution, please open a Pull Request.
Your question might already be answered on the issues