hexium-browser 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. hexium_browser-0.1.0/.gitignore +26 -0
  2. hexium_browser-0.1.0/BINARY-LICENSE.md +52 -0
  3. hexium_browser-0.1.0/CHANGELOG.md +53 -0
  4. hexium_browser-0.1.0/LICENSE.md +678 -0
  5. hexium_browser-0.1.0/PKG-INFO +448 -0
  6. hexium_browser-0.1.0/README.md +410 -0
  7. hexium_browser-0.1.0/pyproject.toml +80 -0
  8. hexium_browser-0.1.0/src/hexium_browser/__init__.py +50 -0
  9. hexium_browser-0.1.0/src/hexium_browser/__main__.py +289 -0
  10. hexium_browser-0.1.0/src/hexium_browser/_version.py +1 -0
  11. hexium_browser-0.1.0/src/hexium_browser/artifacts.py +97 -0
  12. hexium_browser-0.1.0/src/hexium_browser/browser.py +1780 -0
  13. hexium_browser-0.1.0/src/hexium_browser/config.py +459 -0
  14. hexium_browser-0.1.0/src/hexium_browser/download.py +280 -0
  15. hexium_browser-0.1.0/src/hexium_browser/geoip.py +418 -0
  16. hexium_browser-0.1.0/src/hexium_browser/human/__init__.py +3231 -0
  17. hexium_browser-0.1.0/src/hexium_browser/human/actionability.py +433 -0
  18. hexium_browser-0.1.0/src/hexium_browser/human/actionability_async.py +316 -0
  19. hexium_browser-0.1.0/src/hexium_browser/human/config.py +273 -0
  20. hexium_browser-0.1.0/src/hexium_browser/human/cursor_overlay.py +188 -0
  21. hexium_browser-0.1.0/src/hexium_browser/human/keyboard.py +189 -0
  22. hexium_browser-0.1.0/src/hexium_browser/human/keyboard_async.py +150 -0
  23. hexium_browser-0.1.0/src/hexium_browser/human/mouse.py +331 -0
  24. hexium_browser-0.1.0/src/hexium_browser/human/mouse_async.py +59 -0
  25. hexium_browser-0.1.0/src/hexium_browser/human/scroll.py +205 -0
  26. hexium_browser-0.1.0/src/hexium_browser/human/scroll_async.py +202 -0
  27. hexium_browser-0.1.0/src/hexium_browser/human/stealth_dom.py +219 -0
  28. hexium_browser-0.1.0/src/hexium_browser/persona/__init__.py +40 -0
  29. hexium_browser-0.1.0/src/hexium_browser/persona/coerce.py +258 -0
  30. hexium_browser-0.1.0/src/hexium_browser/persona/data/browser-helper-file.json +1 -0
  31. hexium_browser-0.1.0/src/hexium_browser/persona/data/fingerprint-network-definition.zip +0 -0
  32. hexium_browser-0.1.0/src/hexium_browser/persona/data/header-network-definition.zip +0 -0
  33. hexium_browser-0.1.0/src/hexium_browser/persona/data/headers-order.json +164 -0
  34. hexium_browser-0.1.0/src/hexium_browser/persona/data/input-network-definition.zip +0 -0
  35. hexium_browser-0.1.0/src/hexium_browser/persona/data/unpacked/README.md +15 -0
  36. hexium_browser-0.1.0/src/hexium_browser/persona/data/windows-fonts.conf +254 -0
  37. hexium_browser-0.1.0/src/hexium_browser/persona/datapack.py +254 -0
  38. hexium_browser-0.1.0/src/hexium_browser/persona/fonts.py +116 -0
  39. hexium_browser-0.1.0/src/hexium_browser/persona/geo_overlay.py +47 -0
  40. hexium_browser-0.1.0/src/hexium_browser/persona/rewrite_ua.py +68 -0
  41. hexium_browser-0.1.0/src/hexium_browser/persona/sample.py +165 -0
  42. hexium_browser-0.1.0/src/hexium_browser/persona/sampler/NOTICE +13 -0
  43. hexium_browser-0.1.0/src/hexium_browser/persona/sampler/__init__.py +7 -0
  44. hexium_browser-0.1.0/src/hexium_browser/persona/sampler/bayes.py +298 -0
  45. hexium_browser-0.1.0/src/hexium_browser/persona/sampler/datapoints.py +27 -0
  46. hexium_browser-0.1.0/src/hexium_browser/persona/sampler/header_utils.py +48 -0
  47. hexium_browser-0.1.0/src/hexium_browser/persona/sampler/headers.py +554 -0
  48. hexium_browser-0.1.0/src/hexium_browser/persona/sampler/rows.py +369 -0
  49. hexium_browser-0.1.0/src/hexium_browser/persona/schema.py +201 -0
  50. hexium_browser-0.1.0/src/hexium_browser/persona/validate.py +152 -0
  51. hexium_browser-0.1.0/src/hexium_browser/profiles.py +178 -0
  52. hexium_browser-0.1.0/src/hexium_browser/widevine.py +128 -0
