为何API请求在浏览器正常但Python requests返回403错误?
解决LeBonCoin API请求403错误的问题
你遇到的403错误是因为网站反爬机制识别出你的请求并非来自标准浏览器。浏览器发起请求时会携带特定的请求头信息,而requests库默认的请求头会暴露这是Python程序发起的请求,因此被服务器拦截。
解决核心是给请求添加模拟浏览器的请求头,重点设置User-Agent字段,让服务器判定这是浏览器发起的请求。
修改后的代码如下:
import requests params = { 'cat': 'ventes_immobilieres', 'id': '2338252753' } url = "https://www.leboncoin.fr/_next/data/9RwG8_w8p1ZNfDRzX-lzV/ClassifiedAd.json" # 模拟Chrome浏览器的请求头,也可替换为其他浏览器的User-Agent值 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' } r = requests.get(url, params=params, headers=headers) # 验证请求结果 print(r.status_code) print(r.json())
如果添加User-Agent后仍返回403,可以尝试补充其他常见请求头(比如Referer,设置为该广告对应的页面URL),或者查看浏览器请求中的完整头部字段,将关键字段一并加入headers中。
内容的提问来源于stack exchange,提问作者Ramzouu
相关产品推荐
相关产品推荐

