Akamai任务

Akamai任务

 

通过使用同步接口创建任务 https://sync.ez-captcha.com/createSyncTask, 并直接获取结果

中国优化地址:http://47.115.166.118:16000/createSyncTask

如果您得到了一个无效的Payload,请联系我们,我们将会为您解决和优化

 

任务类型

任务类型

描述

价格(美元)

任务类型

描述

价格(美元)

AkamaiWEBTaskProxyless

Akamai 解决方案

$2.5/1k

Sensor Data

向API发送POST请求。使用以下表单数据

参数

类型

必需

描述

参数

类型

必需

描述

pageUrl

string

true

输入您当前要过的页面的URL

v3Url

string

true

输入akamai v3脚本的url,注意,大部分网站这个url会根据每次请求变换,所以需要动态获取。
是v3Url地址,不是v3Url返回来的脚本

bmsz

string

true

你的会话中最新的bmsz cookie 值

abck

string

true

你的会话中最新的_abck cookie 值

ua

string

true

你程序中使用的UserAgent(需要一致),仅支持Chrome的UserAgent,建议使用Chrom最新版的UserAgent.

lang

string

true

使用的语言,与请求头中的accept-language一致, 如 “en-GB”、“en-US”.

script_base64

string

true

仅在第一个包中需要发送,该值为v3 javascript脚本的Base64编码形式

index

int32

true

表示当前是第几个包,从0开始计算

encodeData

string

true

第一个包中该值为空,该值从第一个包返回值中获取。第一个包之后只需要填充这个值不需要填充script_base64。

备注

  1. 有些网站即使获取到abck cookie为”~-1~”也是有效的,所以我们建议每次获取到abck cookie之后都使用一次判断是否有效,直到第八次。发送sensor_data的次数跟网站的防护级别有关。

  2. lang和请求头的accept-language、代理所在区域需要保持一致。

  3. ua仅支持Chrome的ua,建议使用最新版本的Chrome ua

  4. 大部分网站的v3 url是会随机变化的,所以需要根据每次请求动态获取。

  5. 最后使用_abck cookie的时候请保持和前面发送sensor_data数据包时一样的IP、UA、TLS

创建任务

示例

POST https://sync.ez-captcha.com/createSyncTask

中国优化地址:http://47.115.166.118:16000/createSyncTask
Content-Type: application/json

{ "clientKey": "YourClientKey", "task": { "type": "AkamaiWEBTaskProxyless", "pageUrl": "websiteUrl", "v3Url":"v3Url", "bmsz": "xxx", "abck": "xxx", "ua": "xxx", "lang": "xxx", "script_base64": "xxx", "index": 0, "encodeData": "xxx" } }

API会在响应体中返回payload和encodedata,payload代表需要发送的sensor_data数据。

 

返回示例

返回的Payload作为sensor_data 通过post提交到对应接口

{ "errorId": 0, "solution": { "payload": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx", "encodedata": "xxxxxxxx" }, "status": "ready" }

 

代码示例

import base64 from curl_cffi import requests import threading from typing import Dict, List import json def akamai_v3_post(): url = "WebsiteUrl" v3_url = "v3_script_url" user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36' client_key = 'YourClientKey' proxies = { #'http': 'http://127.0.0.1:8888', #'https': 'https://127.0.0.1:8888' } headers1: Dict[str, str] = { 'cache-control': 'max-age=0', 'sec-ch-ua': '"Not A(Brand";v="8", "Chromium";v="135", "Google Chrome";v="135"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"', 'upgrade-insecure-requests': '1', 'user-agent': user_agent, 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', 'sec-fetch-site': 'none', 'sec-fetch-mode': 'navigate', 'sec-fetch-user': '?1', 'sec-fetch-dest': 'document', 'accept-encoding': 'gzip, deflate, br, zstd', 'accept-language': 'en-GB,en;q=0.9', 'priority': 'u=0, i' } headers2: Dict[str, str] = { 'sec-ch-ua-platform': '"Windows"', 'user-agent': user_agent, 'sec-ch-ua': '"Not A(Brand";v="8", "Chromium";v="135", "Google Chrome";v="135"', 'sec-ch-ua-mobile': '?0', 'accept': '*/*', 'sec-fetch-site': 'same-origin', 'sec-fetch-mode': 'no-cors', 'sec-fetch-dest': 'script', 'referer': url, 'accept-encoding': 'gzip, deflate, br, zstd', 'accept-language': 'en-GB,en;q=0.9', 'priority': 'u=2' } try: session = requests.Session() resp1 = session.get( url, headers=headers1, proxies=proxies, verify=False, impersonate="chrome124" ) resp2 = session.get( v3_url, headers=headers2, proxies=proxies, verify=False, impersonate="chrome124" ) bz_sz_cookie = session.cookies.get('bm_sz', '') abck_cookie = session.cookies.get('_abck', '') resp_script = base64.b64encode(resp2.content).decode('utf-8') ez_url = "https://sync.ez-captcha.com/createSyncTask" payload = { "clientKey":client_key, "task":{ "type": "AkamaiWEBTaskProxyless", "pageUrl": url, "v3Url":v3_url, "bmsz": bz_sz_cookie, "abck":abck_cookie, "ua": user_agent, "lang": "en-GB", "script_base64": resp_script, "index": 0, "encodeData": "" } } response = requests.post(ez_url, json=payload, timeout=10) encodedata = json.loads(response.text).get('solution').get('encodedata') sensordata = {'sensor_data':json.loads(response.text).get('solution').get('payload')} count = 1 while count <= 8: resp3 = session.post( v3_url, headers=headers2, proxies=proxies, verify=False, json=sensordata, impersonate="chrome124" ) ret_cookie = session.cookies.get('_abck', '') #Check if using the cookie directly is effective; if so, return it. If not, continue attempting to retrieve it up to eight times. #if ..... return print(ret_cookie) payload = { "clientKey":client_key, "task":{ "type": "AkamaiWEBTaskProxyless", "pageUrl": url, "v3Url":v3_url, "bmsz": bz_sz_cookie, "abck":ret_cookie, "ua": user_agent, "lang": "en-GB", "script_base64": "", "index": count, "encodeData": encodedata } } response = requests.post(ez_url, json=payload, timeout=10) sensordata = {'sensor_data':json.loads(response.text).get('solution').get('payload')} count = count + 1 print("Get cookie error") except Exception as e: print(f"Request error: {e}") return None if __name__ == "__main__": akamai_v3_post()

 

428 状态码

如果遇到428状态码,请联系我们,我们会帮你解决。