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

使用requests访问纽约时报首页成功但文章页返回403的原因及解决方法

问题原因分析
  • 反爬策略差异化:纽约时报首页和内页的反爬验证强度不同,内页可能额外校验了请求头完整性、会话状态,或是对非浏览器请求的识别更严格。
  • 会话Cookie缺失:访问首页时服务器会生成会话Cookie,但单独请求内页时未携带这些Cookie,被判定为异常访问。
  • 请求头不完整:仅设置User-Agent远远不够,真实浏览器会携带Accept、Accept-Language等一系列请求头,缺少这些字段很容易被识别为爬虫。
解决办法
  • 补全完整请求头:照搬真实Firefox浏览器的请求头,示例代码:
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
        'Accept-Language': 'en-US,en;q=0.5',
        'Accept-Encoding': 'gzip, deflate, br',
        'Connection': 'keep-alive',
        'Upgrade-Insecure-Requests': '1'
    }
    
  • 维持会话状态:用requests.Session()保持会话,先访问首页获取Cookie再请求内页,示例:
    import requests
    
    session = requests.Session()
    # 先访问首页建立会话
    session.get('https://www.nytimes.com', headers=headers)
    # 再请求目标内页
    res = session.get('https://www.nytimes.com/2022/11/19/sports/soccer/world-cup-qatar-2022.html', headers=headers)
    print(res.status_code)
    
  • 控制请求频率:每次请求前添加随机延迟,比如time.sleep(random.uniform(1, 3)),避免短时间内请求过多触发拦截。
  • 模拟浏览器渲染(可选):如果内页依赖JS加载内容,普通requests无法获取完整数据,可尝试用selenium或playwright模拟真实浏览器操作,但这种方式更容易被检测,需谨慎使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 06:15:35