Skip to content

Commit 723a5d2

Browse files
authored
3.0.0 proxy refactoring
2 parents 52d89ce + ce51382 commit 723a5d2

72 files changed

Lines changed: 450 additions & 743 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

capmonstercloud_client/CapMonsterCloudClient.py

Lines changed: 34 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,22 @@
1414

1515

1616
_instance_config = (
17-
((RecaptchaV2ProxylessRequest, RecaptchaV2Request), getRecaptchaV2Timeouts),
18-
((RecaptchaV2EnterpriseProxylessRequest, RecaptchaV2EnterpriseRequest), getRecaptchaV2EnterpriseTimeouts),
17+
((RecaptchaV2Request,), getRecaptchaV2Timeouts),
18+
((RecaptchaV2EnterpriseRequest,), getRecaptchaV2EnterpriseTimeouts),
1919
((RecaptchaV3ProxylessRequest), getRecaptchaV3Timeouts),
2020
((ImageToTextRequest), getImage2TextTimeouts),
21-
((FuncaptchaProxylessRequest, FuncaptchaRequest), getFuncaptchaTimeouts),
22-
((HcaptchaProxylessRequest, HcaptchaRequest), getHcaptchaTimeouts),
23-
((GeetestProxylessRequest, GeetestRequest), getGeetestTimeouts),
24-
((TurnstileProxylessRequest, TurnstileRequest), getTurnstileTimeouts),
21+
((FuncaptchaRequest,), getFuncaptchaTimeouts),
22+
((HcaptchaRequest,), getHcaptchaTimeouts),
23+
((GeetestRequest,), getGeetestTimeouts),
24+
((TurnstileRequest,), getTurnstileTimeouts),
2525
((RecaptchaComplexImageTaskRequest, HcaptchaComplexImageTaskRequest,
2626
FunCaptchaComplexImageTaskRequest), getImage2TextTimeouts),
27-
((DataDomeCustomTaskRequest, DataDomeCustomTaskProxylessRequest), getDatadomeTimeouts),
28-
((TenDiCustomTaskRequest, TenDiCustomTaskProxylessRequest), getTenDiTimeouts),
29-
((BasiliskCustomTaskRequest, BasiliskCustomTaskProxylessRequest), getBasiliskTimeouts),
30-
((AmazonWafRequest, AmazonWafProxylessRequest), getAmazonWafTimeouts),
31-
((BinanceTaskRequest, BinanceTaskProxylessRequest), getBinanceTimeouts),
32-
((ImpervaCustomTaskRequest, ImpervaCustomTaskProxylessRequest), getImpervaTimeouts),
27+
((DataDomeCustomTaskRequest,), getDatadomeTimeouts),
28+
((TenDiCustomTaskRequest,), getTenDiTimeouts),
29+
((BasiliskCustomTaskRequest,), getBasiliskTimeouts),
30+
((AmazonWafRequest,), getAmazonWafTimeouts),
31+
((BinanceTaskRequest,), getBinanceTimeouts),
32+
((ImpervaCustomTaskRequest,), getImpervaTimeouts),
3333
((RecognitionComplexImageTaskRequest), getCITTimeouts)
3434
)
3535

@@ -61,29 +61,24 @@ async def get_balance(self) -> Dict[str, Union[int, float, str]]:
6161
return result
6262

6363

