You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何获取网站CSRF Token?Linux下curl登录Shopee印尼站遇阻

解决Shopee印尼站curl登录的CSRF Token问题

嘿,我之前也折腾过用curl登录Shopee印尼站,碰到过一模一样的CSRF Token问题,给你几个亲测有效的思路:

1. 先从Cookie里捞Token

Shopee这类平台大多会把CSRF Token存在Cookie里,你先别急着直接发登录请求,先跑个GET请求拿首页的Cookie:

# 把Cookie存到本地文件,方便后续复用
curl -c shopee_cookies.txt https://shopee.co.id/

然后打开shopee_cookies.txt看看,找带csrf-token或者XSRF-TOKEN的字段——这就是你要的Token。嫌手动找麻烦?用grep一键提取:

CSRF_TOKEN=$(grep -oP 'csrf-token\s+\K\S+' shopee_cookies.txt)

2. 检查响应头和隐藏的HTML注释

有些网站不会把Token明晃晃放在DOM里,要么藏在响应头里,要么塞在HTML注释里。你可以用curl打印所有响应头找找:

curl -v https://shopee.co.id/ 2>&1 | grep -i csrf

要是响应头里没有,就把首页源码下载下来搜:

curl https://shopee.co.id/ > shopee_home.html
grep -n 'csrf' shopee_home.html

说不定能在一堆注释里找到惊喜。

3. 跟着浏览器的请求流程走

Shopee的前端可能会用JS动态拉取Token,这时候静态源码肯定找不到。打开Chrome的开发者工具(F12),切到Network标签,清空所有请求后刷新首页:

  • 先看第一个GET请求的Cookie,有没有Token字段
  • 再看看有没有专门的API接口(比如/api/v1/csrf这类)返回Token
  • 直接复制浏览器的请求头,用curl完全模拟:
# 把你浏览器里的User-Agent、Cookie、X-CSRF-Token这些头都抄过来
curl -X POST https://shopee.co.id/api/v2/authentication/login \
  -b shopee_cookies.txt \
  -H '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' \
  -H 'X-CSRF-Token: '"$CSRF_TOKEN" \
  -d 'username=你的账号&password=你的密码'

4. 别硬编码Token,记得实时获取

你提到当前Token是gWLIg6tckGVkgWcLkhs2CE5FqRcoeyfr,但这个Token是会过期的,而且和你的会话绑定。所以每次登录前都得重新拿最新的Token,不能直接写死在命令里,还要确保获取Token和登录用的是同一个Cookie文件,不然会话不匹配还是会失败。

最后提个醒:Shopee反爬挺严的,频繁用curl登录可能会触发验证码或者封IP,要是有官方API尽量用官方的,没有的话记得控制请求频率,别太猛。

内容的提问来源于stack exchange,提问作者Joe

火山引擎 最新活动