httpso 0.1.1
🦄 A minimal and simple but unicorn HTTP library.
License: MIT

# httpso
🦄 A minimal and simple but unicorn HTTP library.

**httpso** allows you to send HTTP/1.1 and HTTP/2 requests extremely easily.

### Why is this library needed?

The focus of this library is on the ability to customize Ja3 fingerprints and using proxy servers when connecting to a TCP server to bypass most of DNS limitations.

### What functions does the library offer?

The answer is easy! All, but minimal and powerful 😎

### How can i use it?

The library supports all common requests types.

``` python
import json
from httpso import Session

# Session
s = Session(http_version=2,
            proxy_host="geo.iproyal.com",
            proxy_port=12321,
            proxy_username="YOUR_PROXY_USERNAME",
            proxy_password="YOUR_PROXY_PASSWORD",
            ja3_fingerprint="772,4865-4866-4867-49196-49195-52393-49200-49199-52392-49162-49161-49172-49171-157-156-53-47-49160-49170-10,0-23-65281-10-11-16-5-13-18-51-45-43-27,29-23-24-25,0")

url = "https://integx.de"

headers = {
    "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Mobile/15E148 Safari/604.1"
}

payload_data = "key=value"

payload_json = json.dumps({
    "key": "value"
})

payload_hex = ''.join(hex(ord(c))[2:] for c in "test")

print(f'GET: {s.get(url, headers, timeout=15)}')
# print(f'DELETE: {s.delete(url, timeout=5).__str__()}')
# print(f'HEAD: {s.head(url, timeout=5).__str__()}')
# print(f'TRACE: {s.trace(url, timeout=5).__str__()}')
# print(f'POST [DATA]: {s.post(url, headers, data=payload_data, timeout=5).__str__()}')
# print(f'POST [JSON]: {s.post(url, headers, json=payload_json, timeout=5).__str__()}')
# print(f'POST [HEX]: {s.post(url, headers, data=payload_hex, timeout=5).__str__()}')
# print(f'PUT: {s.put(url, headers, data=payload_data, timeout=5).__str__()}')
# print(f'PATCH: {s.post(url, headers, data=payload_data, timeout=5).__str__()}')
```

### What is the goal?

The reason for creating this library was that over time it became increasingly difficult to retrieve data from services on the World Wide Web (technical term: **scraping**) or to send this data back to the service (technical term: **reverse engineering**) and get a valid response. The reason for this was that the **ja3 fingerprints** of conventional Python libraries were statically set by the developers and were therefore easy to identify. For this simple purpose this library was created. **Only with the addition of creating the ability to change the client's fingerprint and enabling the use of proxy servers.**

### Credits

The **httpso** library is based on [tlsnet](https://github.com/torstenprivate/tlsnet), a .NET HTTP 1.1/2 client library with support for Ja3 fingerprints and proxy servers.

### Questions?

You can contact me on Discord: https://discord.gg/VaKrQ26DH3

### License

MIT

### Please note!

If you are facing the **Error 13 Permission denied** for example on macOS, pleae open a terminal and run the following command

``` shell
cd /Users/YOUR_USERNAME/Library/Python/YOUR_PYTHON_VERSION/lib/python/site-packages/httpso/c/
sudo chmod 777 tlsnet-osx-x64
```