cloudevil 1.0.4__tar.gz → 1.0.6__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.
- cloudevil-1.0.6/PKG-INFO +109 -0
- cloudevil-1.0.6/README.md +87 -0
- {cloudevil-1.0.4 → cloudevil-1.0.6}/cloudevil/__main__.py +4 -1
- cloudevil-1.0.6/cloudevil/cloudevil_core.cpython-314-aarch64-linux-android.so +0 -0
- cloudevil-1.0.6/cloudevil.egg-info/PKG-INFO +109 -0
- {cloudevil-1.0.4 → cloudevil-1.0.6}/setup.py +1 -1
- cloudevil-1.0.4/PKG-INFO +0 -84
- cloudevil-1.0.4/README.md +0 -62
- cloudevil-1.0.4/cloudevil/cloudevil_core.cpython-314-aarch64-linux-android.so +0 -0
- cloudevil-1.0.4/cloudevil.egg-info/PKG-INFO +0 -84
- {cloudevil-1.0.4 → cloudevil-1.0.6}/MANIFEST.in +0 -0
- {cloudevil-1.0.4 → cloudevil-1.0.6}/cloudevil/__init__.py +0 -0
- {cloudevil-1.0.4 → cloudevil-1.0.6}/cloudevil.egg-info/SOURCES.txt +0 -0
- {cloudevil-1.0.4 → cloudevil-1.0.6}/cloudevil.egg-info/dependency_links.txt +0 -0
- {cloudevil-1.0.4 → cloudevil-1.0.6}/cloudevil.egg-info/entry_points.txt +0 -0
- {cloudevil-1.0.4 → cloudevil-1.0.6}/cloudevil.egg-info/not-zip-safe +0 -0
- {cloudevil-1.0.4 → cloudevil-1.0.6}/cloudevil.egg-info/requires.txt +0 -0
- {cloudevil-1.0.4 → cloudevil-1.0.6}/cloudevil.egg-info/top_level.txt +0 -0
- {cloudevil-1.0.4 → cloudevil-1.0.6}/pyproject.toml +0 -0
- {cloudevil-1.0.4 → cloudevil-1.0.6}/setup.cfg +0 -0
cloudevil-1.0.6/PKG-INFO
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: cloudevil
|
|
3
|
+
Version: 1.0.6
|
|
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 و hCaptcha.
|
|
26
|
+
|
|
27
|
+
## التثبيت
|
|
28
|
+
|
|
29
|
+
pip install cloudevil
|
|
30
|
+
|
|
31
|
+
## Turnstile
|
|
32
|
+
|
|
33
|
+
import cloudevil
|
|
34
|
+
|
|
35
|
+
r = cloudevil.get_token(url="https://example.com/login")
|
|
36
|
+
print(r["data"]["Token"])
|
|
37
|
+
|
|
38
|
+
مع مفتاح الموقع:
|
|
39
|
+
|
|
40
|
+
import cloudevil
|
|
41
|
+
|
|
42
|
+
r = cloudevil.get_token(sitekey="0x4AAAAAAA...", url="https://example.com/login")
|
|
43
|
+
print(r["data"]["Token"])
|
|
44
|
+
|
|
45
|
+
غير متزامن:
|
|
46
|
+
|
|
47
|
+
import asyncio
|
|
48
|
+
import cloudevil
|
|
49
|
+
|
|
50
|
+
async def main():
|
|
51
|
+
r = await cloudevil.get_token_async(url="https://example.com/login")
|
|
52
|
+
print(r["data"]["Token"])
|
|
53
|
+
|
|
54
|
+
asyncio.run(main())
|
|
55
|
+
|
|
56
|
+
## hCaptcha
|
|
57
|
+
|
|
58
|
+
import cloudevil
|
|
59
|
+
|
|
60
|
+
r = cloudevil.get_htoken(url="https://example.com/signup")
|
|
61
|
+
print(r["data"]["Token"])
|
|
62
|
+
|
|
63
|
+
غير متزامن:
|
|
64
|
+
|
|
65
|
+
import asyncio
|
|
66
|
+
import cloudevil
|
|
67
|
+
|
|
68
|
+
async def main():
|
|
69
|
+
r = await cloudevil.get_htoken_async(url="https://example.com/signup")
|
|
70
|
+
print(r["data"]["Token"])
|
|
71
|
+
|
|
72
|
+
asyncio.run(main())
|
|
73
|
+
|
|
74
|
+
## استخراج مفتاح الموقع
|
|
75
|
+
|
|
76
|
+
import cloudevil
|
|
77
|
+
|
|
78
|
+
sitekey, err = cloudevil.extract_sitekey("https://example.com/signup")
|
|
79
|
+
print(sitekey)
|
|
80
|
+
|
|
81
|
+
## الحالة
|
|
82
|
+
|
|
83
|
+
import cloudevil
|
|
84
|
+
|
|
85
|
+
print(cloudevil.status())
|
|
86
|
+
|
|
87
|
+
## CLI
|
|
88
|
+
|
|
89
|
+
python -m cloudevil --url https://example.com/login
|
|
90
|
+
|
|
91
|
+
python -m cloudevil --url https://example.com/login --sitekey 0x4AAAAAAA...
|
|
92
|
+
|
|
93
|
+
python -m cloudevil --url https://example.com/signup --kind hcaptcha
|
|
94
|
+
|
|
95
|
+
python -m cloudevil --url https://example.com/login --headless
|
|
96
|
+
|
|
97
|
+
python -m cloudevil doctor
|
|
98
|
+
|
|
99
|
+
## شكل الناتج
|
|
100
|
+
|
|
101
|
+
{
|
|
102
|
+
"data": {
|
|
103
|
+
"dev": "Devil",
|
|
104
|
+
"Token": "...",
|
|
105
|
+
"Channel": "https://t.me/A_9_A_6",
|
|
106
|
+
"Private": "https://t.me/iKingNow",
|
|
107
|
+
"url": "https://example.com/login"
|
|
108
|
+
}
|
|
109
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# cloudevil
|
|
2
|
+
|
|
3
|
+
مكتبة بايثون لجلب توكن Cloudflare Turnstile و hCaptcha.
|
|
4
|
+
|
|
5
|
+
## التثبيت
|
|
6
|
+
|
|
7
|
+
pip install cloudevil
|
|
8
|
+
|
|
9
|
+
## Turnstile
|
|
10
|
+
|
|
11
|
+
import cloudevil
|
|
12
|
+
|
|
13
|
+
r = cloudevil.get_token(url="https://example.com/login")
|
|
14
|
+
print(r["data"]["Token"])
|
|
15
|
+
|
|
16
|
+
مع مفتاح الموقع:
|
|
17
|
+
|
|
18
|
+
import cloudevil
|
|
19
|
+
|
|
20
|
+
r = cloudevil.get_token(sitekey="0x4AAAAAAA...", url="https://example.com/login")
|
|
21
|
+
print(r["data"]["Token"])
|
|
22
|
+
|
|
23
|
+
غير متزامن:
|
|
24
|
+
|
|
25
|
+
import asyncio
|
|
26
|
+
import cloudevil
|
|
27
|
+
|
|
28
|
+
async def main():
|
|
29
|
+
r = await cloudevil.get_token_async(url="https://example.com/login")
|
|
30
|
+
print(r["data"]["Token"])
|
|
31
|
+
|
|
32
|
+
asyncio.run(main())
|
|
33
|
+
|
|
34
|
+
## hCaptcha
|
|
35
|
+
|
|
36
|
+
import cloudevil
|
|
37
|
+
|
|
38
|
+
r = cloudevil.get_htoken(url="https://example.com/signup")
|
|
39
|
+
print(r["data"]["Token"])
|
|
40
|
+
|
|
41
|
+
غير متزامن:
|
|
42
|
+
|
|
43
|
+
import asyncio
|
|
44
|
+
import cloudevil
|
|
45
|
+
|
|
46
|
+
async def main():
|
|
47
|
+
r = await cloudevil.get_htoken_async(url="https://example.com/signup")
|
|
48
|
+
print(r["data"]["Token"])
|
|
49
|
+
|
|
50
|
+
asyncio.run(main())
|
|
51
|
+
|
|
52
|
+
## استخراج مفتاح الموقع
|
|
53
|
+
|
|
54
|
+
import cloudevil
|
|
55
|
+
|
|
56
|
+
sitekey, err = cloudevil.extract_sitekey("https://example.com/signup")
|
|
57
|
+
print(sitekey)
|
|
58
|
+
|
|
59
|
+
## الحالة
|
|
60
|
+
|
|
61
|
+
import cloudevil
|
|
62
|
+
|
|
63
|
+
print(cloudevil.status())
|
|
64
|
+
|
|
65
|
+
## CLI
|
|
66
|
+
|
|
67
|
+
python -m cloudevil --url https://example.com/login
|
|
68
|
+
|
|
69
|
+
python -m cloudevil --url https://example.com/login --sitekey 0x4AAAAAAA...
|
|
70
|
+
|
|
71
|
+
python -m cloudevil --url https://example.com/signup --kind hcaptcha
|
|
72
|
+
|
|
73
|
+
python -m cloudevil --url https://example.com/login --headless
|
|
74
|
+
|
|
75
|
+
python -m cloudevil doctor
|
|
76
|
+
|
|
77
|
+
## شكل الناتج
|
|
78
|
+
|
|
79
|
+
{
|
|
80
|
+
"data": {
|
|
81
|
+
"dev": "Devil",
|
|
82
|
+
"Token": "...",
|
|
83
|
+
"Channel": "https://t.me/A_9_A_6",
|
|
84
|
+
"Private": "https://t.me/iKingNow",
|
|
85
|
+
"url": "https://example.com/login"
|
|
86
|
+
}
|
|
87
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: cloudevil
|
|
3
|
+
Version: 1.0.6
|
|
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 و hCaptcha.
|
|
26
|
+
|
|
27
|
+
## التثبيت
|
|
28
|
+
|
|
29
|
+
pip install cloudevil
|
|
30
|
+
|
|
31
|
+
## Turnstile
|
|
32
|
+
|
|
33
|
+
import cloudevil
|
|
34
|
+
|
|
35
|
+
r = cloudevil.get_token(url="https://example.com/login")
|
|
36
|
+
print(r["data"]["Token"])
|
|
37
|
+
|
|
38
|
+
مع مفتاح الموقع:
|
|
39
|
+
|
|
40
|
+
import cloudevil
|
|
41
|
+
|
|
42
|
+
r = cloudevil.get_token(sitekey="0x4AAAAAAA...", url="https://example.com/login")
|
|
43
|
+
print(r["data"]["Token"])
|
|
44
|
+
|
|
45
|
+
غير متزامن:
|
|
46
|
+
|
|
47
|
+
import asyncio
|
|
48
|
+
import cloudevil
|
|
49
|
+
|
|
50
|
+
async def main():
|
|
51
|
+
r = await cloudevil.get_token_async(url="https://example.com/login")
|
|
52
|
+
print(r["data"]["Token"])
|
|
53
|
+
|
|
54
|
+
asyncio.run(main())
|
|
55
|
+
|
|
56
|
+
## hCaptcha
|
|
57
|
+
|
|
58
|
+
import cloudevil
|
|
59
|
+
|
|
60
|
+
r = cloudevil.get_htoken(url="https://example.com/signup")
|
|
61
|
+
print(r["data"]["Token"])
|
|
62
|
+
|
|
63
|
+
غير متزامن:
|
|
64
|
+
|
|
65
|
+
import asyncio
|
|
66
|
+
import cloudevil
|
|
67
|
+
|
|
68
|
+
async def main():
|
|
69
|
+
r = await cloudevil.get_htoken_async(url="https://example.com/signup")
|
|
70
|
+
print(r["data"]["Token"])
|
|
71
|
+
|
|
72
|
+
asyncio.run(main())
|
|
73
|
+
|
|
74
|
+
## استخراج مفتاح الموقع
|
|
75
|
+
|
|
76
|
+
import cloudevil
|
|
77
|
+
|
|
78
|
+
sitekey, err = cloudevil.extract_sitekey("https://example.com/signup")
|
|
79
|
+
print(sitekey)
|
|
80
|
+
|
|
81
|
+
## الحالة
|
|
82
|
+
|
|
83
|
+
import cloudevil
|
|
84
|
+
|
|
85
|
+
print(cloudevil.status())
|
|
86
|
+
|
|
87
|
+
## CLI
|
|
88
|
+
|
|
89
|
+
python -m cloudevil --url https://example.com/login
|
|
90
|
+
|
|
91
|
+
python -m cloudevil --url https://example.com/login --sitekey 0x4AAAAAAA...
|
|
92
|
+
|
|
93
|
+
python -m cloudevil --url https://example.com/signup --kind hcaptcha
|
|
94
|
+
|
|
95
|
+
python -m cloudevil --url https://example.com/login --headless
|
|
96
|
+
|
|
97
|
+
python -m cloudevil doctor
|
|
98
|
+
|
|
99
|
+
## شكل الناتج
|
|
100
|
+
|
|
101
|
+
{
|
|
102
|
+
"data": {
|
|
103
|
+
"dev": "Devil",
|
|
104
|
+
"Token": "...",
|
|
105
|
+
"Channel": "https://t.me/A_9_A_6",
|
|
106
|
+
"Private": "https://t.me/iKingNow",
|
|
107
|
+
"url": "https://example.com/login"
|
|
108
|
+
}
|
|
109
|
+
}
|
|
@@ -9,7 +9,7 @@ def _read(name):
|
|
|
9
9
|
|
|
10
10
|
setup(
|
|
11
11
|
name="cloudevil",
|
|
12
|
-
version="1.0.
|
|
12
|
+
version="1.0.6",
|
|
13
13
|
description="Cloudflare Turnstile + hCaptcha token library for Termux (CPython 3.14 only).",
|
|
14
14
|
long_description=_read("README.md"),
|
|
15
15
|
long_description_content_type="text/markdown",
|
cloudevil-1.0.4/PKG-INFO
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
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
|
cloudevil-1.0.4/README.md
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
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
|
|
Binary file
|
|
@@ -1,84 +0,0 @@
|
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|