python3-capsolver 0.8__py3-none-any.whl → 0.9.2__py3-none-any.whl

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.
@@ -1 +1 @@
1
- __version__ = "0.8"
1
+ __version__ = "0.9.2"
@@ -0,0 +1,112 @@
1
+ from typing import Union
2
+
3
+ from python3_capsolver.core.base import BaseCaptcha
4
+ from python3_capsolver.core.enum import BinanceCaptchaTaskEnm
5
+ from python3_capsolver.core.serializer import CaptchaResponseSer, BinanceCaptchaTaskSer
6
+
7
+
8
+ class Binance(BaseCaptcha):
9
+ """
10
+ The class is used to work with Capsolver Imperva method.
11
+
12
+ Args:
13
+ api_key: Capsolver API key
14
+ captcha_type: Captcha type name, like ``AntiImpervaTask`` and etc.
15
+ websiteUrl: The website url
16
+ userAgent: Browser userAgent
17
+
18
+ Examples:
19
+ >>> Binance(api_key="CAI-BA9XXXXXXXXXXXXX2702E010",
20
+ ... captcha_type="BinanceCaptchaTask",
21
+ ... websiteURL="https://www.milanuncios.com/",
22
+ ... websiteKey="login",
23
+ ... validateId="3621a4fef82f4ab4a00e8b07465761c5",
24
+ ... ).captcha_handler()
25
+ CaptchaResponseSer(errorId=0,
26
+ errorCode=None,
27
+ errorDescription=None,
28
+ taskId='73bdcd28-6c77-4414-8....',
29
+ status=<ResponseStatusEnm.Ready: 'ready'>,
30
+ solution={'token': '90F9EAF...'}
31
+ )
32
+
33
+ >>> Binance(api_key="CAI-BA9XXXXXXXXXXXXX2702E010",
34
+ ... captcha_type=BinanceCaptchaTaskEnm.BinanceCaptchaTask,
35
+ ... websiteURL="https://www.milanuncios.com/",
36
+ ... websiteKey="login",
37
+ ... validateId="3621a4fef82f4ab4a00e8b07465761c5",
38
+ ... ).captcha_handler()
39
+ CaptchaResponseSer(errorId=0,
40
+ errorCode=None,
41
+ errorDescription=None,
42
+ taskId='73bdcd28-6c77-4414-8....',
43
+ status=<ResponseStatusEnm.Ready: 'ready'>,
44
+ solution={'token': '90F9EAF...'}
45
+ )
46
+
47
+ >>> await Binance(api_key="CAI-BA9650D2B9C2786B21120D512702E010",
48
+ ... captcha_type=BinanceCaptchaTaskEnm.BinanceCaptchaTask,
49
+ ... websiteURL="https://www.milanuncios.com/",
50
+ ... websiteKey="login",
51
+ ... validateId="3621a4fef82f4ab4a00e8b07465761c5",
52
+ ... ).aio_captcha_handler()
53
+ CaptchaResponseSer(errorId=0,
54
+ errorCode=None,
55
+ errorDescription=None,
56
+ taskId='73bdcd28-6c77-4414-8....',
57
+ status=<ResponseStatusEnm.Ready: 'ready'>,
58
+ solution={'token': '90F9EAF...'}
59
+ )
60
+
61
+ Returns:
62
+ CaptchaResponseSer model with full server response
63
+
64
+ Notes:
65
+ https://docs.capsolver.com/guide/captcha/BnCaptcha.html
66
+ """
67
+
68
+ def __init__(
69
+ self,
70
+ captcha_type: Union[BinanceCaptchaTaskEnm, str],
71
+ websiteURL: str,
72
+ validateId: str,
73
+ websiteKey: str = "login",
74
+ *args,
75
+ **kwargs,
76
+ ):
77
+ super().__init__(*args, **kwargs)
78
+
79
+ if captcha_type == BinanceCaptchaTaskEnm.BinanceCaptchaTask:
80
+ self.task_params = BinanceCaptchaTaskSer(**locals()).dict()
81
+ else:
82
+ raise ValueError(
83
+ f"""Invalid `captcha_type` parameter set for `{self.__class__.__name__}`,
84
+ available - {BinanceCaptchaTaskEnm.list_values()}"""
85
+ )
86
+
87
+ for key in kwargs:
88
+ self.task_params.update({key: kwargs[key]})
89
+
90
+ def captcha_handler(self) -> CaptchaResponseSer:
91
+ """
92
+ Sync solving method
93
+
94
+ Returns:
95
+ CaptchaResponseSer model with full service response
96
+
97
+ Notes:
98
+ Check class docstring for more info
99
+ """
100
+ return self._processing_captcha(create_params=self.task_params)
101
+
102
+ async def aio_captcha_handler(self) -> CaptchaResponseSer:
103
+ """
104
+ Async method for captcha solving
105
+
106
+ Returns:
107
+ CaptchaResponseSer model with full service response
108
+
109
+ Notes:
110
+ Check class docstring for more info
111
+ """
112
+ return await self._aio_processing_captcha(create_params=self.task_params)
@@ -1,4 +1,4 @@
1
- from typing import Dict, Union, Optional
1
+ from typing import Union, Optional
2
2
 