64-
async def solve_captcha(self, request: Union[RecaptchaV2EnterpriseProxylessRequest,
64+
async def solve_captcha(self, request: Union[
6565
RecaptchaV2EnterpriseRequest,
6666
RecaptchaV2Request,
67-
RecaptchaV2ProxylessRequest,
6867
RecaptchaV3ProxylessRequest,
69-
ImageToTextRequest,
70-
FuncaptchaProxylessRequest,
71-
FuncaptchaRequest,
72-
HcaptchaRequest,
73-
HcaptchaProxylessRequest,
74-
GeetestProxylessRequest,
75-
GeetestRequest,
76-
TurnstileProxylessRequest,
77-
TurnstileRequest,
78-
HcaptchaComplexImageTaskRequest,
7968
RecaptchaComplexImageTaskRequest,
69+
ImageToTextRequest,
70+
FuncaptchaRequest,
8071
FunCaptchaComplexImageTaskRequest,
81-
DataDomeCustomTaskProxylessRequest,
72+
HcaptchaRequest,
73+
HcaptchaComplexImageTaskRequest,
74+
GeetestRequest,
8275
DataDomeCustomTaskRequest,
76+
TenDiCustomTaskRequest,
77+
BasiliskCustomTaskRequest,
78+
AmazonWafRequest,
8379
BinanceTaskRequest,
84-
BinanceTaskProxylessRequest,
8580
ImpervaCustomTaskRequest,
86-
ImpervaCustomTaskProxylessRequest,
81+
TurnstileRequest,
8782
RecognitionComplexImageTaskRequest],
8883
) -> Dict[str, str]:
8984
'''
@@ -99,27 +94,25 @@ async def solve_captcha(self, request: Union[RecaptchaV2EnterpriseProxylessReque
9994
raise UnknownRequestInstanceError(f'Unknown request instance "{type(request)}", ' \
10095
f'expected that request will belong next instances: {rs_all}')
10196

102-
async def _solve(self, request: Union[RecaptchaV2EnterpriseProxylessRequest,
97+
async def _solve(self, request: Union[
10398
RecaptchaV2EnterpriseRequest,
10499
RecaptchaV2Request,
105-
RecaptchaV2ProxylessRequest,
106100
RecaptchaV3ProxylessRequest,
107-
ImageToTextRequest,
108-
FuncaptchaProxylessRequest,
109-
FuncaptchaRequest,
110-
HcaptchaRequest,
111-
HcaptchaProxylessRequest,
112-
GeetestProxylessRequest,
113-
GeetestRequest,
114-
TurnstileProxylessRequest,
115-
TurnstileRequest,
116-
HcaptchaComplexImageTaskRequest,
117101
RecaptchaComplexImageTaskRequest,
102+
ImageToTextRequest,
103+
FuncaptchaRequest,
118104
FunCaptchaComplexImageTaskRequest,
105+
HcaptchaRequest,
106+
HcaptchaComplexImageTaskRequest,
107+
GeetestRequest,
108+
DataDomeCustomTaskRequest,
109+
TenDiCustomTaskRequest,
110+
BasiliskCustomTaskRequest,
111+
AmazonWafRequest,
119112
BinanceTaskRequest,
120-
BinanceTaskProxylessRequest,
121113
ImpervaCustomTaskRequest,
122-
ImpervaCustomTaskProxylessRequest],
114+
TurnstileRequest,
115+
RecognitionComplexImageTaskRequest],
123116
timeouts: GetResultTimeouts,
124117
) -> Dict[str, str]:
125118

capmonstercloud_client/requests/AmazonWafProxylessRequest.py

Lines changed: 0 additions & 22 deletions
This file was deleted.

capmonstercloud_client/requests/AmazonWafRequest.py

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
1-
from typing import Dict, Union
2-
from pydantic import Field, validator
1+
from typing import Dict, Union, Optional
2+
from pydantic import Field
33

4-
from .proxy_info import ProxyInfo
5-
from .AmazonWafRequestBase import AmazonWafRequestBase
4+
from .baseRequestWithProxy import BaseRequestWithProxy
65

7-
class AmazonWafRequest(AmazonWafRequestBase, ProxyInfo):
6+
class AmazonWafRequest(BaseRequestWithProxy):
87
type: str = 'AmazonTask'
8+
websiteUrl: str
9+
challengeScript: str
10+
captchaScript: str
11+
websiteKey: str
12+
context: str
13+
iv: str
14+
cookieSolution: Optional[bool] = Field(default=None)
915

1016
def getTaskDict(self) -> Dict[str, Union[str, int, bool]]:
1117
task = {}
@@ -16,12 +22,13 @@ def getTaskDict(self) -> Dict[str, Union[str, int, bool]]:
1622
task['websiteKey'] = self.websiteKey
1723
task['context'] = self.context
1824
task['iv'] = self.iv
19-
20-
task['proxyType'] = self.proxyType
21-
task['proxyAddress'] = self.proxyAddress
22-
task['proxyPort'] = self.proxyPort
23-
task['proxyLogin'] = self.proxyLogin
24-
task['proxyPassword'] = self.proxyPassword
25+
26+
if self.proxy:
27+
task['proxyType'] = self.proxy.proxyType
28+
task['proxyAddress'] = self.proxy.proxyAddress
29+
task['proxyPort'] = self.proxy.proxyPort
30+
task['proxyLogin'] = self.proxy.proxyLogin
31+
task['proxyPassword'] = self.proxy.proxyPassword
2532

2633
if self.cookieSolution is not None:
2734
task['cookieSolution'] = self.cookieSolution

capmonstercloud_client/requests/AmazonWafRequestBase.py

Lines changed: 0 additions & 13 deletions
This file was deleted.

capmonstercloud_client/requests/BasiliskCustomTaskProxylessRequest.py

Lines changed: 0 additions & 16 deletions
This file was deleted.
Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,24 @@
11
from typing import Dict, Union
2-
from pydantic import Field, validator
2+
from pydantic import Field
33

4-
from .proxy_info import ProxyInfo
5-
from .BasiliskCustomTaskRequestBase import BasiliskCustomTaskRequestBase
4+
from .CustomTaskRequestBase import CustomTaskRequestBase
65

7-
class BasiliskCustomTaskRequest(BasiliskCustomTaskRequestBase, ProxyInfo):
6+
class BasiliskCustomTaskRequest(CustomTaskRequestBase):
7+
captchaClass: str = Field(default='Basilisk')
8+
websiteKey: str = Field()
89

910
def getTaskDict(self) -> Dict[str, Union[str, int, bool]]:
1011
task = {}
1112
task['type'] = self.type
1213
task['class'] = self.captchaClass
1314
task['websiteURL'] = self.websiteUrl
1415
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
16+
if self.proxy:
17+
task['proxyType'] = self.proxy.proxyType
18+
task['proxyAddress'] = self.proxy.proxyAddress
19+
task['proxyPort'] = self.proxy.proxyPort
20+
task['proxyLogin'] = self.proxy.proxyLogin
21+
task['proxyPassword'] = self.proxy.proxyPassword
2022
if self.userAgent is not None:
2123
task['userAgent'] = self.userAgent
2224
return task

capmonstercloud_client/requests/BasiliskCustomTaskRequestBase.py

Lines changed: 0 additions & 11 deletions
This file was deleted.

capmonstercloud_client/requests/BinanceTaskProxylessRequest.py

Lines changed: 0 additions & 17 deletions
This file was deleted.
Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,29 @@
1-
from typing import Dict, Union
2-
from pydantic import Field, validator
1+
from typing import Dict, Union, Optional
2+
from pydantic import Field
33

4-
from .proxy_info import ProxyInfo
5-
from .BinanceTaskRequestBase import BinanceTaskRequestBase
4+
from .baseRequestWithProxy import BaseRequestWithProxy
5+
6+
class BinanceTaskRequest(BaseRequestWithProxy):
7+
type: str = Field(default='BinanceTask')
8+
websiteKey: str = Field()
9+
websiteUrl: str = Field()
10+
validateId: str = Field()
11+
userAgent: Optional[str] = None
612

7-
class BinanceTaskRequest(BinanceTaskRequestBase, ProxyInfo):
8-
913
def getTaskDict(self) -> Dict[str, Union[str, int, bool]]:
1014
task = {}
1115
task['type'] = self.type
1216
task['validateId'] = self.validateId
1317
task['websiteURL'] = self.websiteUrl
1418
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
19+
20+
if self.proxy:
21+
task['proxyType'] = self.proxy.proxyType
22+
task['proxyAddress'] = self.proxy.proxyAddress
23+
task['proxyPort'] = self.proxy.proxyPort
24+
task['proxyLogin'] = self.proxy.proxyLogin
25+
task['proxyPassword'] = self.proxy.proxyPassword
26+
2027
if self.userAgent is not None:
2128
task['userAgent'] = self.userAgent
2229
return task

capmonstercloud_client/requests/BinanceTaskRequestBase.py

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)