xbrowser 0.5.10__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.
- xbrowser-0.5.10/.gitignore +4 -0
- xbrowser-0.5.10/PKG-INFO +39 -0
- xbrowser-0.5.10/README.md +1 -0
- xbrowser-0.5.10/pyproject.toml +77 -0
- xbrowser-0.5.10/xbrowser/__init__.py +55 -0
- xbrowser-0.5.10/xbrowser/__main__.py +735 -0
- xbrowser-0.5.10/xbrowser/_version.py +1 -0
- xbrowser-0.5.10/xbrowser/browser.py +1763 -0
- xbrowser-0.5.10/xbrowser/config.py +452 -0
- xbrowser-0.5.10/xbrowser/download.py +1298 -0
- xbrowser-0.5.10/xbrowser/geoip.py +372 -0
- xbrowser-0.5.10/xbrowser/human/__init__.py +3083 -0
- xbrowser-0.5.10/xbrowser/human/actionability.py +384 -0
- xbrowser-0.5.10/xbrowser/human/actionability_async.py +284 -0
- xbrowser-0.5.10/xbrowser/human/config.py +257 -0
- xbrowser-0.5.10/xbrowser/human/keyboard.py +189 -0
- xbrowser-0.5.10/xbrowser/human/keyboard_async.py +150 -0
- xbrowser-0.5.10/xbrowser/human/mouse.py +132 -0
- xbrowser-0.5.10/xbrowser/human/mouse_async.py +87 -0
- xbrowser-0.5.10/xbrowser/human/scroll.py +223 -0
- xbrowser-0.5.10/xbrowser/human/scroll_async.py +216 -0
- xbrowser-0.5.10/xbrowser/human/stealth_dom.py +917 -0
- xbrowser-0.5.10/xbrowser/license.py +637 -0
- xbrowser-0.5.10/xbrowser/widevine.py +128 -0
xbrowser-0.5.10/PKG-INFO
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: xbrowser
|
|
3
|
+
Version: 0.5.10
|
|
4
|
+
Summary: Stealth Chromium that passes every bot detection test. Drop-in Playwright replacement with source-level fingerprint patches.
|
|
5
|
+
Project-URL: Homepage, https://github.com/DevKuroX/XBrowser
|
|
6
|
+
Project-URL: Documentation, https://github.com/DevKuroX/XBrowser#readme
|
|
7
|
+
Project-URL: Repository, https://github.com/DevKuroX/XBrowser
|
|
8
|
+
Project-URL: Issues, https://github.com/DevKuroX/XBrowser/issues
|
|
9
|
+
Author-email: DevKuroX <devkurox@pm.me>
|
|
10
|
+
License-Expression: MIT
|
|
11
|
+
Keywords: ai-agent,anti-detect,antidetect,automation,bot-detection,browser,captcha,chromium,cloudflare,datadome,fingerprint,headless,playwright,puppeteer,recaptcha,scraping,stealth,turnstile,undetected,web-scraping
|
|
12
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Topic :: Internet :: WWW/HTTP :: Browsers
|
|
22
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
23
|
+
Classifier: Topic :: Software Development :: Testing
|
|
24
|
+
Requires-Python: >=3.9
|
|
25
|
+
Requires-Dist: cryptography>=41.0
|
|
26
|
+
Requires-Dist: httpx>=0.24
|
|
27
|
+
Requires-Dist: playwright>=1.40
|
|
28
|
+
Provides-Extra: dev
|
|
29
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
|
|
30
|
+
Requires-Dist: pytest>=7.0; extra == 'dev'
|
|
31
|
+
Provides-Extra: geoip
|
|
32
|
+
Requires-Dist: geoip2>=4.0; extra == 'geoip'
|
|
33
|
+
Requires-Dist: socksio>=1.0; extra == 'geoip'
|
|
34
|
+
Provides-Extra: serve
|
|
35
|
+
Requires-Dist: aiohttp>=3.9; extra == 'serve'
|
|
36
|
+
Requires-Dist: websockets>=12.0; extra == 'serve'
|
|
37
|
+
Description-Content-Type: text/markdown
|
|
38
|
+
|
|
39
|
+
# Xbrowser
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Xbrowser
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "xbrowser"
|
|
7
|
+
dynamic = ["version"]
|
|
8
|
+
description = "Stealth Chromium that passes every bot detection test. Drop-in Playwright replacement with source-level fingerprint patches."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = "MIT"
|
|
11
|
+
requires-python = ">=3.9"
|
|
12
|
+
authors = [
|
|
13
|
+
{ name = "DevKuroX", email = "devkurox@pm.me" },
|
|
14
|
+
]
|
|
15
|
+
keywords = [
|
|
16
|
+
"stealth",
|
|
17
|
+
"browser",
|
|
18
|
+
"chromium",
|
|
19
|
+
"playwright",
|
|
20
|
+
"puppeteer",
|
|
21
|
+
"scraping",
|
|
22
|
+
"web-scraping",
|
|
23
|
+
"anti-detect",
|
|
24
|
+
"antidetect",
|
|
25
|
+
"undetected",
|
|
26
|
+
"bot-detection",
|
|
27
|
+
"fingerprint",
|
|
28
|
+
"recaptcha",
|
|
29
|
+
"cloudflare",
|
|
30
|
+
"turnstile",
|
|
31
|
+
"datadome",
|
|
32
|
+
"captcha",
|
|
33
|
+
"headless",
|
|
34
|
+
"automation",
|
|
35
|
+
"ai-agent",
|
|
36
|
+
]
|
|
37
|
+
classifiers = [
|
|
38
|
+
"Development Status :: 5 - Production/Stable",
|
|
39
|
+
"Intended Audience :: Developers",
|
|
40
|
+
"License :: OSI Approved :: MIT License",
|
|
41
|
+
"Programming Language :: Python :: 3",
|
|
42
|
+
"Programming Language :: Python :: 3.9",
|
|
43
|
+
"Programming Language :: Python :: 3.10",
|
|
44
|
+
"Programming Language :: Python :: 3.11",
|
|
45
|
+
"Programming Language :: Python :: 3.12",
|
|
46
|
+
"Programming Language :: Python :: 3.13",
|
|
47
|
+
"Topic :: Internet :: WWW/HTTP :: Browsers",
|
|
48
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
49
|
+
"Topic :: Software Development :: Testing",
|
|
50
|
+
]
|
|
51
|
+
dependencies = [
|
|
52
|
+
"playwright>=1.40",
|
|
53
|
+
"httpx>=0.24",
|
|
54
|
+
"cryptography>=41.0", # verify Ed25519 signature on SHA256SUMS before trusting it
|
|
55
|
+
]
|
|
56
|
+
|
|
57
|
+
[project.optional-dependencies]
|
|
58
|
+
geoip = ["geoip2>=4.0", "socksio>=1.0"] # socksio: SOCKS5 transport for httpx
|
|
59
|
+
serve = ["aiohttp>=3.9", "websockets>=12.0"]
|
|
60
|
+
dev = ["pytest>=7.0", "pytest-asyncio>=0.23"]
|
|
61
|
+
|
|
62
|
+
[project.scripts]
|
|
63
|
+
xbrowser = "xbrowser.__main__:main"
|
|
64
|
+
|
|
65
|
+
[project.urls]
|
|
66
|
+
Homepage = "https://github.com/DevKuroX/XBrowser"
|
|
67
|
+
Documentation = "https://github.com/DevKuroX/XBrowser#readme"
|
|
68
|
+
Repository = "https://github.com/DevKuroX/XBrowser"
|
|
69
|
+
Issues = "https://github.com/DevKuroX/XBrowser/issues"
|
|
70
|
+
|
|
71
|
+
[tool.hatch.version]
|
|
72
|
+
path = "xbrowser/_version.py"
|
|
73
|
+
|
|
74
|
+
[tool.pytest.ini_options]
|
|
75
|
+
testpaths = ["tests"]
|
|
76
|
+
asyncio_mode = "auto"
|
|
77
|
+
markers = ["slow: marks tests that hit live detection sites (deselect with '-m \"not slow\"')"]
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"""xbrowser — Stealth Chromium that passes every bot detection test.
|
|
2
|
+
|
|
3
|
+
Drop-in Playwright replacement with source-level fingerprint patches.
|
|
4
|
+
|
|
5
|
+
Usage:
|
|
6
|
+
from xbrowser import launch
|
|
7
|
+
|
|
8
|
+
browser = launch()
|
|
9
|
+
page = browser.new_page()
|
|
10
|
+
page.goto("https://protected-site.com")
|
|
11
|
+
browser.close()
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from .browser import launch, launch_async, launch_context, launch_context_async, launch_persistent_context, launch_persistent_context_async, ProxySettings, build_args, maybe_resolve_geoip
|
|
15
|
+
from .config import CHROMIUM_VERSION, get_default_stealth_args
|
|
16
|
+
from .download import binary_info, check_for_update, clear_cache, ensure_binary
|
|
17
|
+
from .license import XBrowserLicenseError, LicenseInfo, validate_license
|
|
18
|
+
from ._version import __version__
|
|
19
|
+
|
|
20
|
+
# Human-like behavioral layer (optional)
|
|
21
|
+
def __getattr__(name):
|
|
22
|
+
if name == "HumanConfig":
|
|
23
|
+
from .human.config import HumanConfig
|
|
24
|
+
globals()["HumanConfig"] = HumanConfig
|
|
25
|
+
return HumanConfig
|
|
26
|
+
if name == "resolve_human_config":
|
|
27
|
+
from .human.config import resolve_config
|
|
28
|
+
globals()["resolve_human_config"] = resolve_config
|
|
29
|
+
return resolve_config
|
|
30
|
+
raise AttributeError(f"module 'xbrowser' has no attribute {name}")
|
|
31
|
+
|
|
32
|
+
__all__ = [
|
|
33
|
+
"launch",
|
|
34
|
+
"launch_async",
|
|
35
|
+
"launch_context",
|
|
36
|
+
"launch_context_async",
|
|
37
|
+
"launch_persistent_context",
|
|
38
|
+
"launch_persistent_context_async",
|
|
39
|
+
"ensure_binary",
|
|
40
|
+
"clear_cache",
|
|
41
|
+
"binary_info",
|
|
42
|
+
"check_for_update",
|
|
43
|
+
"CHROMIUM_VERSION",
|
|
44
|
+
"get_default_stealth_args",
|
|
45
|
+
"build_args",
|
|
46
|
+
"maybe_resolve_geoip",
|
|
47
|
+
"ProxySettings",
|
|
48
|
+
"validate_license",
|
|
49
|
+
"LicenseInfo",
|
|
50
|
+
"XBrowserLicenseError",
|
|
51
|
+
"HumanConfig",
|
|
52
|
+
"resolve_human_config",
|
|
53
|
+
"__version__",
|
|
54
|
+
]
|
|
55
|
+
|