Skeleton Key — an HTTP access-resilience / locksmith library for Python: it presents an authentic browser TLS fingerprint and ships a portable, declarative registry of access-walls and the ranked ladder to open each one.
Project description
Skeleton Key
Your authentic browser key, for doors you're wrongly locked out of.
Skeleton Key is an access-resilience engine that presents an authentic browser TLS fingerprint so legitimate clients aren't misclassified as bots — with a portable, declarative registry of access-walls and the ranked ladder to open each one.
It is built for legitimate clients that are wrongly fingerprint-blocked: your own data and APIs behind a fingerprinting WAF, public data sources that misclassify non-browser clients, research, archival, and accessibility tooling.
Why
Anti-bot systems increasingly fingerprint the TLS/JA3 + HTTP/2 handshake, so a legitimate script fetching your own data or a public API gets a challenge page that a real browser never sees. Skeleton Key solves this honestly: it speaks an authentic browser handshake via curl-impersonate (never a forged or plain-curl one — it fails loudly rather than send a fake fingerprint), rotates unlinkable identities when an IP or profile is burned, and — uniquely — ships a Sigma/YARA-style portable registry: declarative YAML that detects an access-wall and derives the ranked ladder of tools to open it.
Skeleton Key never mutates your machine to get in — no system tweaks, no installed root certs, no background daemon. It opens a door from inside the process and nothing else.
When a door genuinely cannot be opened, Skeleton Key says so. It never passes a challenge page, a stale archive, or an alternate-route copy off as the real, fresh resource. A wall it detects but cannot pick is reported as detected-but-not-solved, never silently degraded. Honesty is the feature.
Install
pip install skeleton-key
Quick start
from skeleton_key import open_door
result = open_door("https://www.cloudflare.com/cdn-cgi/trace")
print(result.opened, result.opened_by, result.resp.status_code)
This top-level open_door is the registry loop: it presents the authentic key and
walks the ranked tumbler→pick ladder against the front door. result.resp is always
the real front door — it does not rotate identity on its own or fall back to an
alternate route. For the opt-in ladder that adds identity rotation, a browser
last-resort, and labeled alternate-route shims (each stamped with source, fidelity
class, and as-of timestamp), import from skeleton_key.shims import open_door — see the
Quickstart.
Or from the command line:
python -m skeleton_key https://www.cloudflare.com/cdn-cgi/trace
Responsible use
Skeleton Key is a tool, in the same category as curl-impersonate, curl_cffi, and
FlareSolverr. TLS impersonation itself is legal; what you do with the access is
your responsibility. Be rate-limit aware, treat a site's Terms of Service and
robots.txt as a stance worth respecting, and point it at things you have a
right to reach — your own data and APIs, public data, research, and archival.
See ETHICS.md. This is not legal advice.
Status
Young project (v0.1). The portable registry format is the novel part; the content is small (a handful of tumblers and picks) and grows by contribution. Vendor challenges (e.g. Cloudflare Turnstile, DataDome) are detected but not claimed solved.
License
MIT — see 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 skeleton_key_http-0.1.0.tar.gz.
File metadata
- Download URL: skeleton_key_http-0.1.0.tar.gz
- Upload date:
- Size: 122.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0dd4006f726336b9642737fc5c7e650a9e77fc04ae5c70e1a7b18701e24bfc02
|
|
| MD5 |
ee710c2def1989a07d47ebd0ee0a566e
|
|
| BLAKE2b-256 |
b91cfa9eb6a78ec15b454537b9a1738f2dd963faf6afbfed665f3dc03de930cf
|
File details
Details for the file skeleton_key_http-0.1.0-py3-none-any.whl.
File metadata
- Download URL: skeleton_key_http-0.1.0-py3-none-any.whl
- Upload date:
- Size: 58.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e648abc4d4f8b9f989076688a1580f91fc7ecc4a97fc1411fccabfb46bfabb9e
|
|
| MD5 |
62f14246f3ef2ace30822bceb3c6115e
|
|
| BLAKE2b-256 |
03fa994e10e77b2f22252eb48cc0174fa0865a2d56c87386720c63f0cc85fb72
|