Skip to content

Commit d18886d

Browse files
author
Andrei
committed
added AntiAkamaiWebTask
1 parent 6c434b0 commit d18886d

2 files changed

Lines changed: 60 additions & 7 deletions

File tree

src/python3_capsolver/akamai.py

Lines changed: 56 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@
22

33
from python3_capsolver.core.base import BaseCaptcha
44
from python3_capsolver.core.enum import AntiAkamaiTaskEnm, EndpointPostfixEnm
5-
from python3_capsolver.core.serializer import PostRequestSer, CaptchaResponseSer, AntiAkamaiBMPTaskSer
5+
from python3_capsolver.core.serializer import (
6+
PostRequestSer,
7+
CaptchaResponseSer,
8+
AntiAkamaiBMPTaskSer,
9+
AntiAkamaiWebTaskSer,
10+
)
611

712

813
class Akamai(BaseCaptcha):
@@ -32,6 +37,21 @@ class Akamai(BaseCaptcha):
3237
solution={'deviceId': '90F9EAF...'}
3338
)
3439
40+
>>> Akamai(api_key="CAI-BA9XXXXXXXXXXXXX2702E010",
41+
... captcha_type="AntiAkamaiWebTask",
42+
... url="https://www.xxxx.com/nMRH2/aYJ/PQ4b/32/0peDlm/b9f5NJcXf7tiYE/OE9CMGI1/Nzsn/bCVKCnA",
43+
... abck="14164862507BD4......",
44+
... bmsz="4E3C....33",
45+
... userAgent="Mozilla/5.0 (Wi....",
46+
... ).captcha_handler()
47+
CaptchaResponseSer(errorId=0,
48+
errorCode=None,
49+
errorDescription=None,
50+
taskId='73bdcd28-6c77-4414-8....',
51+
status=<ResponseStatusEnm.Ready: 'ready'>,
52+
solution={'sensorData': '2;3159346;4338233...'}
53+
)
54+
3555
>>> Akamai(api_key="CAI-BA9XXXXXXXXXXXXX2702E010",
3656
... captcha_type=AntiAkamaiTaskEnm.AntiAkamaiBMPTask,
3757
... ).captcha_handler()
@@ -43,6 +63,18 @@ class Akamai(BaseCaptcha):
4363
solution={'deviceId': '6DKFOD0...'}
4464
)
4565
66+
>>> Akamai(api_key="CAI-BA9XXXXXXXXXXXXX2702E010",
67+
... captcha_type=AntiAkamaiTaskEnm.AntiAkamaiWebTask,
68+
... url="https://www.xxxx.com/nMRH2/aYJ/PQ4b/32/0peDlm/b9f5NJcXf7tiYE/OE9CMGI1/Nzsn/bCVKCnA",
69+
... ).captcha_handler()
70+
CaptchaResponseSer(errorId=0,
71+
errorCode=None,
72+
errorDescription=None,
73+
taskId='73bdcd28-6c77-4414-8....',
74+
status=<ResponseStatusEnm.Ready: 'ready'>,
75+
solution={'sensorData': '2;3159346;4338233...'}
76+
)
77+
4678
>>> Akamai(api_key="CAI-BA9XXXXXXXXXXXXX2702E010",
4779
... captcha_type=AntiAkamaiTaskEnm.AntiAkamaiBMPTask,
4880
... **{
@@ -76,6 +108,18 @@ class Akamai(BaseCaptcha):
76108
solution={'deviceId': '90F9EAF...'}
77109
)
78110
111+
>>> await Akamai(api_key="CAI-BA9XXXXXXXXXXXXX2702E010",
112+
... captcha_type=AntiAkamaiTaskEnm.AntiAkamaiWebTask,
113+
... url="https://www.xxxx.com/nMRH2/aYJ/PQ4b/32/0peDlm/b9f5NJcXf7tiYE/OE9CMGI1/Nzsn/bCVKCnA",
114+
... ).aio_captcha_handler()
115+
CaptchaResponseSer(errorId=0,
116+
errorCode=None,
117+
errorDescription=None,
118+
taskId='73bdcd28-6c77-4414-8....',
119+
status=<ResponseStatusEnm.Ready: 'ready'>,
120+
solution={'sensorData': '2;3159346;4338233...'}
121+
)
122+
79123
Returns:
80124
CaptchaResponseSer model with full server response
81125
@@ -84,21 +128,26 @@ class Akamai(BaseCaptcha):
84128
https://docs.capsolver.com/guide/antibots/akamaiweb.html
85129
"""
86130

87-
serializer = PostRequestSer
88-
89131
def __init__(
90132
self,
91133
captcha_type: Union[AntiAkamaiTaskEnm, str],
92134
packageName: str = "de.zalando.iphone",
93135
version: str = "3.2.6",
94136
country: str = "US",
137+
url: str = None,
95138
*args,
96139
**kwargs,
97140
):
98141
super().__init__(*args, **kwargs)
142+
self.__serializer = PostRequestSer
143+
self.__url_postfix = None
99144

100145
if captcha_type == AntiAkamaiTaskEnm.AntiAkamaiBMPTask:
101146
self.task_params = AntiAkamaiBMPTaskSer(**locals()).dict()
147+
self.__url_postfix = EndpointPostfixEnm.AKAMAI_BMP_INVOKE.value
148+
elif captcha_type == AntiAkamaiTaskEnm.AntiAkamaiWebTask:
149+
self.task_params = AntiAkamaiWebTaskSer(**locals()).dict()
150+
self.__url_postfix = EndpointPostfixEnm.AKAMAI_WEB_INVOKE.value
102151
else:
103152
raise ValueError(
104153
f"""Invalid `captcha_type` parameter set for `{self.__class__.__name__}`,
@@ -118,10 +167,10 @@ def captcha_handler(self) -> CaptchaResponseSer:
118167
Notes:
119168
Check class docstring for more info
120169
"""
121-
self._prepare_create_task_payload(serializer=self.serializer, create_params=self.task_params)
170+
self._prepare_create_task_payload(serializer=self.__serializer, create_params=self.task_params)
122171
return CaptchaResponseSer(
123172
**self._create_task(
124-
url_postfix=EndpointPostfixEnm.AKAMAI_BMP_INVOKE.value,
173+
url_postfix=self.__url_postfix,
125174
)
126175
)
127176

@@ -135,9 +184,9 @@ async def aio_captcha_handler(self) -> CaptchaResponseSer:
135184
Notes:
136185
Check class docstring for more info
137186
"""
138-
self._prepare_create_task_payload(serializer=self.serializer, create_params=self.task_params)
187+
self._prepare_create_task_payload(serializer=self.__serializer, create_params=self.task_params)
139188
return CaptchaResponseSer(
140189
**await self._aio_create_task(
141-
url_postfix=EndpointPostfixEnm.AKAMAI_BMP_INVOKE.value,
190+
url_postfix=self.__url_postfix,
142191
)
143192
)

src/python3_capsolver/core/serializer.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,3 +138,7 @@ class AntiAkamaiBMPTaskSer(BaseModel):
138138
packageName: str = Field("de.zalando.iphone", description="Package name of AkamaiBMP mobile APP")
139139
version: str = Field("3.2.6", description="AKAMAI BMP Version number")
140140
country: str = Field("US", description="AKAMAI BMP country")
141+
142+
143+
class AntiAkamaiWebTaskSer(BaseModel):
144+
url: str = Field(..., description="Browser url address")

0 commit comments

Comments
 (0)