3
3
  from python3_capsolver.core.base import BaseCaptcha
4
4
  from python3_capsolver.core.enum import CloudflareTypeEnm
@@ -22,46 +22,42 @@ class Cloudflare(BaseCaptcha):
22
22
  >>> Cloudflare(api_key="CAI-1324...",
23
23
  ... captcha_type=CloudflareTypeEnm.AntiCloudflareTask,
24
24
  ... websiteURL="https://bck.websiteurl.com/registry",
25
- ... websiteKey='4ac25d',
26
- ... proxy="socks5:158.120.100.23:334:user:pass",
27
- ... metadata={'type': 'turnstile', 'acton':'login', 'cdata': '0000-1111-2222-3333-example-cdata'}
25
+ ... websiteKey='0x4AAAAAAABS7vwvV6VFfMcD',
26
+ ... proxy="socks5:158.120.100.23:334:user:pass"
28
27
  ... ).captcha_handler()
29
28
  CaptchaResponseSer(errorId=0,
30
29
  errorCode=None,
31
30
  errorDescription=None,
32
31
  taskId='73bdcd28-6c77-4414-8....',
33
32
  status=<ResponseStatusEnm.Ready: 'ready'>,
34
- solution={'gRecaptchaResponse': '44795sds...'}
33
+ solution={'token': '44795sds...'}
35
34
  )
36
35
 
37
36
  >>> Cloudflare(api_key="CAI-1324...",
38
37
  ... captcha_type=CloudflareTypeEnm.AntiCloudflareTask,
39
38
  ... websiteURL="https://bck.websiteurl.com/registry",
40
- ... proxy="socks5:158.120.100.23:334:user:pass",
41
- ... metadata={'type': 'challenge'}
42
- ... html="<your challenge html source code>",
39
+ ... proxy="socks5:158.120.100.23:334:user:pass"
43
40
  ... ).captcha_handler()
44
41
  CaptchaResponseSer(errorId=0,
45
42
  errorCode=None,
46
43
  errorDescription=None,
47
44
  taskId='73bdcd28-6c77-4414-8....',
48
45
  status=<ResponseStatusEnm.Ready: 'ready'>,
49
- solution={'gRecaptchaResponse': '44795sds...'}
46
+ solution={'token': '44795sds...'}
50
47
  )
51
48
 
52
49
  >>> await Cloudflare(api_key="CAI-1324...",
53
50
  ... captcha_type=CloudflareTypeEnm.AntiCloudflareTask,
54
51
  ... websiteURL="https://bck.websiteurl.com/registry",
55
- ... websiteKey='4ac25d',
56
- ... proxy="socks5:158.120.100.23:334:user:pass",
57
- ... metadata={'type': 'challenge', 'acton':'login', 'cdata': '0000-1111-2222-3333-example-cdata'}
52
+ ... websiteKey='0x4AAAAAAABS7vwvV6VFfMcD',
53
+ ... proxy="socks5:158.120.100.23:334:user:pass"
58
54
  ... ).aio_captcha_handler()
59
55
  CaptchaResponseSer(errorId=0,
60
56
  errorCode=None,
61
57
  errorDescription=None,
62
58
  taskId='73bdcd28-6c77-4414-8....',
63
59
  status=<ResponseStatusEnm.Ready: 'ready'>,
64
- solution={'gRecaptchaResponse': '44795sds...'}
60
+ solution={'token': '44795sds...'}
65
61
  )
66
62
 
67
63
  Returns:
@@ -76,9 +72,7 @@ class Cloudflare(BaseCaptcha):
76
72
  self,
77
73
  captcha_type: Union[CloudflareTypeEnm, str],
78
74
  websiteURL: str,
79
- metadata: Dict[str, str],
80
75
  websiteKey: Optional[str] = None,
