capmonstercloudclient 1.5.2__tar.gz → 2.0.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 (73) hide show
  1. {capmonstercloudclient-1.5.2/capmonstercloudclient.egg-info → capmonstercloudclient-2.0.0}/PKG-INFO +36 -7
  2. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/README.md +4 -3
  3. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/CapMonsterCloudClient.py +14 -3
  4. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/GetResultTimeouts.py +9 -0
  5. capmonstercloudclient-2.0.0/capmonstercloud_client/requests/BinanceTaskProxylessRequest.py +17 -0
  6. capmonstercloudclient-2.0.0/capmonstercloud_client/requests/BinanceTaskRequest.py +22 -0
  7. capmonstercloudclient-2.0.0/capmonstercloud_client/requests/BinanceTaskRequestBase.py +11 -0
  8. capmonstercloudclient-2.0.0/capmonstercloud_client/requests/ImpervaCustomTaskProxylessRequest.py +33 -0
  9. capmonstercloudclient-2.0.0/capmonstercloud_client/requests/ImpervaCustomTaskRequest.py +39 -0
  10. capmonstercloudclient-2.0.0/capmonstercloud_client/requests/ImpervaCustomTaskRequestBase.py +8 -0
  11. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/RecaptchaComplexImageTask.py +1 -1
  12. capmonstercloudclient-2.0.0/capmonstercloud_client/requests/RecognitionComplexImageTaskRequest.py +45 -0
  13. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/TurnstileRequestBase.py +1 -0
  14. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/__init__.py +9 -1
  15. capmonstercloudclient-2.0.0/capmonstercloud_client/version.txt +1 -0
  16. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0/capmonstercloudclient.egg-info}/PKG-INFO +36 -7
  17. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloudclient.egg-info/SOURCES.txt +7 -0
  18. capmonstercloudclient-2.0.0/capmonstercloudclient.egg-info/requires.txt +30 -0
  19. capmonstercloudclient-2.0.0/requirements.txt +18 -0
  20. capmonstercloudclient-1.5.2/capmonstercloud_client/version.txt +0 -1
  21. capmonstercloudclient-1.5.2/capmonstercloudclient.egg-info/requires.txt +0 -2
  22. capmonstercloudclient-1.5.2/requirements.txt +0 -2
  23. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/LICENSE +0 -0
  24. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/MANIFEST.in +0 -0
  25. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/__init__.py +0 -0
  26. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/captchaResult.py +0 -0
  27. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/clientOptions.py +0 -0
  28. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/exceptions.py +0 -0
  29. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requestController.py +0 -0
  30. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/AmazonWafProxylessRequest.py +0 -0
  31. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/AmazonWafRequest.py +0 -0
  32. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/AmazonWafRequestBase.py +0 -0
  33. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/BasiliskCustomTaskProxylessRequest.py +0 -0
  34. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/BasiliskCustomTaskRequest.py +0 -0
  35. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/BasiliskCustomTaskRequestBase.py +0 -0
  36. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/ComplexImageTaskBase.py +0 -0
  37. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/CustomTaskRequestBase.py +0 -0
  38. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/DataDomeCustomTaskProxylessRequest.py +0 -0
  39. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/DataDomeCustomTaskRequest.py +0 -0
  40. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/DataDomeCustomTaskRequestBase.py +0 -0
  41. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/FuncaptchaComplexImageTask.py +0 -0
  42. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/FuncaptchaProxylessRequest.py +0 -0
  43. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/FuncaptchaRequest.py +0 -0
  44. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/FuncaptchaRequestBase.py +0 -0
  45. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/GeetestProxylessRequest.py +0 -0
  46. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/GeetestRequest.py +0 -0
  47. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/GeetestRequestBase.py +0 -0
  48. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/HcaptchaComplexImageTask.py +0 -0
  49. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/HcaptchaProxylessRequest.py +0 -0
  50. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/HcaptchaRequest.py +0 -0
  51. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/HcaptchaRequestBase.py +0 -0
  52. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/ImageToTextRequest.py +0 -0
  53. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/RecaptchaV2EnterpiseRequest.py +0 -0
  54. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/RecaptchaV2EnterpriseProxylessRequest.py +0 -0
  55. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/RecaptchaV2EnterpriseRequestBase.py +0 -0
  56. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/RecaptchaV2ProxylessRequest.py +0 -0
  57. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/RecaptchaV2Request.py +0 -0
  58. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/RecaptchaV2RequestBase.py +0 -0
  59. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/RecaptchaV3ProxylessRequest.py +0 -0
  60. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/TenDiCustomTaskProxylessRequest.py +0 -0
  61. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/TenDiCustomTaskRequest.py +0 -0
  62. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/TenDiCustomTaskRequestBase.py +0 -0
  63. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/TurnstileProxylessRequest.py +0 -0
  64. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/TurnstileRequest.py +0 -0
  65. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/baseRequest.py +0 -0
  66. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/enums.py +0 -0
  67. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/requests/proxy_info.py +0 -0
  68. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloud_client/utils.py +0 -0
  69. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloudclient.egg-info/dependency_links.txt +0 -0
  70. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/capmonstercloudclient.egg-info/top_level.txt +0 -0
  71. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/pyproject.toml +0 -0
  72. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/setup.cfg +0 -0
  73. {capmonstercloudclient-1.5.2 → capmonstercloudclient-2.0.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: capmonstercloudclient
3
- Version: 1.5.2
3
+ Version: 2.0.0
4
4
  Summary: Official CapMonsterCloud Client: https://capmonster.cloud/
5
5
  Home-page: https://github.com/ZennoLab/capmonstercloud-client-python
6
6
  Author: Andrey Ilyin
@@ -33,8 +33,36 @@ Classifier: Operating System :: MacOS
33
33
  Requires-Python: >=3.6
34
34
  Description-Content-Type: text/markdown
35
35
  License-File: LICENSE
36
- Requires-Dist: aiohttp>=3.7.4
37
- Requires-Dist: pydantic==2.1.*
36
+ Requires-Dist: aiohappyeyeballs==2.4.4; python_version >= "3.9" and python_version <= "3.13"
37
+ Requires-Dist: aiohttp==3.11.10; python_version >= "3.9" and python_version <= "3.13"
38
+ Requires-Dist: aiosignal==1.3.1; python_version >= "3.9" and python_version <= "3.13"
39
+ Requires-Dist: annotated-types==0.7.0; python_version >= "3.9" and python_version <= "3.13"
40
+ Requires-Dist: async-timeout==5.0.1; python_version >= "3.9" and python_version <= "3.11"
41
+ Requires-Dist: attrs==24.2.0; python_version >= "3.9" and python_version <= "3.13"
42
+ Requires-Dist: frozenlist==1.5.0; python_version >= "3.9" and python_version <= "3.13"
43
+ Requires-Dist: idna==3.10; python_version >= "3.9" and python_version <= "3.13"
44
+ Requires-Dist: multidict==6.1.0; python_version >= "3.9" and python_version <= "3.13"
45
+ Requires-Dist: propcache==0.2.1; python_version >= "3.9" and python_version <= "3.13"
46
+ Requires-Dist: pydantic-core==2.27.1; python_version >= "3.9" and python_version <= "3.13"
47
+ Requires-Dist: pydantic==2.10.3; python_version >= "3.9" and python_version <= "3.13"
48
+ Requires-Dist: typing-extensions==4.12.2; python_version >= "3.9" and python_version <= "3.13"
49
+ Requires-Dist: yarl==1.18.3; python_version >= "3.9" and python_version <= "3.13"
50
+ Requires-Dist: aiohttp==3.7.4; python_version >= "3.6" and python_version <= "3.8"
51
+ Requires-Dist: pydantic==2.10.3; python_version >= "3.8" and python_version < "3.9"
52
+ Requires-Dist: pydantic==2.5.3; python_version >= "3.7" and python_version < "3.8"
53
+ Requires-Dist: pydantic==2.1.*; python_version < "3.7"
54
+ Dynamic: author
55
+ Dynamic: author-email
56
+ Dynamic: classifier
57
+ Dynamic: description
58
+ Dynamic: description-content-type
59
+ Dynamic: home-page
60
+ Dynamic: keywords
61
+ Dynamic: license
62
+ Dynamic: license-file
63
+ Dynamic: requires-dist
64
+ Dynamic: requires-python
65
+ Dynamic: summary
38
66
 
39
67
  # Zennolab.CapMonsterCloud.Client
40
68
 
@@ -69,8 +97,6 @@ Supported captcha recognition requests:
69
97
 
70
98
  - [GeeTestProxylessRequest](https://zenno.link/doc-geetest-en)
71
99
  - [GeeTestRequest](https://zenno.link/doc-geetest-proxy-en)
72
- - [HCaptchaProxylessRequest](https://zenno.link/doc-hcaptcha-en)
73
- - [HCaptchaRequest](https://zenno.link/doc-hcaptcha-proxy-en)
74
100
  - [ImageToTextRequest](https://zenno.link/doc-ImageToTextTask-en)
75
101
  - [RecaptchaV2ProxylessRequest](https://zenno.link/doc-recaptcha2-en)
76
102
  - [RecaptchaV2Request](https://zenno.link/doc-recaptcha2-proxy-en)
@@ -80,8 +106,11 @@ Supported captcha recognition requests:
80
106
  - [TurnstileProxylessRequest](https://zenno.link/doc-turnstile-en)
81
107
  - [TurnstileRequest](https://zenno.link/doc-turnstile-proxy-en)
82
108
  - [RecaptchaComplexImageTaskRequest](https://zenno.link/doc-complextask-rc-en)
83
- - [HcaptchaComplexImageTaskRequest](https://zenno.link/doc-complextask-hc-en)
84
109
  - [DataDomeCustomTaskRequest](https://docs.capmonster.cloud/docs/captchas/datadome)
85
110
  - [TenDiCustomTaskRequest](https://docs.capmonster.cloud/docs/captchas/tendi)
86
111
  - [BasiliskCustomTaskRequest](https://docs.capmonster.cloud/docs/captchas/Basilisk-task)
87
112
  - [AmazonWafRequest](https://docs.capmonster.cloud/docs/captchas/amazon-task)
113
+ - [BinanceTaskRequest](https://docs.capmonster.cloud/docs/captchas/binance)
114
+ - [BinanceTaskProxylessRequest](https://docs.capmonster.cloud/docs/captchas/binance)
115
+ - [ImpervaCustomTaskRequest](https://docs.capmonster.cloud/docs/captchas/incapsula)
116
+ - [ImpervaCustomTaskProxylessRequest](https://docs.capmonster.cloud/docs/captchas/incapsula)
@@ -31,8 +31,6 @@ Supported captcha recognition requests:
31
31
 
32
32
  - [GeeTestProxylessRequest](https://zenno.link/doc-geetest-en)
33
33
  - [GeeTestRequest](https://zenno.link/doc-geetest-proxy-en)
34
- - [HCaptchaProxylessRequest](https://zenno.link/doc-hcaptcha-en)
35
- - [HCaptchaRequest](https://zenno.link/doc-hcaptcha-proxy-en)
36
34
  - [ImageToTextRequest](https://zenno.link/doc-ImageToTextTask-en)
37
35
  - [RecaptchaV2ProxylessRequest](https://zenno.link/doc-recaptcha2-en)
38
36
  - [RecaptchaV2Request](https://zenno.link/doc-recaptcha2-proxy-en)
@@ -42,8 +40,11 @@ Supported captcha recognition requests:
42
40
  - [TurnstileProxylessRequest](https://zenno.link/doc-turnstile-en)
43
41
  - [TurnstileRequest](https://zenno.link/doc-turnstile-proxy-en)
44
42
  - [RecaptchaComplexImageTaskRequest](https://zenno.link/doc-complextask-rc-en)
45
- - [HcaptchaComplexImageTaskRequest](https://zenno.link/doc-complextask-hc-en)
46
43
  - [DataDomeCustomTaskRequest](https://docs.capmonster.cloud/docs/captchas/datadome)
47
44
  - [TenDiCustomTaskRequest](https://docs.capmonster.cloud/docs/captchas/tendi)
48
45
  - [BasiliskCustomTaskRequest](https://docs.capmonster.cloud/docs/captchas/Basilisk-task)
49
46
  - [AmazonWafRequest](https://docs.capmonster.cloud/docs/captchas/amazon-task)
47
+ - [BinanceTaskRequest](https://docs.capmonster.cloud/docs/captchas/binance)
48
+ - [BinanceTaskProxylessRequest](https://docs.capmonster.cloud/docs/captchas/binance)
49
+ - [ImpervaCustomTaskRequest](https://docs.capmonster.cloud/docs/captchas/incapsula)
50
+ - [ImpervaCustomTaskProxylessRequest](https://docs.capmonster.cloud/docs/captchas/incapsula)
@@ -28,7 +28,9 @@ _instance_config = (
28
28
  ((TenDiCustomTaskRequest, TenDiCustomTaskProxylessRequest), getTenDiTimeouts),
29
29
  ((BasiliskCustomTaskRequest, BasiliskCustomTaskProxylessRequest), getBasiliskTimeouts),
30
30
  ((AmazonWafRequest, AmazonWafProxylessRequest), getAmazonWafTimeouts),
31
-
31
+ ((BinanceTaskRequest, BinanceTaskProxylessRequest), getBinanceTimeouts),
32
+ ((ImpervaCustomTaskRequest, ImpervaCustomTaskProxylessRequest), getImpervaTimeouts),
33
+ ((RecognitionComplexImageTaskRequest), getCITTimeouts)
32
34
  )
33
35
 
34
36
 
@@ -77,7 +79,12 @@ class CapMonsterClient:
77
79
  RecaptchaComplexImageTaskRequest,
78
80
  FunCaptchaComplexImageTaskRequest,
79
81
  DataDomeCustomTaskProxylessRequest,
80
- DataDomeCustomTaskRequest],
82
+ DataDomeCustomTaskRequest,
83
+ BinanceTaskRequest,
84
+ BinanceTaskProxylessRequest,
85
+ ImpervaCustomTaskRequest,
86
+ ImpervaCustomTaskProxylessRequest,
87
+ RecognitionComplexImageTaskRequest],
81
88
  ) -> Dict[str, str]:
82
89
  '''
83
90
  Non-blocking method for captcha solving.
@@ -108,7 +115,11 @@ class CapMonsterClient:
108
115
  TurnstileRequest,
109
116
  HcaptchaComplexImageTaskRequest,
110
117
  RecaptchaComplexImageTaskRequest,
111
- FunCaptchaComplexImageTaskRequest],
118
+ FunCaptchaComplexImageTaskRequest,
119
+ BinanceTaskRequest,
120
+ BinanceTaskProxylessRequest,
121
+ ImpervaCustomTaskRequest,
122
+ ImpervaCustomTaskProxylessRequest],
112
123
  timeouts: GetResultTimeouts,
113
124
  ) -> Dict[str, str]:
114
125
 
@@ -43,3 +43,12 @@ def getBasiliskTimeouts() -> GetResultTimeouts:
43
43
 
44
44
  def getAmazonWafTimeouts() -> GetResultTimeouts:
45
45
  return GetResultTimeouts(1, 10, 3, 180)
46
+
47
+ def getBinanceTimeouts() -> GetResultTimeouts:
48
+ return GetResultTimeouts(1, 0, 1, 20)
49
+
50
+ def getImpervaTimeouts() -> GetResultTimeouts:
51
+ return GetResultTimeouts(1, 0, 1, 20)
52
+
53
+ def getCITTimeouts() -> GetResultTimeouts:
54
+ return GetResultTimeouts(0.35, 0, 0.2, 10)
@@ -0,0 +1,17 @@
1
+ from typing import Dict, Union
2
+
3
+ from .BinanceTaskRequestBase import BinanceTaskRequestBase
4
+
5
+
6
+ class BinanceTaskProxylessRequest(BinanceTaskRequestBase):
7
+ type: str = 'BinanceTaskProxyless'
8
+
9
+ def getTaskDict(self) -> Dict[str, Union[str, int, bool]]:
10
+ task = {}
11
+ task['type'] = self.type
12
+ task['validateId'] = self.validateId
13
+ task['websiteURL'] = self.websiteUrl
14
+ task['websiteKey'] = self.websiteKey
15
+ if self.userAgent is not None:
16
+ task['userAgent'] = self.userAgent
17
+ return task
@@ -0,0 +1,22 @@
1
+ from typing import Dict, Union
2
+ from pydantic import Field, validator
3
+
4
+ from .proxy_info import ProxyInfo
5
+ from .BinanceTaskRequestBase import BinanceTaskRequestBase
6
+
7
+ class BinanceTaskRequest(BinanceTaskRequestBase, ProxyInfo):
8
+
9
+ def getTaskDict(self) -> Dict[str, Union[str, int, bool]]:
10
+ task = {}
11
+ task['type'] = self.type
12
+ task['validateId'] = self.validateId
13
+ task['websiteURL'] = self.websiteUrl
14
+ task['websiteKey'] = self.websiteKey
15
+ task['proxyType'] = self.proxyType
16
+ task['proxyAddress'] = self.proxyAddress
17
+ task['proxyPort'] = self.proxyPort
18
+ task['proxyLogin'] = self.proxyLogin
19
+ task['proxyPassword'] = self.proxyPassword
20
+ if self.userAgent is not None:
21
+ task['userAgent'] = self.userAgent
22
+ return task
@@ -0,0 +1,11 @@
1
+ from .baseRequest import BaseRequest, Field
2
+ from typing import Optional
3
+
4
+
5
+ class BinanceTaskRequestBase(BaseRequest):
6
+
7
+ type: str = Field(default='BinanceTask')
8
+ websiteKey: str = Field()
9
+ websiteUrl: str = Field()
10
+ validateId: str = Field()
11
+ userAgent: Optional[str] = None
@@ -0,0 +1,33 @@
1
+ from typing import Dict, Union
2
+ from pydantic import Field, validator
3
+
4
+ from .ImpervaCustomTaskRequestBase import ImpervaCustomTaskRequestBase
5
+
6
+ class ImpervaCustomTaskProxylessRequest(ImpervaCustomTaskRequestBase):
7
+ metadata : Dict[str, str]
8
+
9
+ @validator('metadata')
10
+ def validate_metadata(cls, value):
11
+ if value.get('incapsulaScriptBase64') is None:
12
+ raise TypeError(f'Expect that incapsulaScriptBase64 will be defined.')
13
+ else:
14
+ if not isinstance(value.get('incapsulaScriptBase64'), str):
15
+ raise TypeError(f'Expect that incapsulaScriptBase64 will be str.')
16
+ if value.get('incapsulaSessionCookie') is None:
17
+ raise TypeError(f'Expect that incapsulaSessionCookie will be defined.')
18
+ else:
19
+ if not isinstance(value.get('incapsulaSessionCookie'), str):
20
+ raise TypeError(f'Expect that incapsulaSessionCookie will be str.')
21
+ if value.get('reese84UrlEndpoint') is not None and not isinstance(value.get('incapsulaSessionCookie'), str):
22
+ raise TypeError(f'Expect that reese84UrlEndpoint will be str.')
23
+ return value
24
+
25
+ def getTaskDict(self) -> Dict[str, Union[str, int, bool]]:
26
+ task = {}
27
+ task['type'] = self.type
28
+ task['class'] = self.captchaClass
29
+ task['websiteURL'] = self.websiteUrl
30
+ task['metadata'] = self.metadata
31
+ if self.userAgent is not None:
32
+ task['userAgent'] = self.userAgent
33
+ return task
@@ -0,0 +1,39 @@
1
+ from typing import Dict, Union
2
+ from pydantic import Field, validator
3
+
4
+ from .proxy_info import ProxyInfo
5
+ from .ImpervaCustomTaskRequestBase import ImpervaCustomTaskRequestBase
6
+
7
+ class ImpervaCustomTaskRequest(ImpervaCustomTaskRequestBase, ProxyInfo):
8
+ metadata : Dict[str, str]
9
+
10
+ @validator('metadata')
11
+ def validate_metadata(cls, value):
12
+ if value.get('incapsulaScriptBase64') is None:
13
+ raise TypeError(f'Expect that incapsulaScriptBase64 will be defined.')
14
+ else:
15
+ if not isinstance(value.get('incapsulaScriptBase64'), str):
16
+ raise TypeError(f'Expect that incapsulaScriptBase64 will be str.')
17
+ if value.get('incapsulaSessionCookie') is None:
18
+ raise TypeError(f'Expect that incapsulaSessionCookie will be defined.')
19
+ else:
20
+ if not isinstance(value.get('incapsulaSessionCookie'), str):
21
+ raise TypeError(f'Expect that incapsulaSessionCookie will be str.')
22
+ if value.get('reese84UrlEndpoint') is not None and not isinstance(value.get('incapsulaSessionCookie'), str):
23
+ raise TypeError(f'Expect that reese84UrlEndpoint will be str.')
24
+ return value
25
+
26
+ def getTaskDict(self) -> Dict[str, Union[str, int, bool]]:
27
+ task = {}
28
+ task['type'] = self.type
29
+ task['class'] = self.captchaClass
30
+ task['websiteURL'] = self.websiteUrl
31
+ task['metadata'] = self.metadata
32
+ task['proxyType'] = self.proxyType
33
+ task['proxyAddress'] = self.proxyAddress
34
+ task['proxyPort'] = self.proxyPort
35
+ task['proxyLogin'] = self.proxyLogin
36
+ task['proxyPassword'] = self.proxyPassword
37
+ if self.userAgent is not None:
38
+ task['userAgent'] = self.userAgent
39
+ return task
@@ -0,0 +1,8 @@
1
+ from typing import Dict, Union
2
+ from pydantic import Field
3
+
4
+ from .CustomTaskRequestBase import CustomTaskRequestBase
5
+
6
+ class ImpervaCustomTaskRequestBase(CustomTaskRequestBase):
7
+ type: str = Field(default='CustomTask')
8
+ captchaClass: str = Field(default='Imperva')
@@ -71,7 +71,7 @@ class RecaptchaComplexImageTaskRequest(ComplexImageTaskRequestBase):
71
71
 
72
72
  if self.websiteUrl is not None:
73
73
  task["websiteUrl"] = self.websiteUrl
74
-
74
+
75
75
  return task
76
76
 
77
77
 
@@ -0,0 +1,45 @@
1
+ from typing import Optional, List, Dict, Union
2
+ from pydantic import validator
3
+ from .ComplexImageTaskBase import ComplexImageTaskRequestBase
4
+ from ..exceptions import NumbersImagesErrors, ZeroImagesErrors, TaskNotDefinedError
5
+
6
+
7
+ class RecognitionComplexImageTaskRequest(ComplexImageTaskRequestBase):
8
+ captchaClass: str = 'recognition'
9
+ metadata: Dict[str, str]
10
+
11
+ @validator('metadata')
12
+ def validate_metadata(cls, value):
13
+ if value.get('Task') is None:
14
+ raise TaskNotDefinedError(f'Expect that Task will be defined.')
15
+ else:
16
+ if not isinstance(value.get('Task'), str):
17
+ raise TypeError(f'Expect that Task will be str.')
18
+ if not set(value.keys()).issubset(set(["Task", "TaskArgument"])):
19
+ raise TypeError(f'Allowed keys for metadata are "Task" and "TaskArgument"')
20
+ return value
21
+
22
+ @validator('imagesBase64')
23
+ def validate_images_array(cls, value):
24
+ if value is not None:
25
+ if not isinstance(value, (list, tuple)):
26
+ raise TypeError(f'Expect that type imagesBase64 array will be <list> or <tuple>, got {type(value)}')
27
+ elif not len(value):
28
+ raise ZeroImagesErrors(f'At least one image base64 expected, got {len(value)}')
29
+ # Check for each element type
30
+ contain_types = [isinstance(x, str) for x in value]
31
+ if not all(contain_types):
32
+ raise TypeError(f'Next images from imagesBase64 array are not string: {contain_types}')
33
+ else:
34
+ raise ZeroImagesErrors(f'At least one image base64 expected, got {len(value)}')
35
+ return value
36
+
37
+ def getTaskDict(self) -> Dict[str, Union[str, int, bool]]:
38
+ task = {}
39
+ task['type'] = self.taskType
40
+ task['class'] = self.captchaClass
41
+ task['imagesBase64'] = self.imagesBase64
42
+ task['metadata'] = self.metadata
43
+ if self.userAgent is not None:
44
+ task['userAgent'] = self.userAgent
45
+ return task
@@ -13,6 +13,7 @@ class TurnstileRequestBase(BaseRequest):
13
13
  userAgent: Optional[str] = Field(default=None)
14
14
  cloudflareTaskType: Optional[str] = Field(default=None)
15
15
  htmlPageBase64: Optional[str] = Field(default=None)
16
+ apiJsUrl: Optional[str] = Field(default=None)
16
17
 
17
18
  @validator('cloudflareTaskType')
18
19
  def validate_cloudflare_task(cls, value):
@@ -24,6 +24,12 @@ from .BasiliskCustomTaskRequest import BasiliskCustomTaskRequest
24
24
  from .BasiliskCustomTaskProxylessRequest import BasiliskCustomTaskProxylessRequest
25
25
  from .AmazonWafRequest import AmazonWafRequest
26
26
  from .AmazonWafProxylessRequest import AmazonWafProxylessRequest
27
+ from .BinanceTaskRequest import BinanceTaskRequest
28
+ from .BinanceTaskProxylessRequest import BinanceTaskProxylessRequest
29
+ from .ImpervaCustomTaskRequest import ImpervaCustomTaskRequest
30
+ from .ImpervaCustomTaskProxylessRequest import ImpervaCustomTaskProxylessRequest
31
+ from .RecognitionComplexImageTaskRequest import RecognitionComplexImageTaskRequest
32
+
27
33
 
28
34
  REQUESTS = ['RecaptchaV2EnterpiseRequest', 'RecaptchaV2EnterpriseProxylessRequest',
29
35
  'RecaptchaV2ProxylessRequest', 'RecaptchaV2Request', 'RecaptchaV3ProxylessRequest',
@@ -31,4 +37,6 @@ REQUESTS = ['RecaptchaV2EnterpiseRequest', 'RecaptchaV2EnterpriseProxylessReques
31
37
  'GeetestRequest', 'GeetestProxylessRequest', 'HcaptchaProxylessRequest',
32
38
  'HcaptchaRequest', 'DataDomeCustomTaskRequest', 'DataDomeCustomTaskProxylessRequest',
33
39
  'TenDiCustomTaskRequest', 'TenDiCustomTaskProxylessRequest', 'BasiliskCustomTaskRequest',
34
- 'BasiliskCustomTaskProxylessRequest', 'AmazonWafRequest', 'AmazonWafProxylessRequest']
40
+ 'BasiliskCustomTaskProxylessRequest', 'AmazonWafRequest', 'AmazonWafProxylessRequest',
41
+ 'BinanceTaskRequest', 'BinanceTaskProxylessRequest', 'ImpervaCustomTaskProxylessRequest',
42
+ 'ImpervaCustomTaskRequest', 'RecognitionComplexImageTaskRequest']
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: capmonstercloudclient
3
- Version: 1.5.2
3
+ Version: 2.0.0
4
4
  Summary: Official CapMonsterCloud Client: https://capmonster.cloud/
5
5
  Home-page: https://github.com/ZennoLab/capmonstercloud-client-python
6
6
  Author: Andrey Ilyin
@@ -33,8 +33,36 @@ Classifier: Operating System :: MacOS
33
33
  Requires-Python: >=3.6
34
34
  Description-Content-Type: text/markdown
35
35
  License-File: LICENSE
36
- Requires-Dist: aiohttp>=3.7.4
37
- Requires-Dist: pydantic==2.1.*
36
+ Requires-Dist: aiohappyeyeballs==2.4.4; python_version >= "3.9" and python_version <= "3.13"
37
+ Requires-Dist: aiohttp==3.11.10; python_version >= "3.9" and python_version <= "3.13"
38
+ Requires-Dist: aiosignal==1.3.1; python_version >= "3.9" and python_version <= "3.13"
39
+ Requires-Dist: annotated-types==0.7.0; python_version >= "3.9" and python_version <= "3.13"
40
+ Requires-Dist: async-timeout==5.0.1; python_version >= "3.9" and python_version <= "3.11"
41
+ Requires-Dist: attrs==24.2.0; python_version >= "3.9" and python_version <= "3.13"
42
+ Requires-Dist: frozenlist==1.5.0; python_version >= "3.9" and python_version <= "3.13"
43
+ Requires-Dist: idna==3.10; python_version >= "3.9" and python_version <= "3.13"
44
+ Requires-Dist: multidict==6.1.0; python_version >= "3.9" and python_version <= "3.13"
45
+ Requires-Dist: propcache==0.2.1; python_version >= "3.9" and python_version <= "3.13"
46
+ Requires-Dist: pydantic-core==2.27.1; python_version >= "3.9" and python_version <= "3.13"
47
+ Requires-Dist: pydantic==2.10.3; python_version >= "3.9" and python_version <= "3.13"
48
+ Requires-Dist: typing-extensions==4.12.2; python_version >= "3.9" and python_version <= "3.13"
49
+ Requires-Dist: yarl==1.18.3; python_version >= "3.9" and python_version <= "3.13"
50
+ Requires-Dist: aiohttp==3.7.4; python_version >= "3.6" and python_version <= "3.8"
51
+ Requires-Dist: pydantic==2.10.3; python_version >= "3.8" and python_version < "3.9"
52
+ Requires-Dist: pydantic==2.5.3; python_version >= "3.7" and python_version < "3.8"
53
+ Requires-Dist: pydantic==2.1.*; python_version < "3.7"
54
+ Dynamic: author
55
+ Dynamic: author-email
56
+ Dynamic: classifier
57
+ Dynamic: description
58
+ Dynamic: description-content-type
59
+ Dynamic: home-page
60
+ Dynamic: keywords
61
+ Dynamic: license
62
+ Dynamic: license-file
63
+ Dynamic: requires-dist
64
+ Dynamic: requires-python
65
+ Dynamic: summary
38
66
 
39
67
  # Zennolab.CapMonsterCloud.Client
40
68
 
@@ -69,8 +97,6 @@ Supported captcha recognition requests:
69
97
 
70
98
  - [GeeTestProxylessRequest](https://zenno.link/doc-geetest-en)
71
99
  - [GeeTestRequest](https://zenno.link/doc-geetest-proxy-en)
72
- - [HCaptchaProxylessRequest](https://zenno.link/doc-hcaptcha-en)
73
- - [HCaptchaRequest](https://zenno.link/doc-hcaptcha-proxy-en)
74
100
  - [ImageToTextRequest](https://zenno.link/doc-ImageToTextTask-en)
75
101
  - [RecaptchaV2ProxylessRequest](https://zenno.link/doc-recaptcha2-en)
76
102
  - [RecaptchaV2Request](https://zenno.link/doc-recaptcha2-proxy-en)
@@ -80,8 +106,11 @@ Supported captcha recognition requests:
80
106
  - [TurnstileProxylessRequest](https://zenno.link/doc-turnstile-en)
81
107
  - [TurnstileRequest](https://zenno.link/doc-turnstile-proxy-en)
82
108
  - [RecaptchaComplexImageTaskRequest](https://zenno.link/doc-complextask-rc-en)
83
- - [HcaptchaComplexImageTaskRequest](https://zenno.link/doc-complextask-hc-en)
84
109
  - [DataDomeCustomTaskRequest](https://docs.capmonster.cloud/docs/captchas/datadome)
85
110
  - [TenDiCustomTaskRequest](https://docs.capmonster.cloud/docs/captchas/tendi)
86
111
  - [BasiliskCustomTaskRequest](https://docs.capmonster.cloud/docs/captchas/Basilisk-task)
87
112
  - [AmazonWafRequest](https://docs.capmonster.cloud/docs/captchas/amazon-task)
113
+ - [BinanceTaskRequest](https://docs.capmonster.cloud/docs/captchas/binance)
114
+ - [BinanceTaskProxylessRequest](https://docs.capmonster.cloud/docs/captchas/binance)
115
+ - [ImpervaCustomTaskRequest](https://docs.capmonster.cloud/docs/captchas/incapsula)
116
+ - [ImpervaCustomTaskProxylessRequest](https://docs.capmonster.cloud/docs/captchas/incapsula)
@@ -19,6 +19,9 @@ capmonstercloud_client/requests/AmazonWafRequestBase.py
19
19
  capmonstercloud_client/requests/BasiliskCustomTaskProxylessRequest.py
20
20
  capmonstercloud_client/requests/BasiliskCustomTaskRequest.py
21
21
  capmonstercloud_client/requests/BasiliskCustomTaskRequestBase.py
22
+ capmonstercloud_client/requests/BinanceTaskProxylessRequest.py
23
+ capmonstercloud_client/requests/BinanceTaskRequest.py
24
+ capmonstercloud_client/requests/BinanceTaskRequestBase.py
22
25
  capmonstercloud_client/requests/ComplexImageTaskBase.py
23
26
  capmonstercloud_client/requests/CustomTaskRequestBase.py
24
27
  capmonstercloud_client/requests/DataDomeCustomTaskProxylessRequest.py
@@ -36,6 +39,9 @@ capmonstercloud_client/requests/HcaptchaProxylessRequest.py
36
39
  capmonstercloud_client/requests/HcaptchaRequest.py
37
40
  capmonstercloud_client/requests/HcaptchaRequestBase.py
38
41
  capmonstercloud_client/requests/ImageToTextRequest.py
42
+ capmonstercloud_client/requests/ImpervaCustomTaskProxylessRequest.py
43
+ capmonstercloud_client/requests/ImpervaCustomTaskRequest.py
44
+ capmonstercloud_client/requests/ImpervaCustomTaskRequestBase.py
39
45
  capmonstercloud_client/requests/RecaptchaComplexImageTask.py
40
46
  capmonstercloud_client/requests/RecaptchaV2EnterpiseRequest.py
41
47
  capmonstercloud_client/requests/RecaptchaV2EnterpriseProxylessRequest.py
@@ -44,6 +50,7 @@ capmonstercloud_client/requests/RecaptchaV2ProxylessRequest.py
44
50
  capmonstercloud_client/requests/RecaptchaV2Request.py
45
51
  capmonstercloud_client/requests/RecaptchaV2RequestBase.py
46
52
  capmonstercloud_client/requests/RecaptchaV3ProxylessRequest.py
53
+ capmonstercloud_client/requests/RecognitionComplexImageTaskRequest.py
47
54
  capmonstercloud_client/requests/TenDiCustomTaskProxylessRequest.py
48
55
  capmonstercloud_client/requests/TenDiCustomTaskRequest.py
49
56
  capmonstercloud_client/requests/TenDiCustomTaskRequestBase.py
@@ -0,0 +1,30 @@
1
+
2
+ [:python_version < "3.7"]
3
+ pydantic==2.1.*
4
+
5
+ [:python_version >= "3.6" and python_version <= "3.8"]
6
+ aiohttp==3.7.4
7
+
8
+ [:python_version >= "3.7" and python_version < "3.8"]
9
+ pydantic==2.5.3
10
+
11
+ [:python_version >= "3.8" and python_version < "3.9"]
12
+ pydantic==2.10.3
13
+
14
+ [:python_version >= "3.9" and python_version <= "3.11"]
15
+ async-timeout==5.0.1
16
+
17
+ [:python_version >= "3.9" and python_version <= "3.13"]
18
+ aiohappyeyeballs==2.4.4
19
+ aiohttp==3.11.10
20
+ aiosignal==1.3.1
21
+ annotated-types==0.7.0
22
+ attrs==24.2.0
23
+ frozenlist==1.5.0
24
+ idna==3.10
25
+ multidict==6.1.0
26
+ propcache==0.2.1
27
+ pydantic-core==2.27.1
28
+ pydantic==2.10.3
29
+ typing-extensions==4.12.2
30
+ yarl==1.18.3
@@ -0,0 +1,18 @@
1
+ aiohappyeyeballs==2.4.4 ; python_version >= "3.9" and python_version <= "3.13"
2
+ aiohttp==3.11.10 ; python_version >= "3.9" and python_version <= "3.13"
3
+ aiosignal==1.3.1 ; python_version >= "3.9" and python_version <= "3.13"
4
+ annotated-types==0.7.0 ; python_version >= "3.9" and python_version <= "3.13"
5
+ async-timeout==5.0.1 ; python_version >= "3.9" and python_version <= "3.11"
6
+ attrs==24.2.0 ; python_version >= "3.9" and python_version <= "3.13"
7
+ frozenlist==1.5.0 ; python_version >= "3.9" and python_version <= "3.13"
8
+ idna==3.10 ; python_version >= "3.9" and python_version <= "3.13"
9
+ multidict==6.1.0 ; python_version >= "3.9" and python_version <= "3.13"
10
+ propcache==0.2.1 ; python_version >= "3.9" and python_version <= "3.13"
11
+ pydantic-core==2.27.1 ; python_version >= "3.9" and python_version <= "3.13"
12
+ pydantic==2.10.3 ; python_version >= "3.9" and python_version <= "3.13"
13
+ typing-extensions==4.12.2 ; python_version >= "3.9" and python_version <= "3.13"
14
+ yarl==1.18.3 ; python_version >= "3.9" and python_version <= "3.13"
15
+ aiohttp==3.7.4 ; python_version >= "3.6" and python_version <= "3.8"
16
+ pydantic==2.10.3 ; python_version >= "3.8" and python_version < "3.9"
17
+ pydantic==2.5.3 ; python_version >= "3.7" and python_version < "3.8"
18
+ pydantic==2.1.* ; python_version < "3.7"
@@ -1,2 +0,0 @@
1
- aiohttp>=3.7.4
2
- pydantic==2.1.*
@@ -1,2 +0,0 @@
1
- aiohttp>=3.7.4
2
- pydantic==2.1.*