Akamai Bot Manager 保护的高价值目标比任何其他反爬系统都多——航空公司、球鞋抢购、票务、大型零售。它也是这个领域里资历最老的玩家,这意味着两件事:它的检测最成熟,封锁手法也最有特色。Akamai 很少给你弹验证码。你拿到的是边缘层悄无声息的 403、无限重定向循环,或者它的招牌动作——页面能正常加载,但返回的是被污染过的假数据。
本文讲清楚 2026 年 Akamai 到底检测什么,以及一套行之有效的四层方案,思路和我们的 DataDome/PerimeterX 指南、Cloudflare 指南 一脉相承。免责声明同样适用:这是用于以合理速率抓取公开可访问的数据,而非用于滥用。
Akamai 对每个请求在三个层面打分,分数通过 _abck cookie 跟随你的会话:
python-requests 或 Go-http 的 ClientHello 在第一个数据包就会被标记。原理可看 我们的 JA3/JA4 解析。:method :path :authority :scheme 对比 Chrome 的 :method :authority :scheme :path),即便你伪装了 TLS,也能凭这些认出你的客户端。Akamai 站点上大多数「我的 JA3 完美无缺但还是被封」的情况,都是 HTTP/2 指纹不匹配。Akamai 的 JavaScript 会收集一大坨加密的 "sensor_data" 负载:鼠标轨迹、按键时序、设备方向、canvas/WebGL 哈希、自动化痕迹。它把这些 POST 到被保护的域名,响应会升级(或污染)你的 _abck cookie。有效的 _abck 在特定位置含有 ~0~;被标记的则含有 ~-1~。传感器格式每隔几周就会变——这就是为什么「录制再回放」的传感器活不久。
请求节奏、导航顺序(你是不是没加载过商品页就直接打了商品 API?)、以及会话时长。Akamai 很有耐心:它有时会放过最初几个请求,等分数累积起来再在会话中途把你封掉。
数据中心 IP 在 Akamai 保护的站点上已经死透了——光是 ASN 检查就能干掉它们。请用住宅代理,而且因为 _abck cookie 绑定在你的会话上,要用 sticky 会话:一个 IP 在单个身份的整个生命周期内保持不变,cookie 和 IP 作为一个整体一起轮换。会话中途换 IP 会让你辛苦攒下的传感器信任值作废。(完整策略见 sticky vs 轮换会话。)
# 一个 sticky 身份 = 一个 session id,保持约 10 分钟
socks5h://USERNAME:[email protected]:913
对于纯 HTTP 抓取,你的客户端必须同时伪装 TLS 和 HTTP/2。curl_cffi 两者都能正确处理:
from curl_cffi import requests
r = requests.get(
"https://www.target-site.com/api/inventory",
impersonate="chrome", # TLS + HTTP/2 指纹一起伪装
proxies={"https": "socks5h://USERNAME:[email protected]:913"},
)
仅仅开启 HTTP/2 的普通 httpx 是不够的——httpx 的 h2 指纹是它自己的,不是 Chrome 的。如果你 TLS 指纹很干净却还在吃 403,几乎都是这个原因。(背景知识见 curl_cffi & tls-client 指南。)
除了静态页面之外的任何东西,都要用真实浏览器来完成会话握手:加载落地页,让传感器脚本跑起来,做几个像人的交互(滚动、鼠标移动),然后再把 cookie 提取给你的 HTTP 客户端——而且要走同一个代理:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(proxy={
"server": "us.jibaoproxy.com:913",
"username": "USERNAME", "password": "PASSWORD",
})
page = browser.new_page()
page.goto("https://www.target-site.com/")
page.mouse.move(300, 400); page.mouse.wheel(0, 600)
page.wait_for_timeout(3000) # 传感器 POST 在这里发生
cookies = page.context.cookies()
abck = next(c["value"] for c in cookies if c["name"] == "_abck")
# abck 里含 "~0~" -> 有效;含 "~-1~" -> 被标记,换新身份重来
| 症状 | 可能所在层 | 修法 |
|---|---|---|
| 首个请求就 403,根本没涉及 cookie | TLS / HTTP/2 指纹 | 用 curl_cffi 伪装,别用原生 httpx |
| 最初几个请求 OK,5–10 个之后被封 | IP 信誉或节奏 | 住宅 sticky 会话,放慢速度 |
_abck 里含 ~-1~ | 传感器 / 自动化痕迹 | 真实浏览器握手,先做人类交互 |
| 200 OK 但数据看起来不对 | 被污染的响应 | 你已被标记——彻底重置身份 |
| 进站时无限重定向循环 | IP 在边缘层被封 | 换新住宅 IP,确认 ASN 没被标记 |
_abck),外加耐心的行为评分。_abck;检查是否含 ~0~。新用户注册即送500M免费流量,首次充值额外加赠,活动期间限时开放。