Skip to main content

Send local HTTP requests with a byte-exact macOS Safari 26.5 network fingerprint (TLS/HTTP2/HPACK/headers).

Project description

never_safari (Python)

Send local HTTP requests with a byte-exact macOS Safari 26.5 network fingerprint — TLS ClientHello (JA3/JA4), HTTP/2 (SETTINGS/WINDOW_UPDATE/ pseudo-header order), HPACK (Huffman + dynamic table), request-header order, download flow-control cadence, and TLS-record framing — like curl_cffi, but for Safari. Built on a patched BoringSSL + a from-scratch HTTP/2 layer.

Install

pip install never_safari          # prebuilt wheels: macOS / Linux / Windows
# or from source (needs cmake, go, ninja, a C/C++ compiler):
pip install maturin && maturin develop -m crates/safari-py/Cargo.toml

Use

import never_safari

# A reusable client keeps cookies + connections (like a browser).
s = never_safari.Client()
r = s.get("https://tls.peet.ws/api/all")
print(r.status, r.ok)
print(r.json()["tls"]["ja4"])       # t13d2013h2_a09f3c656075_7f0f34a4126d

# POST with JSON + custom headers
r = s.post("https://api.example.com/v1/items",
           json=b'{"name":"x"}',
           headers={"authorization": "Bearer TOKEN"},
           referer="https://api.example.com/app")
print(r.status, r.text)

# Options
s = never_safari.Client(
    ios=False,            # iOS Safari 26 profile (no post-quantum MLKEM768)
    proxy="http://user:pass@host:8080",
    multiplex=True,       # browser-style: concurrent requests share one connection
    read_timeout=30.0,
    connect_timeout=10.0,
    max_redirects=10,
)

# One-shot helpers (throwaway client)
never_safari.get("https://example.com")
never_safari.user_agent()

Response: .status, .ok, .headers (dict), .content (bytes, decoded), .text, .json(), .resumed, .url.

Client: .get/.post/.request, .clear_cookies(), .clear_pool(), .clear_session(), .idle_connections.

The network call releases the GIL, so many Python threads can crawl concurrently.

See the project README for the full fingerprint details and scope.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

never_safari-0.1.1-cp39-abi3-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.9+Windows x86-64

never_safari-0.1.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ x86-64

never_safari-0.1.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ARM64

never_safari-0.1.1-cp39-abi3-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

never_safari-0.1.1-cp39-abi3-macosx_10_12_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

Details for the file never_safari-0.1.1-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: never_safari-0.1.1-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for never_safari-0.1.1-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 1aa28cd87a6c525830c6028b2e546ee3345132d342b3ef1c941b2b393981dced
MD5 5413d53177121679b0273d1345c3f6a0
BLAKE2b-256 9dd575a266416e21c1c75c938091871a3279a3e7beb3f32a9ab288abeacaebb6

See more details on using hashes here.

File details

Details for the file never_safari-0.1.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for never_safari-0.1.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 816cf56a73a5e1b1cf68eab7de64880301c86803e513ca42bc16b60e9e1b7665
MD5 7c185b3a5a6662b6dcbe203d14e063ad
BLAKE2b-256 d087c4b70147c2e9439eb9fead99d5098569ca98c84ba6fec7599d5ea0f10669

See more details on using hashes here.

File details

Details for the file never_safari-0.1.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for never_safari-0.1.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 16c9e11fa01c9098d1dd012e7ceeec7832828a27f6a6bf4902245b51b4914a09
MD5 052c0b26f451bd49b397adfb93860887
BLAKE2b-256 c3384ffc07e738866964655f71fe8c3cd19efe273e8a4c652723b2a99b8d6041

See more details on using hashes here.

File details

Details for the file never_safari-0.1.1-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for never_safari-0.1.1-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c3d4ab4812ed46993b24b352d1076d16f78363816c4007264e721c49decd53e6
MD5 79d8f38c4c886b773ad95a0d442304e0
BLAKE2b-256 236e2148fb36218b294295258a1a9d3c84bed86d0e4481c466bf85c03f0f7247

See more details on using hashes here.

File details

Details for the file never_safari-0.1.1-cp39-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for never_safari-0.1.1-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 90b651ac8915b2575ba87b61df8e1bfcddb43899dac5ad16194b26b105121552
MD5 a0bc9bfe4cf1c9ac1d5d4474d2a395db
BLAKE2b-256 39343c217f13e1ce13c7a6cee3035cf66eb4336078a6ba3340e93fe0170ab8f3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page