2026年完美指南:关于Akamai绕过的一切

2026年详细探讨了Coupang爬虫的困难和解决方法的指南。提供了自动化工具如Selenium、Playwright、Puppeteer被阻止的原因和替代方案。

• 23,955
2026年完美指南:关于Akamai绕过的一切
目录

"使用requests.get获取了Coupang商品页面,但只显示空白页面"
— 每周在开发者社区发布的问题

阅读时间: 15分钟 | 截至2026年1月


核心摘要

自2024年以来,Coupang爬虫变得极其困难。引入了Akamai Bot Manager后,几乎所有自动化工具如Selenium、Playwright、Puppeteer都被封锁。

本文涵盖内容:
- Coupang封锁爬虫的确切原因(5阶段检测结构)
- 尝试直接绕过时的失败原因(包括代码)
- 2026年的实际可行方法3种
- 每种方法的成本和限制(月度比较表)

总的来说:小规模测试可能可行,但稳定的大规模收集实际上几乎不可能没有专业服务的支持。


目录

  1. Coupang数据,谁在收集什么
  2. 可以从Coupang收集的数据
  3. 为什么Coupang爬虫变得困难
  4. Akamai Bot Manager的5阶段检测结构
  5. 常见尝试和失败模式
  6. 方法1:自建(高级用户)
  7. 方法2:使用代理服务
  8. 方法3:使用爬虫专业服务
  9. 成本比较:哪种方法更合理
  10. 找到适合自己的方法
  11. 常见问题

1. Coupang数据,谁在收集什么

Coupang在韩国电商市场占据第一。因此对Coupang数据的需求也很大。

竞争对手价格监控 — 实时了解自家商品在Coupang上的售价,以及竞争产品价格的变化。主要由零售品牌、制造商和零售企业使用。

市场研究和趋势分析 — 分析特定类别的热门商品、新品发布情况、价格分布。咨询公司、研究机构和初创公司在进入市场前使用。

评论分析 — 收集和分析自家/竞争对手商品的客户反馈。用于产品改进、营销信息提取和获取客户意见。

MAP(最低广告价格)监控 — 监控品牌指定的最低销售价格是否得到经销商遵守。用于发现违反价格政策的卖家。

库存和缺货监控 — 跟踪竞争产品的库存状态以抓住机会。

要手动检查这些数据,每天需要访问数百至数千个商品页面。这就是为什么自动化是必要的原因。


2. 可以从Coupang收集的数据

成功爬取后,可以从Coupang商品页面提取的主要项目包括:

商品基本信息
- 商品名称、品牌、类别
- 销售价格、折扣价、优惠券应用价格
- 商品图片URL
- 卖家信息(包括火箭送货标志)
- 商品选项(颜色、尺寸等)

评论数据
- 总体评分和评论数量
- 单个评论文本、作者、发布日期
- 评论图片
- 星级分布(1~5星)

销售和库存信息
- 缺货/重新进货状态
- 预计发货日期
- 显示购买数量(“10,000+件已购”)

类别/搜索数据
- 按类别列出商品及排名
- 按搜索关键字显示的商品
- 推荐商品列表

可收集的数据范围取决于爬取方法和规模。简单的价格查询相对容易,但专业的评论收集或实时库存监控需要更复杂的技术。


3. 为什么Coupang爬虫变得困难

过去与现在

2022年以前: 可以使用Python的requests + BeautifulSoup轻松获取商品页面。只需设置User-Agent标头即可。

2023年: 开始应用基本的机器人阻止。可以使用Selenium部分绕过。

2024年至今: Akamai Bot Manager全面引入。使用传统自动化工具几乎不可能。

为什么突然加强了

自2021年在纽约证券交易所(NYSE)上市后,Coupang大量投资于数据保护和基础设施安全。Akamai是全球CDN和安全市场中最大规模的公司之一,他们的Bot Manager是机器人检测领域的顶级解决方案。

加强阻止的具体原因:

  • 竞争对手价格收集阻止: 阻止竞争平台如11번街、Gmarket等的组织化价格监控
  • 自动购买机器人阻止: 阻止限量商品(如火箭直购等)的机器购买
  • 节省服务器成本: 过度爬取流量会增加实际服务成本
  • 数据资产保护: 数亿条商品评论和价格历史是Coupang的核心资产

