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

使用Python requests爬取Udemy课程数据时返回403错误如何解决?

403错误解决方法

第一步:修正编码与请求头问题

  • 先处理乱码返回:你请求头里accept-encoding包含了br(Brotli压缩)参数,requests默认不支持解析该格式,要么移除头里的br字段,要么执行pip install brotli安装对应依赖让requests可以正常解码响应内容。
  • 补全必要安全头:Udemy的反爬会校验sec-ch-ua、sec-fetch-site、sec-fetch-mode、sec-fetch-dest等浏览器专属字段,直接从浏览器开发者工具的Udemy请求记录里复制完整请求头使用,不要自行删减字段。

第二步:解决TLS指纹识别问题

requests默认的TLS握手指纹会被Udemy的WAF系统识别为爬虫,这也是你换了所有UA依然返回403的核心原因,可以改用curl_cffi库模拟真实浏览器的TLS特征,参考代码如下:

from curl_cffi import requests

# 替换为你从浏览器复制的完整请求头
headers = {
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'accept-language': 'en-US,en;q=0.9,hi;q=0.8',
    'cache-control': 'no-cache',
    'pragma': 'no-cache',
    'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    '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/96.0.4664.45 Safari/537.36',
}

# impersonate参数对应你模拟的浏览器版本,和UA保持一致即可
response = requests.get('https://www.udemy.com/course/design-thinking-product-development', headers=headers, impersonate="chrome96")
print(response.status_code)
print(response.text)

第三步:补充优化方案

  • 不要直接请求具体课程页,先请求Udemy首页获取官方下发的有效Cookie后,再发起课程页请求,符合正常用户的访问逻辑。
  • 控制请求频率,避免短时间内大量请求触发频率限制,导致IP被拉黑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:06:07