Skip to main content

Glizzy TLS

Banner

Glizzy TLS is a Python module that brings the power and flexibility of Go's TLS implementation to Python. It's designed to offer TLS (Transport Layer Security) capabilities in Python while taking advantage of the performance benefits of Go.

Table of Contents

Disclaimer

This is a first implementation of TLS in python for non supported platforms from other modules. I've quickly done it for a project I'm working on. I'll improve it by adding more features as soon as I can.

Check out the source code on GitHub

What is TLS?

Transport Layer Security (TLS) is a protocol that provides privacy and data integrity between two communicating applications. It's used for web browsers and other applications that require data to be securely exchanged over a network.

Why Glizzy TLS?

While there are existing Python libraries for TLS, they can sometimes fall short in terms of performance and compatibility. Go has a robust and performant TLS library, and by compiling Go code to a shared object (.so) file and interfacing with it using CPython's ctypes library, Glizzy TLS brings this power to Python.

Moreover, the following key points make Glizzy TLS stand out:

  • Platform Independence: Unlike other libraries that come with pre-compiled .so files, Glizzy TLS compiles the Go source code during installation. This means it can be used on any operating system without any modifications.
  • Open Source and Customizable: The Go source code for the .so file is publicly available. This means you can make any edits or customizations that you need for your specific use case.
  • Shared Memory: Glizzy TLS uses shared memory to communicate between Python and Go. This means that the data is not copied between the two languages, which can lead to significant performance improvements.
  • Shared cookies in Session Objects: Session objects can be used to share cookies between requests. This is useful for applications that require authentication.

How is it done?

The core of Glizzy TLS is the Go TLS implementation, which is compiled to a .so file during installation. This file is then loaded and interfaced with in Python using the ctypes library. This allows Python code to call the Go functions directly, offering a seamless integration between the two languages.

Installation

You can install Glizzy TLS with pip:

pip install glizzy-tls

Please note that Glizzy TLS requires Go to be installed on your system. You can download it from here.

Example Usage

Glizzy TLS is designed to be as simple as possible and follows the same structure as Python's requests library. Here's an example of a simple HTTPS request:

import glizzy_tls

response = glizzy_tls.get("https://example.com")

print(response.status_code)
print(response.text)

Session Objects

from glizzy_tls import Session

# Create a TLS session
session = Session()
response = session.get("https://tls.peet.ws/api/all")
print(response.json()['tls']['ja3'])

Custom Client Hello

from glizzy_tls import Session

# Create a TLS session
session = Session(client_hello="chrome_112")
response = session.get("https://tls.peet.ws/api/all")

# Print the response
print(response.json()['tls']['ja3'])

See the examples directory for more examples.

Supported Parameters for Session

  • client_hello: The client hello to use. Defaults to chrome_112.

Supported Parameters for request

  • method: The HTTP method to use. Defaults to GET.
  • url: The URL to request.
  • headers: A dictionary of headers to send with the request.
  • body: The body of the request.
  • cookies: A dictionary of cookies to send with the request.
  • proxy: The proxy to use. Defaults to None.
  • follow_redirects: Whether to follow redirects. Defaults to True.
  • timeout_seconds: The timeout in seconds. Defaults to 10.
  • details: Whether to return detailed information about the request. Defaults to False. Will return a RequestDetails object instead of a Response object.

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for more information.

License

Glizzy TLS is licensed under the MIT License.

Contact Me

If you have any questions, issues or just want to connect, feel free to reach out or follow me on these platforms:

Metadata

Release files for glizzy-tls 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for glizzy-tls 0.1.5
File Size Uploaded Provenance Actions
glizzy_tls-0.1.5.tar.gz 13.8 kB Without provenance Details for glizzy_tls-0.1.5.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for glizzy-tls 0.1.5
File Interpreter ABI Platform Actions
glizzy_tls-0.1.5-py3-none-any.whl Python 3 none any Details for glizzy_tls-0.1.5-py3-none-any.whl

Total release size: 27.0 kB

Release files / glizzy_tls-0.1.5.tar.gz

Download URL glizzy_tls-0.1.5.tar.gz
Size 13.8 kB
Tags Source
SHA-256 checksum
How to use checksums
ec37b9c321bf72ec4befa14294b9e989ce844d272982718ab37bdaeb334af784
BLAKE2b-256 checksum
How to use checksums
83438544eb0291c99382f208ade179338b46fe21b830c64039a292ca51079d03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.0

Release files / glizzy_tls-0.1.5-py3-none-any.whl

Download URL glizzy_tls-0.1.5-py3-none-any.whl
Size 13.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0b9f8d63ed6a39cfb1bf990d14426c4e59f0becfe4f7cd59210a68db46d96f8b
BLAKE2b-256 checksum
How to use checksums
19806b5a8e5118c977d18d717a6ca276259426c59ec478027ffef73d5364e08c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.0

Security for glizzy-tls 0.1.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page