@@ -0,0 +1,26 @@
1
+ .venv/
2
+ venv/
3
+ __pycache__/
4
+ *.py[cod]
5
+ *$py.class
6
+ *.egg-info/
7
+ .eggs/
8
+ dist/
9
+ build/
10
+ .pytest_cache/
11
+ .mypy_cache/
12
+ .ruff_cache/
13
+ .coverage
14
+ htmlcov/
15
+ .tox/
16
+ .env
17
+ .env.*
18
+ !.env.example
19
+ *.pem
20
+ *.key
21
+ credentials.json
22
+ .DS_Store
23
+ *.swp
24
+ .idea/
25
+ .vscode/
26
+ *.orig
@@ -0,0 +1,52 @@
1
+ # Hexium Browser binary license
2
+
3
+ The **Hexium Browser** `chrome` binary is a modified Chromium build. It is **not** the Python package and it is **not** Google Chrome.
4
+
5
+ ## What this file covers
6
+
7
+ This license applies to prebuilt Hexium binaries (`chrome`, `chrome.exe`, `Hexium.app`) delivered via `hexium-browser fetch`, cache under `~/.hexium/hexium-v{VERSION}/`, or a local out path:
8
+
9
+ ```text
10
+ ${HEXIUM_DOWNLOAD_URL}/hexium-v{VERSION}/hexium-{platform}{ext}
11
+ $HEXIUM_OUT/hexium-v{VERSION}/hexium-{platform}{ext}
12
+ ```
13
+
14
+ Runnable binary after extract (same layout as `~/.hexium/hexium-v{VERSION}/`):
15
+
16
+ ```text
17
+ $HEXIUM_OUT/hexium-v{VERSION}/chrome
18
+ ```
19
+
20
+ Examples:
21
+
22
+ ```text
23
+ hexium-v151.0.7922.174.1/hexium-linux-x64.tar.gz
24
+ hexium-v151.0.7922.174.1/chrome
25
+ hexium-v151.0.7922.174.1/hexium-linux-arm64.tar.gz
26
+ hexium-v151.0.7922.174.1/hexium-darwin-arm64.tar.gz
27
+ hexium-v151.0.7922.174.1/hexium-darwin-x64.tar.gz
28
+ hexium-v151.0.7922.174.1/hexium-windows-x64.zip
29
+ ```
30
+
31
+ The Python wrapper (`hexium_browser`) is licensed separately under [AGPL-3.0 only](LICENSE.md).
32
+
33
+ ## Chromium
34
+
35
+ Hexium is based on Chromium. Chromium is Copyright The Chromium Authors and is available under the BSD 3-Clause License and other notices in the Chromium source tree. See:
36
+
37
+ - https://chromium.googlesource.com/chromium/src/+/HEAD/LICENSE
38
+ - https://www.chromium.org/chromium-projects/
39
+
40
+ You must retain Chromium copyright, license, and notice files shipped with the binary.
41
+
42
+ ## Not Google Chrome
43
+
44
+ Hexium Browser is **not** an official Google product. You may not use Google trademarks, the Chrome brand, or Google’s proprietary Chrome components as if this were Google Chrome. Web identity (User-Agent) matching Chrome 151 does not grant trademark rights.
45
+
46
+ ## Hexium modifications
47
+
48
+ HeadlessXLabs modifications to Chromium that ship inside the Hexium binary are licensed to you solely as part of that binary, for running Hexium Browser. Redistribution of the binary must keep this `BINARY-LICENSE.md`, Chromium notices, and must not strip corresponding source obligations that Chromium’s licenses already require.
49
+
50
+ ## No warranty
51
+
52
+ THE BINARY IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT.
@@ -0,0 +1,53 @@
1
+ # Changelog
2
+
3
+ All notable changes to Hexium Browser — wrapper and binary — are documented here.
4
+
5
+ Changes are tagged: **[wrapper]** for the Python package, **[binary]** for Chromium patches, **[docs]** for this repo’s markdown.
6
+
7
+ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Versioning is [SemVer](https://semver.org/) while this tree is **0.1.x alpha**.
8
+
9
+ ---
10
+
11
+ ## [Unreleased]
12
+
13
+ ---
14
+
15
+ ## [0.1.0] — 2026-09-13
16
+
17
+ **Alpha.** First Hexium Browser ship: Playwright `launch()` in, Google Chrome **151.0.7922.174** out. Persistent disk profiles, C++ personas, GeoIP, humanize. No JS fingerprint injectors. Python-only; [.NET](https://github.com/HeadlessXLabs/hexium-browser/issues/1), [npm](https://github.com/HeadlessXLabs/hexium-browser/issues/2), [Go](https://github.com/HeadlessXLabs/hexium-browser/issues/3), and [Rust](https://github.com/HeadlessXLabs/hexium-browser/issues/4) are tracked as What’s next.
18
+
19
+ ### [binary]
20
+
21
+ - Chromium **151.0.7922.174.1** (engine product). Web identity is four-part **151.0.7922.174** (User-Agent and UA-CH `fullVersion` / brand list). Desktop UA-CH `model` is empty.
22
+ - Named persona presets:
23
+ - **`linux-native`** — Linux default. Host GPU, fonts, screen, CPU.
24
+ - **`windows-native`** — Windows default. Host pass-through (not a sampled D3D GPU).
25
+ - **`macos-native`** — macOS default (alias `mac-native`). Host pass-through. No `macos-chrome`.
26
+ - **`linux-chrome`** — Linux Chrome 151 UA; host GPU/fonts; sampled screen/CPU/RAM.
27
+ - **`windows-chrome`** — Win32 + sampled D3D11 WebGL + Segoe pack (alias `windows-1080p`). Opt-in on Linux.
28
+ - A `*-native` name that does not match the host OS remaps to that host’s native preset.
29
+ - `--hexium-fingerprint=off` — fingerprint surface pass-through (P0 automation stealth stays on).
30
+ - Canvas LSB noise **off** unless `--hexium-noise=on`.
31
+ - GeoIP overlays (`--hexium-timezone=`, `--hexium-locale=`, `--hexium-webrtc-ip=`) apply after the named preset. Locale tags keep the region (`en-PK`); `--lang` uses a Chrome 151 language pack the binary actually ships (e.g. `en-GB` for commonwealth English).
32
+ - Windows UA-CH `platformVersion` is Chrome 151 reduced form: **10.0.0** (Win10) or **15.0.0** (Win11). Never UniversalApiContract **19.0.0**. Frozen UA still says `Windows NT 10.0` for both (stock Chrome).
33
+ - Known: Linux `windows-chrome` can show BrowserScan **WebGL exception −5%** (D3D11 name vs host pixels). Not claimed fixed. Score-max on a Linux host is `linux-native`.
34
+
35
+ ### [wrapper]
36
+
37
+ - `from hexium_browser import launch` — drop-in Playwright Chromium launch. `launch_persistent_context` only (real user-data-dir, not Incognito).
38
+ - Bare `launch()` mints `~/.hexium/profiles/hexium-session-*` and a new fingerprint. `profile="Work"` / `HEXIUM_USER_DATA_DIR` / `fingerprint="account-1"` stick.
39
+ - CLI: `hexium-browser info`, `fetch`, `profiles` (`new` / `use` / `last`).
40
+ - Auto-download linux-x64 from `https://headlessx.dev/api/download` (pin with `HEXIUM_VERSION`). `HEXIUM_BINARY_PATH` / `$HEXIUM_OUT` win when set.
41
+ - `humanize=True` by default — Bézier mouse, per-character typing, scroll. Virtual mouse pointer follows CDP moves; pass `show_cursor=False` on stealth oracles (DOM tell).
42
+ - GeoIP **on by default** (`pip install -e '.[geoip]'`). Egress IP → timezone, `navigator.languages`, WebRTC mask IP. Explicit `timezone=` / `locale=` win. Without the extra, launch continues; timezone stays sampled UTC.
43
+ - `windows-chrome` on Linux: fontconfig jail + Segoe pack (`HEXIUM_FONTS_DIR` or engine bundle). Incomplete pack warns once (`HEXIUM_SUPPRESS_FONT_WARNING=1`). Headless WebGPU flags only for that persona.
44
+ - Sampled `linux-chrome` / `windows-chrome` write `persona.json` next to the profile; natives do not.
45
+ - SOCKS5 and HTTP(S) proxies, including `user:pass@host:port`.
46
+
47
+ ### [docs]
48
+
49
+ - README quickstart, [Usage](docs/USAGE.md), [persona pages](docs/persona/README.md), CONTRIBUTING, SUPPORT, SECURITY, CLAUDE.md.
50
+ - Oracle captures (12 Sep 2026): reCAPTCHA v3 demo **0.9**, BrowserScan bot **Normal**, DABI human, sannysoft WebDriver missing.
51
+
52
+ [Unreleased]: https://github.com/HeadlessXLabs/hexium-browser/compare/v0.1.0...HEAD
53
+ [0.1.0]: https://github.com/HeadlessXLabs/hexium-browser/releases/tag/v0.1.0