You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用requests爬取Amazon遭拦截,含cURL转Python失效问题求解决方案

爬取Amazon时requests模块失效问题及解决方案

问题描述

我使用requests模块爬取Amazon时始终无法正常工作,尝试过配置cookies、headers以及更换IP,但只有浏览器能成功访问。此外,用cURL请求可以正常返回页面,但转为Python代码后就触发验证码请求,即便携带cookies也无法解决。

可正常运行的cURL示例

curl -L -vvv http://amazon.com -H "User-Agent:Mozilla 5.0"

转译后失效的Python代码

import requests

cookies = {
    'session-id': '135-4585428-6195300',
    'session-id-time': '2082787201l',
    'i18n-prefs': 'USD',
    'sp-cdn': '"L5Z9:IL"',
    'ubid-main': '132-1503580-7678418',
    'session-token': 'R5XVE3t8VeX8bRwnjuxXwONDgBnxkngfLfzobFxK5HL+8QaofrVEPjv8Mvta3D6EMlaiFeOyhjjiHkHLjjRwlh9seQ0wsfXE0BU0csh2Wtx6q6r630bsx5VvbBIQcyVAPRkgvL5wgU12P39t5iCZ7b3ykFjRvb9qe7eScZC/F9DJ+NuFMOVP+Z7OQtlZNQzcYrKmWTJH0HJZho8VtJBish0ATwfLhVI+Ihu1ioHYUfSUNDdjQFgG7SyiKZDufkXekZZGaF3x24vY9haBeJVnE9GjmMN+XHySuQtP/stlZmhlp9JOH17+JTZHVsCn/SEONdK5QhETXzoaQ+9YvptxA+v49bgXJn+L',
    'csm-hit': 'tb:NBK78382HSSRXD9W22YX+s-SKXXAE4EMPQ2XYNGK1G0|1692968547644&t:1692968547644&adb:adblk_no',
}

headers = {
    'authority': 'www.amazon.com',
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
    'accept-language': 'en-US,en;q=0.9',
    'cache-control': 'max-age=0',
    # 'cookie': 'session-id=135-4585428-6195300; session-id-time=2082787201l; i18n-prefs=USD; sp-cdn="L5Z9:IL"; ubid-main=132-1503580-7678418; session-token=R5XVE3t8VeX8bRwnjuxXwONDgBnxkngfLfzobFxK5HL+8QaofrVEPjv8Mvta3D6EMlaiFeOyhjjiHkHLjjRwlh9seQ0wsfXE0BU0csh2Wtx6q6r630bsx5VvbBIQcyVAPRkgvL5wgU12P39t5iCZ7b3ykFjRvb9qe7eScZC/F9DJ+NuFMOVP+Z7OQtlZNQzcYrKmWTJH0HJZho8VtJBish0ATwfLhVI+Ihu1ioHYUfSUNDdjQFgG7SyiKZDufkXekZZGaF3x24vY9haBeJVnE9GjmMN+XHySuQtP/stlZmhlp9JOH17+JTZHVsCn/SEONdK5QhETXzoaQ+9YvptxA+v49bgXJn+L; csm-hit=tb:NBK78382HSSRXD9W22YX+s-SKXXAE4EMPQ2XYNGK1G0|1692968547644&t:1692968547644&adb:adblk_no',
    'device-memory': '8',
    'downlink': '10',
    'dpr': '1',
    'ect': '4g',
    'rtt': '100',
    'sec-ch-device-memory': '8',
    'sec-ch-dpr': '1',
    'sec-ch-ua': '"Chromium";v="116", "Not)A;Brand";v="24", "Microsoft Edge";v="116"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    'sec-ch-ua-platform-version': '"10.0.0"',
    'sec-ch-viewport-width': '1037',
    'sec-fetch-dest': 'document',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-site': 'none',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.54',
    'viewport-width': '1037',
}

response = requests.get('https://www.amazon.com/dp/B002G9UDYG', cookies=cookies, headers=headers)

可行解决方案

  • 统一Cookie传递方式:不要同时在headers和cookies参数中传递Cookie,二选一即可。推荐使用cookies字典参数,避免headers中Cookie字符串的转义问题(比如代码中注释的Cookie字段包含"转义符,可能导致服务端解析异常)。
  • 模拟浏览器请求流程:不要直接请求商品详情页,先请求Amazon主页初始化会话,获取最新的会话Cookie后再请求目标页面。Amazon的反爬机制会验证会话连贯性,直接请求深层页面极易触发验证码。示例代码:
    import requests
    
    # 使用Session保持会话
    session = requests.Session()
    # 先请求主页初始化会话
    session.get('https://www.amazon.com', headers={
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.54'
    })
    # 再请求目标商品页
    response = session.get('https://www.amazon.com/dp/B002G9UDYG')
    print(response.status_code)
    
  • 精简Headers字段:移除device-memory、downlink、rtt等浏览器特有的性能指标字段,这些字段在requests模拟时很难和真实浏览器完全一致,反而容易被反爬机制识别。
  • 保持代理与会话一致性:使用代理时,确保同一个Session会话始终使用同一个IP,不要每次请求更换IP,否则会被判定为异常流量。
  • 处理动态渲染内容:如果目标页面依赖JavaScript渲染,requests只能获取静态HTML,此时可以使用requests-html库进行JS渲染,或者直接用Selenium模拟真实浏览器行为(注意Selenium需配置规避检测,比如使用undetected-chromedriver)。

内容的提问来源于stack exchange,提问作者MarinaF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 13:12:04