4. Akamai Bot Manager的5阶段检测结构

Akamai Bot Manager不仅仅检查IP地址。它是由5个层次组成的多层检测系统。

层1:HTTP标头和TLS指纹

首先检查的是HTTP请求本身的特征。

 탐지되는 패턴:
- User-Agent가 없거나 비정상적인 값
- Accept-Language, Accept-Encoding 등 필수 헤더 누락
- 헤더 순서가 실제 브라우저와 다름
- TLS 지문(JA3/JA4 해시)이 봇 도구의 패턴과 일치

Python的requests库的TLS握手模式与Chrome完全不同。在此阶段就会被过滤。

层2:JavaScript执行验证

加载Coupang页面时,Akamai的传感器脚本(约70KB)会一起执行。此脚本会:

  • 确认JavaScript在浏览器中正常运行
  • 收集浏览器API(如navigator、window、document)的响应值
  • 生成WebGL、Canvas、AudioContext等指纹
  • 加密收集的数据并发送到Akamai服务器
  • 通过验证后发放_abck cookie(没有此cookie将无法访问数据)

不执行JavaScript的工具(如requests、curl、Scrapy)无法接收此cookie,因此会被阻止。

层3:浏览器指纹(Fingerprinting)

传感器脚本收集的浏览器指纹非常详细:

项目 收集内容
Navigator userAgent、platform、language、plugins、hardwareConcurrency
Screen width、height、colorDepth、availWidth、availHeight
WebGL 渲染器名称、供应商、支持扩展列表
Canvas 独特渲染哈希(即使是相同硬件也会因操作系统/驱动程序而有所不同)
AudioContext 音频处理管道指纹
自动化标志 navigator.webdriver、__selenium_evaluate、callPhantom、_phantom等

Selenium默认会将navigator.webdriver设置为true。仅此一项就足以立即被识别为机器人。

层4:行为分析(最难绕过)

Akamai还分析用户行为模式:

  • 鼠标轨迹: 人类不是直线移动。有微小的抖动和曲线。Akamai测量这些轨迹的熵。
  • 键盘输入: 分析打字速度和按键间隔(击键动态)。如果每个字符都以相同间隔输入,那就是机器人。
  • 滚动模式: 自动滚动会保持一致的速度,但人会在感兴趣的地方停下来,快速跳过,然后返回。
  • 页面停留时间: 页面加载后0.5秒内提取数据并离开的模式是自动化的典型。
  • 点击坐标: 每次精确点击相同坐标不是人类行为。

层5:IP声誉和速率限制

  • 同一IP在短时间内发出大量请求 → 立即封锁
  • 数据中心IP(如AWS、GCP、Azure等)→ 可疑分数大幅增加
  • VPN服务IP范围 → 列入黑名单
  • 之前被封锁的IP → 永久黑名单

必须通过所有5个层次才能收到正常数据。如果有一个失败,就会被封锁。


5. 常见尝试和失败模式

尝试爬取Coupang的开发者们遇到的典型失败案例。

尝试1:requests + BeautifulSoup

import requests
from bs4 import BeautifulSoup

url = "https://www.coupang.com/vp/products/12345678"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                  "AppleWebKit/537.36 Chrome/120.0.0.0 Safari/537.36"
}
response = requests.get(url, headers=headers)
print(response.status_code)  # 403 Forbidden
print(len(response.text))     # 빈 HTML 또는 챌린지 페이지

为什么失败: 由于不执行JavaScript,无法将传感器数据发送到Akamai。无法发放_abck cookie,因此所有请求都被阻止。TLS指纹也会被Python模式检测到。

尝试2:Selenium + ChromeDriver

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--headless")  # ← 이것부터 문제
driver = webdriver.Chrome(options=options)
driver.get("https://www.coupang.com/vp/products/12345678")
# → Akamai 챌린지 페이지 또는 무한 로딩

为什么失败: navigator.webdriver被设置为true,在第3层立即被检测到。即使使用undetected-chromedriver,自2024年后Akamai传感器v3会检测到额外的自动化痕迹(如CDP连接)。

