A http request library that can customize JA3 or H2 fingerprints.
Project description
Ja3Requests
Ja3Requests is a http request library that can customize ja3 or h2 fingerprints.
>>> import ja3requests
>>> session = ja3requests.Session()
>>> response = session.get("http://www.baidu.com/")
>>> response
<Response [200]>
>>> response.status_code
200
>>> response.headers
{'Content-Length': '405968', 'Content-Type': 'text/html; charset=utf-8', 'Server': 'BWS/1.1', 'Vary': 'Accept-Encoding', 'X-Ua-Compatible': 'IE=Edge,chrome=1', ...}
>>> response.text
'<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="Content-Type" content="text/html;char...'
Ja3Requests currently implements only the HTTP protocol and a few methods.
Installing Ja3Requests and Supported Versions
Ja3Requests is available on PyPI:
$ python -m pip install ja3requests
Ja3Requests officially supports Python 3.7+.
How To Use
Unreasonable Request Method
Ja3Requests supports multiple request methods such as Get, Post, Put, Delete, etc.
import ja3requests
session = ja3requests.session()
# Get
session.get("http://example.com/")
# POST
session.post("http://example.com/")
...
Use The Headers Attribute
import ja3requests
headers = {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate, br",
"Connection": "keep-alive",
"Host": "example.com",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:120.0) Gecko/20100101 Firefox/120.0"
}
session = ja3requests.session()
response = session.get("http://example.com/", headers=headers)
print(response)
Use The Params Attribute
import ja3requests
session = ja3requests.session()
params = {
"page": 1,
"page_size": 100
}
# OR
# params = "page=1&page_zie=100"
# OR
# params = [("page", 1), ("page_size", 100)]
# OR
# params = (("page", 1), ("page_size", 100))
response = session.get("http://example.com/", params=params)
print(response)
Post Data
import ja3requests
session = ja3requests.session()
data = {
"username": "admin",
"password": "admin"
}
# OR (Content-Type: application/x-www-form-urlencoded)
# data = "username=admin&password=admin"
# OR
# data = [("username", "admin"), ("password": "admin")]
# OR
# data = (("username", "admin"), ("password", "admin"))
response = session.post("http://example.com/", data=data)
print(response)
Post Json
import ja3requests
session = ja3requests.session()
data = {
"username": "admin",
"password": "admin"
}
# OR
# import json
# data = json.dumps(data)
response = session.post("http://example.com/", json=data)
print(response)
Post Files
import ja3requests
session = ja3requests.session()
with open("/user/home/demo.txt", "r") as f:
response = session.post("http://example.com/", files={"field_name": f})
print(response)
# OR
# response = session.post("http://example.com/", files={"field_name": "/user/home/demo.txt"})
# multiple files
# response = session.post("http://example.com/", files={"field_name": ["/user/home/demo.txt", "/user/home/demo2.txt"]})
Use the proxies attribute
import ja3requests
session = ja3requests.session()
proxies = {
"http": "127.0.0.1:7890",
"https": "127.0.0.1:7890"
}
response = session.get("http://example.com/", proxies=proxies)
print(response)
# With Authorization information
# proxies = {
# "http": "user:password@127.0.0.1:7890",
# "https": "user:password@127.0.0.1:7890"
# }
Use the cookies attribute
import ja3requests
session = ja3requests.session()
cookies = {
"sessionId": "xxxx",
"userId": "xxxx",
}
# OR
# cookies = "sessionId=xxxx; userId=xxxx;...."
# OR
# cookies = <CookieJar()>
# Or set cookies in headers = {"Cookies": "sessionId=xxxx; userId=xxxx;...."}
response = session.get("http://example.com/", cookies=cookies)
print(response)
Allow Redirects
import ja3requests
session = ja3requests.session()
# Default allow_redirects=True
response = session.get("http://example.com/", allow_redirects=False)
print(response)
Reference
Project details
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 ja3requests-1.1.0.tar.gz.
File metadata
- Download URL: ja3requests-1.1.0.tar.gz
- Upload date:
- Size: 32.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.9.6 readme-renderer/37.3 requests/2.31.0 requests-toolbelt/0.10.1 urllib3/1.26.15 tqdm/4.65.0 importlib-metadata/6.6.0 keyring/23.13.1 rfc3986/1.5.0 colorama/0.4.6 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
308eb4af3e020b26ac153de8fd0348114b4603f04e73ebe054bdd1fb542a3810
|
|
| MD5 |
0684c8347a0b8beb84f4ecd9f2f84846
|
|
| BLAKE2b-256 |
046d8453532cd1fcedd42910fecbf515303dbf61875e09d05569e778122785a4
|
File details
Details for the file ja3requests-1.1.0-py3-none-any.whl.
File metadata
- Download URL: ja3requests-1.1.0-py3-none-any.whl
- Upload date:
- Size: 35.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.9.6 readme-renderer/37.3 requests/2.31.0 requests-toolbelt/0.10.1 urllib3/1.26.15 tqdm/4.65.0 importlib-metadata/6.6.0 keyring/23.13.1 rfc3986/1.5.0 colorama/0.4.6 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c37853ab0952dce60850154ed39a538c6831a5aec182bbb8af65a26ef1f05285
|
|
| MD5 |
d567aa689c8d90a13a4dc5750146bba4
|
|
| BLAKE2b-256 |
3dd5a5e9e1da250a33c53bd6c5baed0383a94f979b27ba2e3212d2d6b0afdac4
|