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

使用Python requests库访问网页遇418错误,请求解决方法

问题分析与解决办法

原因分析

  • 请求未携带浏览器特征的HTTP头信息,服务器通过User-Agent等字段识别出这是脚本发起的请求,而非正常浏览器访问
  • 未处理网站的反爬机制,比如会话Cookie验证、请求频率限制等,直接发起请求被拦截
  • 原代码中请求地址缺少https://协议头,这也是请求不合法的潜在因素

解决办法

  • 添加模拟浏览器的请求头:服务器通常通过User-Agent判断请求来源,添加符合主流浏览器格式的User-Agent,同时补充Accept、Referer等字段提升请求合法性
  • 使用Session保持会话:先访问CNN主站获取必要的Cookie,再通过同一个Session请求API,模拟正常用户的访问流程
  • 控制请求频率:避免短时间内连续发起大量请求,可添加适当延迟降低被拦截概率

修改后的示例代码

import requests
import time

# 模拟Chrome浏览器的请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Referer': 'https://www.cnn.com/'
}

# 初始化会话,保持Cookie
session = requests.Session()

# 先访问首页建立会话
session.get('https://www.cnn.com/', headers=headers)
time.sleep(1)  # 添加短延迟模拟用户行为

# 请求目标CNN DataViz API
api_url = 'https://你的CNN DataViz API完整地址'  # 替换为实际API地址
response = session.get(api_url, headers=headers)

print(f"状态码: {response.status_code}")
print(response.text)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 05:30:22