Skip to main content

Qualys SSL Labs API in Python

Project description

ssllabs

This project implements the Qualys SSL Labs API in python. It uses API version 3. All methods are async.

System requirements

Defining the system requirements with exact versions typically is difficult. But there is a tested environment:

  • Linux
  • Python 3.7.9
  • pip 20.3.3
  • dacite 1.6.0
  • httpx 0.16.1

Other versions and even other operating systems might work. Feel free to tell us about your experience. If you want to run our unit tests, you also need:

  • pytest 4.5.0
  • pytest-asyncio 0.14.0
  • pytest-mock 6.2.1
  • asynctest 0.13.0

Versioning

In our versioning we follow Semantic Versioning.

Installing for usage

The Python Package Index takes care for you. Just use pip.

pip install ssllabs

Installing for development

First, you need to get the sources.

git clone git@github.com:devolo/ssllabs.git

Then you need to take care of the requirements.

cd ssllabs
python setup.py install

If you want to run out tests, install the extra requirements and start pytest.

pip install -e .[test]
pytest

High level usage

If you want to cover on the common usage cases, you can use our high level implementations.

Analyzing a host

import asyncio

from ssllabs import Ssllabs

async def analyze():
    ssllabs = Ssllabs()
    return await ssllabs.analyze(host="devolo.de")

asyncio.run(analyze())

This will give you a Host object as dataclass. This call runs quite long as it takes time to run all tests. You probably know that from using the webinterface.

Check availability of the SSL Labs servers

import asyncio

from ssllabs import Ssllabs

async def availability():
    ssllabs = Ssllabs()
    return await ssllabs.availability()

asyncio.run(availability())

This will give you True, if the servers are up and running, otherwise False. It will also report False, if you exeeded your rate limits.

Retrieve API information

import asyncio

from ssllabs import Ssllabs

async def info():
    ssllabs = Ssllabs()
    return await ssllabs.info()

asyncio.run(info())

This will give you an Info object as dataclass.

Retrieve root certificates

import asyncio

from ssllabs import Ssllabs

async def root_certs():
    ssllabs = Ssllabs()
    return await ssllabs.root_certs(trust_store=1)

asyncio.run(root_certs())

This will give you a string containing the latest root certificates used for trust validation. By default it used the certificates provided by Mozilla. You can choose a differenty store by changing trust_store to 1: Mozilla, 2: Apple MacOS, 3: Android, 4: Java or 5: Windows.

Retrieve known status codes

import asyncio

from ssllabs import Ssllabs

async def status_codes():
    ssllabs = Ssllabs()
    return await ssllabs.status_codes()

asyncio.run(status_codes())

This will give you a StatusCodes object as dataclass.

Low level usage

If the high level methods do not match your use case, you can access each API call.

import asyncio

from ssllabs.api import Endpoint

async def get_grade():
    api = Endpoint()
    endpoint = await api.get(host="devolo.de", s="195.201.179.93")
    return endpoint.grade

Classes are called like the API call without the leading get. The get method will query the API. It will take the parameters like in the documentation and return a dataclass representing the object, the API describes. One exception in the naming: the getEndpointData call is implemented in the Endpoint class to be able to better distinguish it from its EndpointData result object.

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

ssllabs-0.1.0.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

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

ssllabs-0.1.0-py3-none-any.whl (3.6 kB view details)

Uploaded Python 3

File details

Details for the file ssllabs-0.1.0.tar.gz.

File metadata

  • Download URL: ssllabs-0.1.0.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.7.9

File hashes

Hashes for ssllabs-0.1.0.tar.gz
Algorithm Hash digest
SHA256 21f4c5ae9318480c2f1a07713897fb47741130445d9196b1d323d88c783d7a80
MD5 1a588d972efe6a47e50ec51277b88ed6
BLAKE2b-256 400a4f038b885215711b834e48b71d27ac80da4b65cbae53d3d7a30f85f58b3a

See more details on using hashes here.

File details

Details for the file ssllabs-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: ssllabs-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 3.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.7.9

File hashes

Hashes for ssllabs-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f3f916054a8f10bc8b120e1bc933234a03ebbc7f62ee2f7d2ed353877e727b5e
MD5 310fa69f43e4ecc466b2f1c713186987
BLAKE2b-256 466b816769b0c9b19fa04306442c1990130f5e78f28492a3c5bffb48b9acced2

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