如何获取网站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