尝试3:Playwright + Stealth插件

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)  # Headed 모드
    context = browser.new_context()
    page = context.new_page()
    page.goto("https://www.coupang.com/vp/products/12345678")
    # 가끔 성공 → 그러나 10회 중 3~4회만 통과

为什么不稳定: 在Headed模式下,可以通过第1至第3层,但在大规模收集时会在第4层(行为分析)和第5层(速率限制)被阻止。成功率不稳定,无法用于生产。

尝试4:Scrapy +代理轮换

# settings.py
ROTATING_PROXY_LIST = [...]
DOWNLOADER_MIDDLEWARES = {
    'rotating_proxies.middlewares.RotatingProxyMiddleware': 610,
}

为什么失败: Scrapy是HTTP客户端。无论更换多少代理,由于无法执行JavaScript,第2层将全部被阻止。更改IP只解决了5个层次中的一个。


6. 方法1:自建(高级用户)

要直接绕过所有层次,需要相当高的技术水平。

所需技术栈

1. Playwright 또는 Puppeteer + Stealth 플러그인
2. 주거용(Residential) 프록시 풀 — 한국 IP 필수
3. 브라우저 지문 위장 (fingerprint randomization)
4. 행동 시뮬레이션 (마우스 궤적, 키보드, 스크롤)
5. 캡챠 풀이 서비스 연동 (2Captcha, CapSolver 등)
6. 분산 실행 인프라 (Docker + 작업 큐)
7. 모니터링 & 자동 복구 시스템

最小实现示例

#  교육 목적 예시입니다. 실제 대규모 수집에는 부족합니다.

import asyncio
from playwright.async_api import async_playwright
import random

async def scrape_coupang_product(product_url: str):
    async with async_playwright() as p:
        # Headed 모드로 실행 (Headless는 거의 항상 차단됨)
        browser = await p.chromium.launch(
            headless=False,
            args=[
                '--disable-blink-features=AutomationControlled',
                '--disable-dev-shm-usage',
                '--no-sandbox',
            ]
        )

        # 실제 브라우저와 유사한 컨텍스트 설정
        context = await browser.new_context(
            viewport={'width': 1920, 'height': 1080},
            user_agent=(
                'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) '
                'AppleWebKit/537.36 (KHTML, like Gecko) '
                'Chrome/121.0.0.0 Safari/537.36'
            ),
            locale='ko-KR',
            timezone_id='Asia/Seoul',
        )

        # navigator.webdriver 제거
        await context.add_init_script("""
            Object.defineProperty(navigator, 'webdriver', {
                get: () => undefined
            });
        """)

        page = await context.new_page()

        # 1단계: 메인 페이지에서 시작 (직접 URL보다 탐지 회피율 높음)
        await page.goto('https://www.coupang.com', wait_until='networkidle')
        await asyncio.sleep(random.uniform(3, 6))  # 사람처럼 대기

        # 2단계: 검색으로 자연스럽게 진입
        search_box = page.locator('input[name="q"]')
        await search_box.click()
        await asyncio.sleep(random.uniform(0.5, 1.5))

        # 사람처럼 한 글자씩 타이핑
        keyword = "노트북"
        for char in keyword:
            await page.keyboard.type(char, delay=random.randint(80, 200))
            await asyncio.sleep(random.uniform(0.05, 0.15))

        await asyncio.sleep(random.uniform(1, 2))
        await page.keyboard.press("Enter")
        await page.wait_for_load_state('networkidle')
        await asyncio.sleep(random.uniform(2, 4))

        # 3단계: 스크롤 시뮬레이션 (사람처럼 불규칙하게)
        for _ in range(random.randint(2, 5)):
            scroll_amount = random.randint(200, 600)
            await page.mouse.wheel(0, scroll_amount)
            await asyncio.sleep(random.uniform(0.5, 2.0))

        # 4단계: 상품 정보 추출
        title = await page.text_content('.prod-buy-header__title')
        price = await page.text_content('.total-price strong')

        print(f"상품명: {title}")
        print(f"가격: {price}")

        await browser.close()

# 실행
asyncio.run(scrape_coupang_product("https://www.coupang.com/vp/products/12345678"))

自建的实际成本

