更换新电脑后爬取网站出现403 Error,求技术建议
解决403 Forbidden的爬虫问题
403错误是服务器明确拒绝了你的请求,和Python版本关系不大,主要是反爬机制拦截了请求,给你几个具体修复方向:
- 补全请求头,模拟浏览器身份:默认
requests.get()的请求头会暴露你是Python程序,服务器会直接拦截。至少要加User-Agent,最好补全常用的浏览器请求头。 - 检查URL中的
x-bwin-accessid参数:这个参数看起来是临时授权凭证,可能已经过期,你需要从目标网站的正常请求里重新抓取有效的accessid。 - 控制请求频率:新电脑的IP可能没被服务器访问白名单识别,频繁请求容易触发拦截,建议加个小延时。
修改后的代码示例:
import requests import time URL = "https://sports.il.betmgm.com/cds-api/bettingoffer/fixture-view?x-bwin-accessid=ZTg4YWEwMTgtZTlhYy00MWRkLWIzYWYtZjMzODI5ZDE0Mjc5&lang=en-us&country=US&userCountry=US&subdivision=US-Illinois&offerMapping=All&scoreboardMode=Full&fixtureIds=14351210&state=Latest&includePrecreatedBetBuilder=true&supportVirtual=false&useRegionalisedConfiguration=true" # 模拟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": "application/json, text/plain, */*", "Accept-Language": "en-US,en;q=0.9", "Referer": "https://sports.il.betmgm.com/" } # 加延时避免频繁请求 time.sleep(2) response = requests.get(URL, headers=headers) print(response.status_code) print(response.text)
如果还是不行,你需要:
- 用浏览器开发者工具(F12)抓取一次正常访问该接口的请求,对比你的请求头和浏览器的请求头,补全所有缺失的关键字段(比如Cookie,部分网站需要登录态或会话Cookie)。
- 确认新电脑IP没有被网站封禁,直接用浏览器访问这个URL,看是否能正常打开。
内容的提问来源于stack exchange,提问作者Gio_Bart
相关产品推荐
相关产品推荐

