"使用requests.get获取了Coupang商品页面,但只显示空白页面"
— 每周在开发者社区发布的问题
阅读时间: 15分钟 | 截至2026年1月
核心摘要
自2024年以来,Coupang爬虫变得极其困难。引入了Akamai Bot Manager后,几乎所有自动化工具如Selenium、Playwright、Puppeteer都被封锁。
本文涵盖内容:
- Coupang封锁爬虫的确切原因(5阶段检测结构)
- 尝试直接绕过时的失败原因(包括代码)
- 2026年的实际可行方法3种
- 每种方法的成本和限制(月度比较表)
总的来说:小规模测试可能可行,但稳定的大规模收集实际上几乎不可能没有专业服务的支持。
目录
- Coupang数据,谁在收集什么
- 可以从Coupang收集的数据
- 为什么Coupang爬虫变得困难
- Akamai Bot Manager的5阶段检测结构
- 常见尝试和失败模式
- 方法1:自建(高级用户)
- 方法2:使用代理服务
- 方法3:使用爬虫专业服务
- 成本比较:哪种方法更合理
- 找到适合自己的方法
- 常见问题
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服务器
- 通过验证后发放
_abckcookie(没有此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,也无法通过