项目 成本/时间
初始开发时间 2~4周(以资深开发人员为准)
住宅代理 每月$200~500(包括韩国IP 1~5GB)
服务器成本 每月$100~300(Headed浏览器需要大量GPU/内存)
验证码解决方案 每月$50~200(根据请求量)
维护 每2~4周需要应对Akamai传感器更新
月总成本 $350~1,000+(约50~150万韩元)

最大的风险是维护。 Akamai每2~4周更新一次传感器脚本。昨天成功的代码今天可能会被阻止。每次应对这种情况都需要数小时到数天。


7. 方法2:使用代理服务

住宅代理是什么?

通过实际家庭ISP(如KT、SKT、LGU+)连接的代理,而不是数据中心IP。由于使用与实际用户相同的IP,Akamai很难仅通过IP阻止。

主要代理服务比较

服务 住宅代理价格 拥有韩国IP 备注
Bright Data $8/GB~ 丰富 需要额外的绕过代码
Oxylabs $8/GB~ 与Bright Data类似
Smartproxy(现Decodo) $3.5/GB~ 重新品牌、性价比高
SOAX $3.6/GB~ 有限 韩国IP池较小

仅使用代理足够吗?

不够。 代理解决了第5层(IP声誉和速率限制)。其他4个层次仍需自行实现:

  • IP声誉/速率限制 → 代理解决
  • TLS指纹 → 需要额外处理
  • JavaScript执行 → 需要Playwright等
  • 浏览器指纹 → 需要Stealth插件
  • 行为分析 → 需要模拟代码

最终,代理服务只是解决了“方法1”的IP阻止问题,而不是独立的解决方案。


8. 方法3:使用爬虫专业服务

继续关注5个层次可能困难,使用已解决的服务是现实的选择。

Bright Data Web Scraper API

import requests

# Bright Data Scraping Browser API
response = requests.post(
    "https://api.brightdata.com/request",
    headers={"Authorization": "Bearer YOUR_TOKEN"},
    json={
        "zone": "scraping_browser",
        "url": "https://www.coupang.com/vp/products/12345678",
        "format": "raw"
    }
)
  • 价格: Scraping Browser $499/月起,Web Unlocker $499/月起
  • Coupang成功率: 高(拥有自身反机器人绕过技术)
  • 优势: 全球覆盖、稳定的基础设施
  • 限制: 无韩语技术支持,自助服务,需要自行解析/处理数据,无专门针对Coupang的优化

Firecrawl

from firecrawl import FirecrawlApp

app = FirecrawlApp(api_key="fc-YOUR-KEY")
result = app.scrape_url(
    "https://www.coupang.com/vp/products/12345678",
    params={"formats": ["markdown"]}
)
  • 价格: $19/月起(500点数,Stealth Proxy每页消耗5点数)
  • Coupang结果: 被阻止。 即使启用Stealth Proxy,也无法通过

3 条评论

发表评论

您的邮箱不会公开,仅用于回复通知。

Fantastic Glasses unit 401 235 Milligan Dr Okotoks, AB T1S 0B8 info@fantasticglasses.ca 587-997-EYES(3937) eyeglasses okotoks https://www.fantasticglasses.ca/ 访客 09月20日 09:47

Fantastic Glasses unit 401 235 Milligan Dr Okotoks, AB T1S 0B8 info@fantasticglasses.ca 587-997-EYES(3937) eyeglasses okotoks https://www.fantasticglasses.ca/

Fantastic Glasses unit 401 235 Milligan Dr Okotoks, AB T1S 0B8 info@fantasticglasses.ca 587-997-EYES(3937) Contact lemses okotoks 访客 09月18日 00:48

Fantastic Glasses unit 401 235 Milligan Dr Okotoks, AB T1S 0B8 info@fantasticglasses.ca 587-997-EYES(3937) Contact lenses okotoks

Fantastic Glasses unit 401 235 Milligan Dr Okotoks, AB T1S 0B8 info@fantasticglasses.ca 587-997-EYES(3937) sunglasses Okotoks 访客 09月15日 05:38

Fantastic Glasses unit 401 235 Milligan Dr Okotoks, AB T1S 0B8 info@fantasticglasses.ca 587-997-EYES(3937) sunglasses Okotoks

继续阅读

Get notified of new posts

We'll email you when 해시스크래퍼 기술 블로그 publishes new content.

Your email will only be used for new post notifications.