调用Nagumo站点分类API返回403错误无法获取数据的解决方案
返回403的核心原因
该API配置了访问防护规则,原生requests请求默认携带的UA标识为Python爬虫特征,且缺少合法来源、会话校验信息,会被防护策略直接拦截。
解决步骤
- 配置合法请求头
接口会校验请求来源,必须携带和浏览器端一致的核心请求头:User-Agent:替换默认的Python requests标识,使用主流浏览器UAReferer:填充目标站点页面地址,标识请求从站内发起Origin:填充目标站点主域名Accept:声明接收JSON格式响应
参考代码:
import requests url = 'https://b2c-api-premiumlabel-production.azurewebsites.net/api/b2c/page/menu?id_loja=2691' headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36", "Referer": "https://www.nagumo.com.br/", "Origin": "https://www.nagumo.com.br", "Accept": "application/json, text/plain, */*" } resp = requests.get(url, headers=headers) print(resp.status_code) print(resp.json())
- 维持会话Cookie(配置请求头仍返回403时使用)
接口会校验请求携带的合法站点Cookie,需要先访问站点首页获取会话标识,再请求业务接口,使用requests.Session()可自动维护Cookie,无需手动处理:
import requests session = requests.Session() session.headers.update({ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36" }) # 访问首页获取合法Cookie session.get("https://www.nagumo.com.br/") # 请求分类接口 api_resp = session.get( 'https://b2c-api-premiumlabel-production.azurewebsites.net/api/b2c/page/menu?id_loja=2691', headers={ "Referer": "https://www.nagumo.com.br/osasco-lj46-osasco-ayrosa-rua-avestruz/departamentos", "Accept": "application/json, text/plain, */*" } ) print(api_resp.status_code) print(api_resp.json())
- 控制请求频率
站点接入了WAF防护,短时间高频请求会触发IP封禁返回403。调试阶段单请求间隔保持2-3秒,逻辑跑通后再根据接口响应情况调整并发。
后续遍历分类拉取商品数据时,沿用上述会话和请求头配置即可。
内容的提问来源于stack exchange,提问作者data_creator
相关产品推荐
相关产品推荐