81
- html: Optional[str] = None,
82
76
  *args,
83
77
  **kwargs,
84
78
  ):
@@ -39,8 +39,8 @@ class EndpointPostfixEnm(str, MyEnum):
39
39
  GET_BALANCE = "getBalance"
40
40
  CREATE_TASK = "createTask"
41
41
  GET_TASK_RESULT = "getTaskResult"
42
- AKAMAI_BMP_INVOKE = "/akamaibmp/invoke"
43
- AKAMAI_WEB_INVOKE = "/akamaiweb/invoke"
42
+ AKAMAI_BMP_INVOKE = "akamaibmp/invoke"
43
+ AKAMAI_WEB_INVOKE = "akamaiweb/invoke"
44
44
 
45
45
 
46
46
  class ImageToTextTaskTypeEnm(str, MyEnum):
@@ -117,6 +117,14 @@ class AntiAkamaiTaskEnm(str, MyEnum):
117
117
  AntiAkamaiWebTask = "AntiAkamaiWebTask"
118
118
 
119
119
 
120
+ class AntiImpervaTaskEnm(str, MyEnum):
121
+ AntiImpervaTask = "AntiImpervaTask"
122
+
123
+
124
+ class BinanceCaptchaTaskEnm(str, MyEnum):
125
+ BinanceCaptchaTask = "BinanceCaptchaTask"
126
+
127
+
120
128
  class ResponseStatusEnm(str, MyEnum):
