A HTTP client library with JA3 spoofing capabilities
Project description
httpz
A Python HTTP client that wraps around the azuretls-client Go package, providing easy-to-use JA3 fingerprinting capabilities with an API similar to httpx.
Features
- JA3 Fingerprinting: Easily modify the TLS fingerprint of your HTTP requests
- Browser Emulation: Set a browser profile to match specific browser behavior
- Ordered Headers: Control the exact order of HTTP headers for better browser emulation
- Fallback Mode: Gracefully falls back to the
requestslibrary when the native library isn't available - httpx-like API: Familiar interface for users of the popular httpx library
Installation
pip install httpz-ja3
Quick Start
from httpz import Session
# Create a session
session = Session()
# Make a request
response = session.get("https://httpbin.org/get")
print(f"Status code: {response.status_code}")
print(response.json)
JA3 Fingerprinting
from httpz import Session, Browser
# Create a session
session = Session()
# Apply a specific JA3 fingerprint
ja3 = "771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,0-23-65281-10-11-35-16-5-13-18-51-45-43-27-21,29-23-24,0"
session.apply_ja3(ja3, browser=Browser.CHROME)
# Set custom headers in a specific order (important for fingerprinting)
session.set_ordered_headers([
("accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"),
("accept-language", "en-US,en;q=0.9"),
("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.5 Safari/605.1.15")
])
# Make request
response = session.get("https://tls.peet.ws/api/all")
# Check the detected JA3 fingerprint
if response.status_code == 200:
ja3_info = response.json.get('tls', {}).get('ja3', 'unknown')
print(f"Server detected JA3: {ja3_info}")
Convenience Functions
from httpz import get_session, create_with_ja3, Browser
# Quick session creation with JA3
session = get_session(
ja3="771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,0-23-65281-10-11-35-16-5-13-18-51-45-43-27-21,29-23-24,0",
browser=Browser.SAFARI
)
# Ensure JA3 is applied (will raise error if azuretls not available)
session = create_with_ja3(
ja3="771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,0-23-65281-10-11-35-16-5-13-18-51-45-43-27-21,29-23-24,0",
browser=Browser.CHROME
)
Cookie Handling
from httpz import Session
session = Session()
response = session.get("https://httpbin.org/cookies/set?cookie1=value1")
# Access cookies
for cookie in response.cookies:
print(f"Cookie: {cookie['name']} = {cookie['value']}")
# Make another request with the cookies
response = session.get("https://httpbin.org/cookies")
print(response.json)
Context Manager Support
from httpz import Session
with Session() as session:
response = session.get("https://httpbin.org/get")
print(response.json)
# Session automatically closed when exiting the context
httpx-like Interface
If you're familiar with httpx, you'll find httpz very similar to use:
# httpx
import httpx
with httpx.Client() as client:
response = client.get("https://httpbin.org/get")
print(response.json())
# httpz
import httpz
with httpz.Session() as session:
response = session.get("https://httpbin.org/get")
print(response.json)
Building from Source
If you want to build the library from source:
git clone https://github.com/username/httpz
cd httpz
make
python -m pip install -e .
License
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file httpz_ja3-0.1.0.tar.gz.
File metadata
- Download URL: httpz_ja3-0.1.0.tar.gz
- Upload date:
- Size: 3.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.0rc2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8055598da892b3368990d1764ee29226fda01ca19003a285ffdbeddf893b4feb
|
|
| MD5 |
e630bf76106b87b4198e114bbaaf53b7
|
|
| BLAKE2b-256 |
7602b3c84f474d86e3f3ec11965d53c253efceabd8fe3d184787ec5df0e37ef7
|
File details
Details for the file httpz_ja3-0.1.0-py3-none-any.whl.
File metadata
- Download URL: httpz_ja3-0.1.0-py3-none-any.whl
- Upload date:
- Size: 3.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.0rc2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad695cfc540e082357938e82d51c84ba48a10243a144606533165ba774075919
|
|
| MD5 |
1d07e3aca5f3ddafc94bae59b2a2f8e6
|
|
| BLAKE2b-256 |
b39783f420c15124dcb3dcf3761e7629f8baa4a28501177e70dedc6e0a407326
|