通过XHR请求爬取KickStarter遭遇403状态码的解决咨询
解决KickStarter XHR请求403状态码的建议
验证Cookie和CSRF Token的有效性
Cookie中的会话信息(如session_id、登录态标识)存在有效期,手动复制的旧Cookie可能已失效。建议从浏览器开发者工具的Network面板中实时复制最新的Cookie和X-Csrf-Token。另外,如果登录了KickStarter账号,爬取时不要频繁发起请求,避免账号被封禁。确认请求URL的正确性
浏览器中实际的XHR请求地址可能并非https://www.kickstarter.com/discover/advanced,而是带有.json后缀的接口(比如https://www.kickstarter.com/discover/advanced.json),去Network面板里核对真实的请求路径。模拟浏览器的完整请求流程
不要直接发起接口请求,先发送GET请求访问https://www.kickstarter.com/discover/advanced页面,从响应中自动获取Cookie和CSRF Token,再用这些信息发起XHR请求,避免手动复制的信息过期或不完整。示例代码如下:import requests session = requests.Session() # 先访问页面获取会话信息 page_resp = session.get("https://www.kickstarter.com/discover/advanced") # 从会话Cookie中提取CSRF Token csrf_token = session.cookies.get("csrf_token") # 发起目标XHR请求 target_url = "https://www.kickstarter.com/discover/advanced.json" params = { "google_chrome_workaround": "", "woe_id": "0", "sort": "magic", "seed": "2811118", "page": "1" } headers = { "Accept": "application/json, text/javascript, */*; q=0.01", "Accept-Language": "en-US,en;q=0.9,ru;q=0.8", "Referer": "https://www.kickstarter.com/discover/advanced", "Sec-Ch-Ua": '"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"', "Sec-Ch-Ua-Mobile": "?0", "Sec-Ch-Ua-Platform": '"Windows"', "Sec-Fetch-Dest": "empty", "Sec-Fetch-Mode": "cors", "Sec-Fetch-Site": "same-origin", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36", "X-Csrf-Token": csrf_token, "X-Requested-With": "XMLHttpRequest" } response = session.get(target_url, params=params, headers=headers) print("Status Code:", response.status_code)规避反爬机制
- 每次请求后添加1-2秒的延迟,模拟人类浏览节奏;
- 保持User-Agent的一致性,或轮流使用几个真实的浏览器标识,不要频繁更换;
- 检查浏览器请求头中的其他字段(如
DNT),补充到请求头中,尽量与浏览器请求完全一致。
遵守网站规则
查看https://www.kickstarter.com/robots.txt确认允许爬取的范围,不要高频次、大规模爬取数据,避免给服务器造成压力导致IP被封禁。
内容的提问来源于stack exchange,提问作者edyvedy13
相关产品推荐
相关产品推荐