121
129
  """
122
130
  Enum store results `status` field variants
@@ -1,4 +1,4 @@
1
- from typing import Any, Dict, List, Optional
1
+ from typing import Any, Dict, List, Literal, Optional
2
2
 
3
3
  from pydantic import Field, BaseModel, conint
4
4
 
@@ -20,7 +20,7 @@ class TaskSer(BaseModel):
20
20
 
21
21
 
22
22
  class RequestCreateTaskSer(PostRequestSer):
23
- appId: str = Field(APP_ID, description="AppID", const=True)
23
+ appId: Literal[APP_ID] = APP_ID
24
24
 
25
25
 
26
26
  class RequestGetTaskResultSer(PostRequestSer):
@@ -80,14 +80,14 @@ class ReCaptchaV3Ser(WebsiteDataOptionsSer):
80
80
  )
81
81
 
82
82
 
83
- class HCaptchaClassificationOptionsSer(BaseModel):
83
+ class HCaptchaClassificationOptionsSer(TaskSer):
84
84
  queries: List[str] = Field(..., description="Base64-encoded images, do not include 'data:image/***;base64,'")
85
85
  question: str = Field(
86
86
  ..., description="Question ID. Support English and Chinese, other languages please convert yourself"
87
87
  )
88
88
 
89
89
 
90
- class FunCaptchaClassificationOptionsSer(BaseModel):
90
+ class FunCaptchaClassificationOptionsSer(TaskSer):
91
91
  images: List[str] = Field(..., description="Base64-encoded images, do not include 'data:image/***;base64,'")
92
92
  question: str = Field(
93
93
  ...,
@@ -121,10 +121,7 @@ class DatadomeSliderSer(TaskSer):
121
121
 
122
122
 
123
123
  class CloudflareTurnstileSer(WebsiteDataOptionsSer):
124
- metadata: dict = Field(..., description="Extra data")
125
- html: Optional[str] = Field(
126
- None, description="You can pass in the entire html source code for the challenge directly."
127
- )
124
+ ...
128
125
 
129
126
 
130
127
  class CyberSiAraSer(WebsiteDataOptionsSer):
@@ -134,11 +131,26 @@ class CyberSiAraSer(WebsiteDataOptionsSer):
134
131
  UserAgent: str = Field(..., description="Browser userAgent, you need submit your userAgent")
135
132
 
136
133
 
137
- class AntiAkamaiBMPTaskSer(BaseModel):
134
+ class AntiAkamaiBMPTaskSer(TaskSer):
138
135
  packageName: str = Field("de.zalando.iphone", description="Package name of AkamaiBMP mobile APP")
139
136
  version: str = Field("3.2.6", description="AKAMAI BMP Version number")
140
137
  country: str = Field("US", description="AKAMAI BMP country")
141
138
 
142
139
 
143
- class AntiAkamaiWebTaskSer(BaseModel):
140
+ class AntiAkamaiWebTaskSer(TaskSer):
144
141
  url: str = Field(..., description="Browser url address")
142
+
143
+
144
+ class AntiImpervaTaskSer(TaskSer):
145
+ websiteUrl: str = Field(..., description="The website url")
146
+ userAgent: str = Field(..., description="Browser userAgent")
147
+ utmvc: bool = Field(
148
+ True, description="If cookie contains `incap_see_xxx`, `nlbi_xxx`, `visid_inap_xxx`, mean is true"
149
+ )
150
+ reese84: bool = Field(True, description="if cookie conains `reese84`, set it true")
151
+
152
+
153
+ class BinanceCaptchaTaskSer(TaskSer):
154
+ websiteURL: str = Field(..., description="Address of a webpage with Binance captcha")
155
+ websiteKey: str = Field("login", description="`bizId` always be `login`")
156
+ validateId: str = Field(..., description="`validateId` bncaptcha validateId field")
@@ -0,0 +1,120 @@
1
+ from typing import Union
2
+
3
+ from python3_capsolver.core.base import BaseCaptcha
4
+ from python3_capsolver.core.enum import AntiImpervaTaskEnm
5
+ from python3_capsolver.core.serializer import AntiImpervaTaskSer, CaptchaResponseSer
6
+
7
+
8
+ class Imperva(BaseCaptcha):
9
+ """
10
+ The class is used to work with Capsolver Imperva method.
11
+
12
+ Args:
13
+ api_key: Capsolver API key
14
+ captcha_type: Captcha type name, like ``AntiImpervaTask`` and etc.
15
+ websiteUrl: The website url
16
+ userAgent: Browser userAgent
17
+
18
+ Examples:
19
+ >>> Imperva(api_key="CAI-BA9XXXXXXXXXXXXX2702E010",
20
+ ... captcha_type="AntiImpervaTask",
21
+ ... websiteUrl="https://www.milanuncios.com/",
22
+ ... userAgent="Mozilla/5.0 (Windows ....",
23
+ ... proxy="socks5:98.181.137.83:4145",
24
+ ... utmvc=True,
25
+ ... reese84=True,
26
+ ... reeseScriptUrl="https://www.milanuncios.com/librarym.js",
27
+ ... ).captcha_handler()
28
+ CaptchaResponseSer(errorId=0,
29
+ errorCode=None,
30
+ errorDescription=None,
31
+ taskId='73bdcd28-6c77-4414-8....',
32
+ status=<ResponseStatusEnm.Ready: 'ready'>,
33
+ solution={'token': '90F9EAF...'}
34
+ )
35
+
36
+ >>> Imperva(api_key="CAI-BA9XXXXXXXXXXXXX2702E010",
37
+ ... captcha_type=AntiImpervaTaskEnm.AntiImpervaTask,
38
+ ... websiteUrl="https://www.milanuncios.com/",
39
+ ... userAgent="Mozilla/5.0 (Windows ....",
40
+ ... proxy="socks5:98.181.137.83:4145",
41
+ ... utmvc=True,
42
+ ... reese84=True,
43
+ ... reeseScriptUrl="https://www.milanuncios.com/librarym.js",
44
+ ... ).captcha_handler()
45
+ CaptchaResponseSer(errorId=0,
46
+ errorCode=None,
47
+ errorDescription=None,
48
+ taskId='73bdcd28-6c77-4414-8....',
49
+ status=<ResponseStatusEnm.Ready: 'ready'>,
50
+ solution={'token': '90F9EAF...'}
51
+ )
52
+
53
+ >>> await Imperva(api_key="CAI-BA9650D2B9C2786B21120D512702E010",
54
+ ... captcha_type=AntiImpervaTaskEnm.AntiImpervaTask,
55
+ ... websiteUrl="https://www.milanuncios.com/",
56
+ ... userAgent="Mozilla/5.0 (Windows ....",
57
+ ... proxy="socks5:98.181.137.83:4145",
58
+ ... utmvc=True,
59
+ ... reese84=True,
60
+ ... reeseScriptUrl="https://www.milanuncios.com/librarym.js",
61
+ ... ).aio_captcha_handler()
62
+ CaptchaResponseSer(errorId=0,
63
+ errorCode=None,
64
+ errorDescription=None,
65
+ taskId='73bdcd28-6c77-4414-8....',
66
+ status=<ResponseStatusEnm.Ready: 'ready'>,
67
+ solution={'token': '90F9EAF...'}
68
+ )
69
+
70
+ Returns:
71
+ CaptchaResponseSer model with full server response
72
+
73
+ Notes:
74
+ https://docs.capsolver.com/guide/antibots/imperva.html
75
+ """
76
+
77
+ def __init__(
78
+ self,
79
+ captcha_type: Union[AntiImpervaTaskEnm, str],
80
+ websiteUrl: str,
81
+ userAgent: str,
82
+ *args,
83
+ **kwargs,
84
+ ):
85
+ super().__init__(*args, **kwargs)
86
+
87
+ if captcha_type == AntiImpervaTaskEnm.AntiImpervaTask:
88
+ self.task_params = AntiImpervaTaskSer(**locals()).dict()
89
+ else:
90
+ raise ValueError(
91
+ f"""Invalid `captcha_type` parameter set for `{self.__class__.__name__}`,
92
+ available - {AntiImpervaTaskEnm.list_values()}"""
93
+ )
94
+
95
+ for key in kwargs:
96
+ self.task_params.update({key: kwargs[key]})
97
+
98
+ def captcha_handler(self) -> CaptchaResponseSer:
99
+ """
100
+ Sync solving method
101
+
102
+ Returns:
103
+ CaptchaResponseSer model with full service response
104
+
105
+ Notes:
106
+ Check class docstring for more info
107
+ """
108
+ return self._processing_captcha(create_params=self.task_params)
109
+
110
+ async def aio_captcha_handler(self) -> CaptchaResponseSer:
111
+ """
112
+ Async method for captcha solving
113
+
114
+ Returns:
115
+ CaptchaResponseSer model with full service response
116
+
117
+ Notes:
118
+ Check class docstring for more info
119
+ """
120
+ return await self._aio_processing_captcha(create_params=self.task_params)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python3-capsolver
3
- Version: 0.8
3
+ Version: 0.9.2
4
4
  Summary: Python 3.8+ Capsolver library with AIO module.
5
5
  Home-page: https://andreidrang.github.io/python3-capsolver/
6
6
  Author: AndreiDrang
@@ -26,6 +26,9 @@ Keywords: captcha
26
26
  cloudflare
27
27
  amazon
28
28
  amazon_waf
29
+ akamai
30
+ imperva
31
+ binance
29
32
  Classifier: License :: OSI Approved :: MIT License
30
33
  Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
31
34
  Classifier: Development Status :: 5 - Production/Stable
@@ -44,12 +47,13 @@ Requires-Python: >=3.8.0
44
47
  Description-Content-Type: text/markdown
45
48
  Requires-Dist: requests (>=2.21.0)
46
49
  Requires-Dist: aiohttp (>=3.7.4)
47
- Requires-Dist: pydantic (==1.10.*)
50
+ Requires-Dist: pydantic (==2.4.2)
48
51
  Requires-Dist: tenacity (==8.*)
49
52
 
50
53
 
51
54
  # python3-capsolver
52
- ![Python3-Capsolver](https://github.com/AndreiDrang/python3-capsolver/blob/main/files/CapsolverSm.png)
55
+
56
+ ![Logo](https://red-panda-dev.xyz/media/images/Capsolver.max-800x600.png)
53
57
 
54
58
  <a href="https://dashboard.capsolver.com/passport/register?inviteCode=kQTn-tG07Jb1">
55
59
  <img src="https://cdn.discordapp.com/attachments/1105172394655625306/1105180101802471575/20221207-160749.gif" alt="Capsolver's Banner">
@@ -87,6 +91,10 @@ Or email python-captcha@pm.me
87
91
 
88
92
  ***
89
93
 
94
+ You can check our other projects here - [RedPandaDev group](https://red-panda-dev.xyz/blog/). For example - [Torrents Tracker bot](https://t.me/torrents_tracker_bot) for Telegram.
95
+
96
+ ***
97
+
90
98
  ## How to install?
91
99
 
92
100
  We recommend using the latest version of Python. `python3-capsolver` supports Python 3.7+.
@@ -1,8 +1,9 @@
1
1
  python3_capsolver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- python3_capsolver/__version__.py,sha256=WY9HbkgoxJlUCfEaMASIAo3wFTh3K3UXHty6LsjolMg,20
2
+ python3_capsolver/__version__.py,sha256=gqT-BGoeEItda9fICQDvLbxEjWRIBhFJxPxxKvmHLUo,22
3
3
  python3_capsolver/akamai.py,sha256=bV518CXWxRJ7X2By2e9-cpG1dps5JsdTjoJRNR89lD4,7988
4
4
  python3_capsolver/aws_waf.py,sha256=bDFHBxFaeC2R_D4zejRIySySjiOWG9Q8S3YbzGvmeWY,4538
5
- python3_capsolver/cloudflare.py,sha256=EuxIlua3gZzF04KHrw3ChrM2vhrNqJeAhH4jIWPQeDs,4907
5
+ python3_capsolver/binance.py,sha256=RVKslF6FlzPNLXPKU7bcL93MP3phdJT8u131JAky_qg,4202
6
+ python3_capsolver/cloudflare.py,sha256=9QBK291EP71_lGgdqt8sOCx6XqP_M7Hq2n8vTvbLtwA,4468
6
7
  python3_capsolver/control.py,sha256=hWVRIrY6KEivzY0VMErWjVAK_LTBnO-hGRU7T7M1D34,1958
7
8
  python3_capsolver/cyber_si_ara.py,sha256=i7v4zeselPj-KLQb1Y5mFybNaagl0BAQ8rEFG3YkAeg,5247
8
9
  python3_capsolver/datadome_slider.py,sha256=lAeOQGNJCqCusJtRSs2lQJg8xFed-RCJmi3h099A5gc,3938
@@ -10,14 +11,15 @@ python3_capsolver/fun_captcha.py,sha256=fZIdMPx9sIYgE7j4D6apTWGK6KfiO2k9N0TW1Opo
10
11
  python3_capsolver/gee_test.py,sha256=KraqcQGWw53X9-DqFfJontMgro_hpSQZ6FbVDQGU4Cc,4310
11
12
  python3_capsolver/hcaptcha.py,sha256=FKqU4ZIVQlZq6HoE0zivDHC0_oHlj1Qsb85_8yl6sqk,7684
12
13
  python3_capsolver/image_to_text.py,sha256=YRzI1MS7Xk31jk00HZ6nSA7MI2cIElBM2TC1jVPThsg,6271
14
+ python3_capsolver/imperva.py,sha256=FB9ed3eFI4h3G0j8yyvnJaiAk4Jl7s7BXbQNxlwxnGM,4612
13
15
  python3_capsolver/mt_captcha.py,sha256=f7c8ir1aZ0sGxhwshNAKmKptGKA7NNKevhZKr9xcOwQ,4948
14
16
  python3_capsolver/recaptcha.py,sha256=dduWmfKh-Gztw7OMnsNo7bmJYpYwuF4LBxlAdOqDHjE,6374
15
17
  python3_capsolver/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
18
  python3_capsolver/core/base.py,sha256=AkvvsTVuDZe-rtwmWZrLgBIvYS1vqwNjiGbMzLKJVmE,8722
17
19
  python3_capsolver/core/config.py,sha256=-iBgQwY3MDny3Pz8fZTJdkpY2nfxAChywQCy5wlYoaU,1018
18
- python3_capsolver/core/enum.py,sha256=lzBopaKQGoCax1dHt9wajDm-7RhsXZV6uBsPli6TtMg,3634
19
- python3_capsolver/core/serializer.py,sha256=Fbv0VtTQVtcZZQDT0NFxF4evtab3x81uTO4i80rrvX0,4931
20
- python3_capsolver-0.8.dist-info/METADATA,sha256=Zs9tWnl3rcwGzCMVMkcR3GCaqJuoa_0-dwbNjvFdXyE,5439
21
- python3_capsolver-0.8.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
22
- python3_capsolver-0.8.dist-info/top_level.txt,sha256=yws7CqjoBfrn2ebCkAQmEaVlZ-zhbtflqpCDwAEX4kI,18
23
- python3_capsolver-0.8.dist-info/RECORD,,
20
+ python3_capsolver/core/enum.py,sha256=ui3do1zarzEZ04BAQ53tVe9DnL_OPTE97vyRvt7uzI0,3803
21
+ python3_capsolver/core/serializer.py,sha256=21B1sGPaYuJ1ZEnNYcbe7dOViYoh805w5FRcm-gAlaE,5403
22
+ python3_capsolver-0.9.2.dist-info/METADATA,sha256=DwKRcDkbdadOJFKWTk5JlcA5h25iXqCT2Y3pnJkVYPE,5633
23
+ python3_capsolver-0.9.2.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
24
+ python3_capsolver-0.9.2.dist-info/top_level.txt,sha256=yws7CqjoBfrn2ebCkAQmEaVlZ-zhbtflqpCDwAEX4kI,18
25
+ python3_capsolver-0.9.2.dist-info/RECORD,,