Python中requests.get突然失效 爬取Netflix我的片单分类故障排查
失效原因
- 反爬策略触发:Netflix有完善的反爬虫机制,短时间内频繁发起无伪装的请求,很容易触发IP临时封禁,前几次请求未达到阈值可以正常返回,达到阈值后会返回验证码页面、403/429报错页面,无法拿到正常的影视详情源码。
- 请求缺少必要校验信息:你当前用
requests.get发起的是裸请求,没有携带浏览器的User-Agent、登录态Cookie等头信息,极易被服务端识别为爬虫请求,触发拦截规则后就无法拿到正常响应。 - 动态内容加载规则限制:Netflix的页面内容大多是JavaScript动态渲染的,反爬触发后服务端不会返回完整的动态渲染数据,你用来判断剧集的
seasonCount字段自然无法匹配到。
解决办法
- 给请求添加伪装头,模拟真实浏览器访问,至少要配置User-Agent,建议同时带上你登录Netflix后浏览器的Cookie信息,修改请求部分代码如下:
import requests import re import time import random # 头信息替换成你自己浏览器的实际参数 headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 13_5; rv:109.0) Gecko/20100101 Firefox/117.0", "Cookie": "你从浏览器开发者工具网络请求中复制的Cookie字符串" } # 后面循环请求部分修改为 for i in range(len(movieName)): # 每次请求前加随机2-5秒延时,降低请求频率 time.sleep(random.randint(2,5)) read_link = requests.get(movieNumberURL[i], headers=headers) # 先判断请求是否成功 if read_link.status_code != 200: print(f"请求{movieNumberURL[i]}失败,状态码{read_link.status_code},跳过该条目") continue linkHTML=read_link.text # 后续原有逻辑保持不变
- 如果仍被拦截,可以更换为Selenium、Playwright这类自动化浏览器工具模拟真实用户操作,绕过反爬的成功率会高很多。
- 若需要爬取的条目较多,可以搭配代理IP池做IP轮换,避免单个IP被长时间封禁。
内容的提问来源于stack exchange,提问作者gojira
相关产品推荐
相关产品推荐

