22
33from python3_capsolver .core .base import BaseCaptcha
44from 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
813class 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 )
0 commit comments