如何用Python Requests模块登录StockX?请求被拒及参数问题求助
解决StockX页面访问被拒及登录问题
一、先解决商品页访问被拒问题
你收到Access to this page has been denied是因为请求头(headers)过于空白,StockX的反爬机制会拦截这类无标识请求。需要添加必要的请求头字段模拟真实浏览器:
import requests from bs4 import BeautifulSoup shoe_url = "https://stockx.com/nike-dunk-high-prm-dark-russet" 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": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Accept-Language": "en-US,en;q=0.5", "Referer": "https://www.google.com/" } response = requests.get(shoe_url, headers=headers) if response.status_code == 200: soup = BeautifulSoup(response.text, 'lxml') print(soup.prettify()) else: print(f"请求失败,状态码: {response.status_code}")
二、登录StockX的核心步骤
1. 确定POST登录目标链接
直接访问登录页后,打开浏览器开发者工具(F12)→ 网络面板,手动完成一次登录,观察发起的POST请求,其URL就是实际登录接口(通常是https://accounts.stockx.com/login,但可能随平台更新变化)。
2. 提取必要登录凭证和隐藏字段
登录表单除了email、password,还包含平台生成的隐藏验证字段(比如_csrf、state),需要先请求登录页,从HTML中提取:
session = requests.Session() # 用会话保持自动处理Cookie login_page_res = session.get("https://accounts.stockx.com/login", headers=headers) soup = BeautifulSoup(login_page_res.text, 'lxml') csrf_token = soup.find('input', {'name': '_csrf'})['value']
3. 构造完整登录请求
用会话对象发起POST请求,带上提取的字段和账号密码:
login_data = { "email": "你的StockX邮箱", "password": "你的StockX密码", "_csrf": csrf_token, # 若抓包发现其他必填字段,需一并添加 } login_res = session.post("https://accounts.stockx.com/login", data=login_data, headers=headers) # 验证登录:登录成功后用会话访问需要权限的页面 if login_res.status_code == 200: protected_page_res = session.get(shoe_url, headers=headers) print(protected_page_res.text) else: print("登录失败,检查凭证或请求字段")
关键注意事项
- StockX反爬严格,频繁请求会被封IP,建议添加请求延迟(
time.sleep(2)),必要时用代理IP。 - 登录可能触发验证码(如reCAPTCHA),纯Requests无法处理这类人机验证,需改用Selenium等工具模拟真实浏览器操作。
- 平台接口和验证字段可能随时更新,需定期用浏览器抓包确认最新参数。
内容的提问来源于stack exchange,提问作者Contagious
相关产品推荐
相关产品推荐

