antibrow 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.
- antibrow-0.1.0/.gitignore +37 -0
- antibrow-0.1.0/BINARY-LICENSE.md +93 -0
- antibrow-0.1.0/LICENSE +29 -0
- antibrow-0.1.0/PKG-INFO +587 -0
- antibrow-0.1.0/README.md +518 -0
- antibrow-0.1.0/examples/01_basic.py +39 -0
- antibrow-0.1.0/examples/02_persistent_profile.py +40 -0
- antibrow-0.1.0/examples/03_proxy_geoip.py +49 -0
- antibrow-0.1.0/examples/04_playwright.py +49 -0
- antibrow-0.1.0/examples/05_puppeteer_style.py +63 -0
- antibrow-0.1.0/examples/06_browser_use.py +68 -0
- antibrow-0.1.0/examples/07_crawl4ai.py +55 -0
- antibrow-0.1.0/examples/08_scrapling.py +42 -0
- antibrow-0.1.0/examples/09_mcp_server.py +167 -0
- antibrow-0.1.0/examples/10_docker/Dockerfile +30 -0
- antibrow-0.1.0/examples/10_docker/scrape.py +37 -0
- antibrow-0.1.0/examples/README.md +35 -0
- antibrow-0.1.0/pyproject.toml +108 -0
- antibrow-0.1.0/src/antibrow/__init__.py +131 -0
- antibrow-0.1.0/src/antibrow/__main__.py +8 -0
- antibrow-0.1.0/src/antibrow/browser.py +654 -0
- antibrow-0.1.0/src/antibrow/cli.py +246 -0
- antibrow-0.1.0/src/antibrow/config.py +100 -0
- antibrow-0.1.0/src/antibrow/errors.py +42 -0
- antibrow-0.1.0/src/antibrow/geoip.py +253 -0
- antibrow-0.1.0/src/antibrow/kernel.py +532 -0
- antibrow-0.1.0/src/antibrow/launcher.py +259 -0
- antibrow-0.1.0/src/antibrow/license.py +300 -0
- antibrow-0.1.0/src/antibrow/persona.py +335 -0
- antibrow-0.1.0/src/antibrow/proxy.py +201 -0
- antibrow-0.1.0/src/antibrow/py.typed +0 -0
- antibrow-0.1.0/tests/e2e_smoke.py +99 -0
- antibrow-0.1.0/tests/test_cli.py +97 -0
- antibrow-0.1.0/tests/test_fp_config.py +150 -0
- antibrow-0.1.0/tests/test_kernel.py +376 -0
- antibrow-0.1.0/tests/test_launch_args.py +156 -0
- antibrow-0.1.0/tests/test_license.py +284 -0
- antibrow-0.1.0/tests/test_persona.py +173 -0
- antibrow-0.1.0/tests/test_prepare_launch.py +198 -0
- antibrow-0.1.0/tests/test_proxy_and_geo.py +125 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Internal working notes - not part of the public repository.
|
|
2
|
+
NOTES.md
|
|
3
|
+
DELIVERY.md
|
|
4
|
+
|
|
5
|
+
# Python
|
|
6
|
+
__pycache__/
|
|
7
|
+
*.py[cod]
|
|
8
|
+
*.egg-info/
|
|
9
|
+
.eggs/
|
|
10
|
+
build/
|
|
11
|
+
dist/
|
|
12
|
+
.venv/
|
|
13
|
+
venv/
|
|
14
|
+
env/
|
|
15
|
+
pip-wheel-metadata/
|
|
16
|
+
|
|
17
|
+
# Tooling
|
|
18
|
+
.pytest_cache/
|
|
19
|
+
.ruff_cache/
|
|
20
|
+
.mypy_cache/
|
|
21
|
+
.coverage
|
|
22
|
+
coverage.xml
|
|
23
|
+
htmlcov/
|
|
24
|
+
.tox/
|
|
25
|
+
.nox/
|
|
26
|
+
|
|
27
|
+
# Editors / OS
|
|
28
|
+
.idea/
|
|
29
|
+
.vscode/
|
|
30
|
+
.DS_Store
|
|
31
|
+
Thumbs.db
|
|
32
|
+
|
|
33
|
+
# Local runtime artifacts
|
|
34
|
+
*.log
|
|
35
|
+
.env
|
|
36
|
+
.antibrow/
|
|
37
|
+
screenshot*.png
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# AntiBrow Browser Kernel — Binary License
|
|
2
|
+
|
|
3
|
+
**Status: DRAFT. Not yet reviewed by counsel. Subject to change before 1.0.**
|
|
4
|
+
For anything commercially load-bearing, confirm with legal@antibrow.com first.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. Two things, two licenses
|
|
9
|
+
|
|
10
|
+
This repository contains a **wrapper**. It does not contain a browser.
|
|
11
|
+
|
|
12
|
+
| | What it is | License |
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| **This repository / the `antibrow` PyPI package** | Python source: launcher, CLI, persona and fp-config serialization, examples, docs | **MIT** — see [LICENSE](LICENSE) |
|
|
15
|
+
| **The AntiBrow browser kernel** (`fp-chromium-*.zip`, `chrome.exe` / `chrome`) | A closed-source Chromium derivative with AntiBrow's fingerprint engine | **Proprietary** — this document |
|
|
16
|
+
|
|
17
|
+
The kernel is **not** in this repository, **not** in the PyPI package, and **not** in any release artifact published from this repository. It is downloaded at runtime, by the end user, from AntiBrow's own distribution endpoint (`https://download.antibrow.com/`), onto that end user's machine.
|
|
18
|
+
|
|
19
|
+
## 2. What you may do with the kernel
|
|
20
|
+
|
|
21
|
+
Subject to a valid AntiBrow license (including the free tier), you may:
|
|
22
|
+
|
|
23
|
+
- **download and run** the kernel on machines you control, or that you operate on behalf of your own organisation;
|
|
24
|
+
- use it for **internal purposes** without any additional agreement — your own automation, your own scraping, your own QA, your own account operations, whether or not that work is commercial;
|
|
25
|
+
- run it in **your own CI, containers and cloud instances**, provided each running instance is covered by your license's concurrency entitlement;
|
|
26
|
+
- **depend on this package** in software you publish, including commercial software (see §4).
|
|
27
|
+
|
|
28
|
+
No separate agreement is needed for any of the above.
|
|
29
|
+
|
|
30
|
+
## 3. What you may not do with the kernel
|
|
31
|
+
|
|
32
|
+
Without a written OEM/SaaS agreement from AntiBrow, you may **not**:
|
|
33
|
+
|
|
34
|
+
- **redistribute** the kernel binary — no mirroring, no re-hosting, no bundling it into your installer, image, wheel, npm package, extension or ZIP;
|
|
35
|
+
- **resell** it, or sell access to it, as a product or as part of one;
|
|
36
|
+
- **repackage or rebrand** it, including shipping it under another name or embedding it in another browser product;
|
|
37
|
+
- **expose it to third parties as a service** — for example, offering "browser sessions", "stealth browsing", "scraping API" or "agent browser infrastructure" to your own customers, where their traffic runs through kernels you operate;
|
|
38
|
+
- **circumvent the license check**, including patching the binary, forging or replaying license tokens, or otherwise defeating the concurrency enforcement;
|
|
39
|
+
- **reverse engineer, decompile or disassemble** the kernel, except to the extent that right cannot lawfully be excluded in your jurisdiction.
|
|
40
|
+
|
|
41
|
+
## 4. Depending on this package is not redistribution
|
|
42
|
+
|
|
43
|
+
**This is the key point, so it is stated plainly:**
|
|
44
|
+
|
|
45
|
+
> Listing `antibrow` as a dependency of your project — in `pyproject.toml`, `requirements.txt`, a lockfile, a Dockerfile, or anywhere else — **does not make you a redistributor of the browser kernel**, because you are not distributing the kernel. Your users obtain the kernel themselves, directly from AntiBrow's official distribution endpoint, at first run on their own machine, under their own AntiBrow license.
|
|
46
|
+
|
|
47
|
+
Concretely:
|
|
48
|
+
|
|
49
|
+
| Scenario | Redistribution? | Extra license needed? |
|
|
50
|
+
|---|---|---|
|
|
51
|
+
| Your open-source tool lists `antibrow` as a dependency | No | No |
|
|
52
|
+
| Your commercial CLI installs `antibrow` from PyPI at install time | No | No — each user brings their own key |
|
|
53
|
+
| Your Dockerfile runs `pip install antibrow` and the image pulls the kernel **at container start** | No | No |
|
|
54
|
+
| Your Docker image ships with the kernel **already baked in** and is published publicly | **Yes** | Yes — contact us |
|
|
55
|
+
| You mirror `fp-chromium-*.zip` to your own CDN, S3 bucket or artifact registry | **Yes** | Yes — contact us |
|
|
56
|
+
| You run a SaaS where **your customers'** automation drives kernels you host | Not redistribution, but §3 | Yes — OEM/SaaS agreement |
|
|
57
|
+
|
|
58
|
+
The line is simple: **who downloads the binary, and from where.** If it is the end user, from us, you are fine. If it is you, and you hand it onward, that is redistribution.
|
|
59
|
+
|
|
60
|
+
## 5. Internal use vs. serving third parties
|
|
61
|
+
|
|
62
|
+
- **Internal use** — the kernel is driven by you, your employees, your contractors, or your own automated systems, for your organisation's own purposes. Covered by an ordinary AntiBrow license, including the free tier. Being paid by a client for the work product (e.g. delivering scraped data) does not by itself make it third-party use.
|
|
63
|
+
- **Third-party use** — the kernel is driven, directly or indirectly, by someone who is not licensed by AntiBrow: your customers, your users, or an API you expose to them. Requires an **OEM/SaaS agreement**. Pricing is per-deployment; contact partners@antibrow.com.
|
|
64
|
+
|
|
65
|
+
If you are unsure which side you are on, the question to ask is: *if AntiBrow suspended my license today, whose product would stop working — mine, or my customers'?*
|
|
66
|
+
|
|
67
|
+
## 6. License enforcement in the binary
|
|
68
|
+
|
|
69
|
+
The kernel verifies a short-lived, Ed25519-signed license token on startup (`--fp-license`) and refuses to start without a valid one. The signing key is held only by AntiBrow's server; this package never signs tokens and contains no key material. The token also carries a concurrency cap, which the kernel enforces across processes.
|
|
70
|
+
|
|
71
|
+
This is a licensing control, not a security boundary, and it is not a warranty that any given site cannot detect the browser.
|
|
72
|
+
|
|
73
|
+
## 7. No warranty
|
|
74
|
+
|
|
75
|
+
The kernel is provided "AS IS", without warranty of any kind. AntiBrow does not warrant that it will remain undetected by any particular website, anti-bot vendor or detection technique. Nothing here is a promise about the legality of what you do with it — that is on you.
|
|
76
|
+
|
|
77
|
+
## 8. Acceptable use
|
|
78
|
+
|
|
79
|
+
The kernel may not be used for fraud, credential stuffing, unauthorised access to accounts you do not own, distribution of malware, harassment, or any activity unlawful where you operate. AntiBrow may terminate a license for such use.
|
|
80
|
+
|
|
81
|
+
## 9. Termination
|
|
82
|
+
|
|
83
|
+
This license terminates automatically if you breach §3 or §8. On termination you must stop running the kernel and delete your copies. §7 and §8 survive.
|
|
84
|
+
|
|
85
|
+
## 10. Questions
|
|
86
|
+
|
|
87
|
+
- Licensing and OEM/SaaS: **partners@antibrow.com**
|
|
88
|
+
- Legal: **legal@antibrow.com**
|
|
89
|
+
- Everything else: [antibrow.com](https://antibrow.com)
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
*Draft revision 2026-07-28. Terms may change; the version accompanying the kernel build you run is the one that applies.*
|
antibrow-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 AntiBrow
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
NOTE: This MIT license covers the contents of this repository (the Python
|
|
26
|
+
wrapper, its CLI, examples and documentation) only. The AntiBrow browser
|
|
27
|
+
kernel - the browser binary this package downloads at runtime -
|
|
28
|
+
is a separate, closed-source product under its own terms. See
|
|
29
|
+
BINARY-LICENSE.md.
|