使用Python Requests爬取Shopee商品返回错误码90309999求助
解决Shopee巴西站爬取错误90309999的建议
针对你遇到的Shopee巴西站爬取返回错误码90309999的问题,以下是不用Selenium/Scrapy的可行调整方案:
更换真实浏览器User-Agent
不要使用Googlebot这类爬虫标识,改用当前主流浏览器的真实UA(比如最新Chrome的UA),反爬系统很可能已经针对爬虫UA做了拦截。示例UA:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36补充完整的常规请求头
除现有头外,添加浏览器请求必带的Accept、Accept-Language、Referer,适配巴西站的语言环境:headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Language': 'pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3', 'Referer': 'https://shopee.com.br/', 'x-api-source': 'pc', }模拟正常访问流程获取Cookie
先请求Shopee首页获取必要的会话Cookie,再发起搜索请求,很多反爬会校验Cookie的来源:from requests import Session import time import random base_url = 'https://shopee.com.br/search?filters=9&keyword=funko&locations=Nacional&noCorrection=true&page=0&sortBy=relevancy' home_url = 'https://shopee.com.br/' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Language': 'pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3', 'Referer': 'https://shopee.com.br/', 'x-api-source': 'pc', } with Session() as s: # 先访问首页初始化会话 s.get(home_url, headers=headers) time.sleep(random.uniform(1, 2)) # 模拟人类操作延迟 # 发起搜索请求 response = s.get(base_url, headers=headers) print(response.status_code) print(response.text)控制请求频率
每次请求前添加1-3秒的随机延迟,避免因请求过于频繁触发反爬机制:time.sleep(random.uniform(1, 3))校验
af-ac-enc-dat参数
该参数是Shopee的加密验证字段,空值或null无法通过校验。可以通过浏览器开发者工具抓包正常搜索请求的该字段值,直接复制到代码中测试;如果需要长期使用,需分析该参数的生成逻辑(通常和Cookie、请求时间等信息相关)。检查URL参数是否有变化
对比浏览器正常请求的URL参数,确认你的请求参数是否完整,比如是否新增了timestamp、signature等动态参数,若有则需要补充对应参数。
内容的提问来源于stack exchange,提问作者Rafael Ribeiro
相关产品推荐
相关产品推荐

