cloudevil 1.0.4__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.

Potentially problematic release.


This version of cloudevil might be problematic. Click here for more details.

@@ -0,0 +1,2 @@
1
+ include README.md
2
+ recursive-include cloudevil *.so *.pyd
@@ -0,0 +1,84 @@
1
+ Metadata-Version: 2.4
2
+ Name: cloudevil
3
+ Version: 1.0.4
4
+ Summary: Cloudflare Turnstile + hCaptcha token library for Termux (CPython 3.14 only).
5
+ Home-page: https://t.me/A_9_A_6
6
+ Author: Devil
7
+ Classifier: Programming Language :: Python :: 3.14
8
+ Classifier: Programming Language :: Python :: 3 :: Only
9
+ Classifier: Operating System :: Android
10
+ Requires-Python: >=3.14,<3.15
11
+ Description-Content-Type: text/markdown
12
+ Requires-Dist: requests>=2.28
13
+ Requires-Dist: nodriver>=0.34
14
+ Dynamic: author
15
+ Dynamic: classifier
16
+ Dynamic: description
17
+ Dynamic: description-content-type
18
+ Dynamic: home-page
19
+ Dynamic: requires-dist
20
+ Dynamic: requires-python
21
+ Dynamic: summary
22
+
23
+ # cloudevil
24
+
25
+ Cloudflare Turnstile **and** hCaptcha token library for Termux, shipped as a
26
+ precompiled CPython **3.14** extension (aarch64-linux-android).
27
+
28
+ > This release targets **CPython 3.14 only**. Python 3.11 and 3.13 are not supported.
29
+
30
+ ## Install
31
+
32
+ pip install cloudevil
33
+
34
+ Requires `requests` and `nodriver` (auto-installed) plus Termux packages
35
+ `chromium` and `xorg-server-xvfb` (auto-installed on import on Termux).
36
+
37
+ ## Turnstile
38
+
39
+ import cloudevil
40
+ r = cloudevil.get_token(url="https://example.com/login")
41
+ print(r["data"]["Token"])
42
+
43
+ ## hCaptcha
44
+
45
+ import cloudevil
46
+ r = cloudevil.get_htoken(url="https://example.com/signup")
47
+ print(r["data"]["Token"])
48
+
49
+ The hCaptcha flow:
50
+
51
+ 1. Injects `https://js.hcaptcha.com/1/api.js?render=explicit` and renders the
52
+ widget in a small floating div.
53
+ 2. Calls `hcaptcha.execute()` to trigger passive challenges.
54
+ 3. Clicks the compact checkbox with real CDP mouse events (`Input.dispatchMouseEvent`)
55
+ at the widget rect — `(x+28, y+40)` for the checkbox.
56
+ 4. If hCaptcha opens the image-grid challenge, it is **not** spammed; you need a
57
+ solver key for interactive challenges (see below).
58
+
59
+ ### Interactive (image) hCaptcha — solver keys
60
+
61
+ Set one of:
62
+
63
+ export CAPSOLVER_KEY=...
64
+ export TWOCAPTCHA_KEY=...
65
+
66
+ Providers are appended to `CLOUDEVIL_ORDER` automatically when their key is set,
67
+ and are called with `HCaptchaTaskProxyLess` (CapSolver) / `method=hcaptcha`
68
+ (2Captcha), so interactive hCaptcha is solved server-side.
69
+
70
+ ## Env
71
+
72
+ - `CLOUDEVIL_ORDER` provider order, default `browser`
73
+ - `CLOUDEVIL_TIMEOUT` seconds, default 90
74
+ - `CLOUDEVIL_HEADLESS` 1/0
75
+ - `CLOUDEVIL_VERBOSE` 1 to print debug logs
76
+ - `CLOUDEVIL_BROWSER` explicit chromium path
77
+ - `CAPSOLVER_KEY`, `TWOCAPTCHA_KEY`
78
+
79
+ ## CLI
80
+
81
+ python -m cloudevil --url https://example.com --kind hcaptcha
82
+ python -m cloudevil doctor
83
+
84
+ Channel: https://t.me/A_9_A_6
@@ -0,0 +1,62 @@
1
+ # cloudevil
2
+
3
+ Cloudflare Turnstile **and** hCaptcha token library for Termux, shipped as a
4
+ precompiled CPython **3.14** extension (aarch64-linux-android).
5
+
6
+ > This release targets **CPython 3.14 only**. Python 3.11 and 3.13 are not supported.
7
+
8
+ ## Install
9
+
10
+ pip install cloudevil
11
+
12
+ Requires `requests` and `nodriver` (auto-installed) plus Termux packages
13
+ `chromium` and `xorg-server-xvfb` (auto-installed on import on Termux).
14
+
15
+ ## Turnstile
16
+
17
+ import cloudevil
18
+ r = cloudevil.get_token(url="https://example.com/login")
19
+ print(r["data"]["Token"])
20
+
21
+ ## hCaptcha
22
+
23
+ import cloudevil
24
+ r = cloudevil.get_htoken(url="https://example.com/signup")
25
+ print(r["data"]["Token"])
26
+
27
+ The hCaptcha flow:
28
+
29
+ 1. Injects `https://js.hcaptcha.com/1/api.js?render=explicit` and renders the
30
+ widget in a small floating div.
31
+ 2. Calls `hcaptcha.execute()` to trigger passive challenges.
32
+ 3. Clicks the compact checkbox with real CDP mouse events (`Input.dispatchMouseEvent`)
33
+ at the widget rect — `(x+28, y+40)` for the checkbox.
34
+ 4. If hCaptcha opens the image-grid challenge, it is **not** spammed; you need a
35
+ solver key for interactive challenges (see below).
36
+
37
+ ### Interactive (image) hCaptcha — solver keys
38
+
39
+ Set one of:
40
+
41
+ export CAPSOLVER_KEY=...
42
+ export TWOCAPTCHA_KEY=...
43
+
44
+ Providers are appended to `CLOUDEVIL_ORDER` automatically when their key is set,
45
+ and are called with `HCaptchaTaskProxyLess` (CapSolver) / `method=hcaptcha`
46
+ (2Captcha), so interactive hCaptcha is solved server-side.
47
+
48
+ ## Env
49
+
50
+ - `CLOUDEVIL_ORDER` provider order, default `browser`
51
+ - `CLOUDEVIL_TIMEOUT` seconds, default 90
52
+ - `CLOUDEVIL_HEADLESS` 1/0
53
+ - `CLOUDEVIL_VERBOSE` 1 to print debug logs
54
+ - `CLOUDEVIL_BROWSER` explicit chromium path
55
+ - `CAPSOLVER_KEY`, `TWOCAPTCHA_KEY`
56
+
57
+ ## CLI
58
+
59
+ python -m cloudevil --url https://example.com --kind hcaptcha
60
+ python -m cloudevil doctor
61
+
62
+ Channel: https://t.me/A_9_A_6
@@ -0,0 +1,34 @@
1
+ from .cloudevil_core import *
2
+ from .cloudevil_core import __all__, __version__, CHANNEL, DEV_NAME, PRIVATE, VERSION
3
+ from .cloudevil_core import (
4
+ ensure_dependencies, ensure_python, ensure_system,
5
+ install, status, is_termux,
6
+ get_token, get_token_sync, get_token_async,
7
+ get_htoken, get_htoken_sync, get_htoken_async,
8
+ solve, solve_sync, solve_turnstile,
9
+ extract_sitekey,
10
+ format_response,
11
+ ensure_chromium_launcher,
12
+ find_browser,
13
+ main,
14
+ )
15
+
16
+ import os as _os
17
+ import threading as _threading
18
+ import sys as _sys
19
+
20
+ # Multi-version support is gone: this wheel targets CPython 3.14 only.
21
+ # The extension lives at the package root as cloudevil_core.cpython-314-*.so
22
+ # so a plain "from .cloudevil_core import *" above already imported it.
23
+
24
+ if _os.getenv("CLOUDEVIL_NO_BOOTSTRAP", "").strip().lower() not in ("1", "true", "yes", "on"):
25
+ def _auto_bootstrap():
26
+ try:
27
+ ensure_dependencies()
28
+ except Exception:
29
+ pass
30
+ try:
31
+ _t = _threading.Thread(target=_auto_bootstrap, daemon=True)
32
+ _t.start()
33
+ except Exception:
34
+ pass
@@ -0,0 +1,4 @@
1
+ import sys
2
+ from .cloudevil_core import main
3
+ if __name__ == "__main__":
4
+ sys.exit(main())
@@ -0,0 +1,84 @@
1
+ Metadata-Version: 2.4
2
+ Name: cloudevil
3
+ Version: 1.0.4
4
+ Summary: Cloudflare Turnstile + hCaptcha token library for Termux (CPython 3.14 only).
5
+ Home-page: https://t.me/A_9_A_6
6
+ Author: Devil
7
+ Classifier: Programming Language :: Python :: 3.14
8
+ Classifier: Programming Language :: Python :: 3 :: Only
9
+ Classifier: Operating System :: Android
10
+ Requires-Python: >=3.14,<3.15
11
+ Description-Content-Type: text/markdown
12
+ Requires-Dist: requests>=2.28
13
+ Requires-Dist: nodriver>=0.34
14
+ Dynamic: author
15
+ Dynamic: classifier
16
+ Dynamic: description
17
+ Dynamic: description-content-type
18
+ Dynamic: home-page
19
+ Dynamic: requires-dist
20
+ Dynamic: requires-python
21
+ Dynamic: summary
22
+
23
+ # cloudevil
24
+
25
+ Cloudflare Turnstile **and** hCaptcha token library for Termux, shipped as a
26
+ precompiled CPython **3.14** extension (aarch64-linux-android).
27
+
28
+ > This release targets **CPython 3.14 only**. Python 3.11 and 3.13 are not supported.
29
+
30
+ ## Install
31
+
32
+ pip install cloudevil
33
+
34
+ Requires `requests` and `nodriver` (auto-installed) plus Termux packages
35
+ `chromium` and `xorg-server-xvfb` (auto-installed on import on Termux).
36
+
37
+ ## Turnstile
38
+
39
+ import cloudevil
40
+ r = cloudevil.get_token(url="https://example.com/login")
41
+ print(r["data"]["Token"])
42
+
43
+ ## hCaptcha
44
+
45
+ import cloudevil
46
+ r = cloudevil.get_htoken(url="https://example.com/signup")
47
+ print(r["data"]["Token"])
48
+
49
+ The hCaptcha flow:
50
+
51
+ 1. Injects `https://js.hcaptcha.com/1/api.js?render=explicit` and renders the
52
+ widget in a small floating div.
53
+ 2. Calls `hcaptcha.execute()` to trigger passive challenges.
54
+ 3. Clicks the compact checkbox with real CDP mouse events (`Input.dispatchMouseEvent`)
55
+ at the widget rect — `(x+28, y+40)` for the checkbox.
56
+ 4. If hCaptcha opens the image-grid challenge, it is **not** spammed; you need a
57
+ solver key for interactive challenges (see below).
58
+
59
+ ### Interactive (image) hCaptcha — solver keys
60
+
61
+ Set one of:
62
+
63
+ export CAPSOLVER_KEY=...
64
+ export TWOCAPTCHA_KEY=...
65
+
66
+ Providers are appended to `CLOUDEVIL_ORDER` automatically when their key is set,
67
+ and are called with `HCaptchaTaskProxyLess` (CapSolver) / `method=hcaptcha`
68
+ (2Captcha), so interactive hCaptcha is solved server-side.
69
+
70
+ ## Env
71
+
72
+ - `CLOUDEVIL_ORDER` provider order, default `browser`
73
+ - `CLOUDEVIL_TIMEOUT` seconds, default 90
74
+ - `CLOUDEVIL_HEADLESS` 1/0
75
+ - `CLOUDEVIL_VERBOSE` 1 to print debug logs
76
+ - `CLOUDEVIL_BROWSER` explicit chromium path
77
+ - `CAPSOLVER_KEY`, `TWOCAPTCHA_KEY`
78
+
79
+ ## CLI
80
+
81
+ python -m cloudevil --url https://example.com --kind hcaptcha
82
+ python -m cloudevil doctor
83
+
84
+ Channel: https://t.me/A_9_A_6
@@ -0,0 +1,14 @@
1
+ MANIFEST.in
2
+ README.md
3
+ pyproject.toml
4
+ setup.py
5
+ cloudevil/__init__.py
6
+ cloudevil/__main__.py
7
+ cloudevil/cloudevil_core.cpython-314-aarch64-linux-android.so
8
+ cloudevil.egg-info/PKG-INFO
9
+ cloudevil.egg-info/SOURCES.txt
10
+ cloudevil.egg-info/dependency_links.txt
11
+ cloudevil.egg-info/entry_points.txt
12
+ cloudevil.egg-info/not-zip-safe
13
+ cloudevil.egg-info/requires.txt
14
+ cloudevil.egg-info/top_level.txt
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ cloudevil = cloudevil.cloudevil_core:main
@@ -0,0 +1,2 @@
1
+ requests>=2.28
2
+ nodriver>=0.34
@@ -0,0 +1 @@
1
+ cloudevil
@@ -0,0 +1,3 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68", "wheel"]
3
+ build-backend = "setuptools.build_meta"
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,34 @@
1
+ import os
2
+ from setuptools import setup
3
+
4
+ HERE = os.path.dirname(os.path.abspath(__file__))
5
+
6
+ def _read(name):
7
+ with open(os.path.join(HERE, name), encoding="utf-8") as f:
8
+ return f.read()
9
+
10
+ setup(
11
+ name="cloudevil",
12
+ version="1.0.4",
13
+ description="Cloudflare Turnstile + hCaptcha token library for Termux (CPython 3.14 only).",
14
+ long_description=_read("README.md"),
15
+ long_description_content_type="text/markdown",
16
+ author="Devil",
17
+ url="https://t.me/A_9_A_6",
18
+ packages=["cloudevil"],
19
+ package_data={"cloudevil": ["*.so", "*.pyd"]},
20
+ include_package_data=True,
21
+ zip_safe=False,
22
+ python_requires=">=3.14,<3.15",
23
+ install_requires=["requests>=2.28", "nodriver>=0.34"],
24
+ classifiers=[
25
+ "Programming Language :: Python :: 3.14",
26
+ "Programming Language :: Python :: 3 :: Only",
27
+ "Operating System :: Android",
28
+ ],
29
+ entry_points={
30
+ "console_scripts": [
31
+ "cloudevil=cloudevil.cloudevil_core:main",
32
+ ]
33
+ },
34
+ )