了解,还是搞了几天。主要的经验有:
- curl 用 -d 发送表单时,要把按钮的值也加进去("submit=登录")
- curl 处理 ajax,应该通过分析javascript脚本,找到真正接收请求的url
- curl 模拟 ajax时,添加 HTTP头 "X-Requested-With: XMLHttpRequest",更好的方法是观察实际的HTTP头,并构造出个一样的
- 总之,分析浏览器的HTTP请求,再用 cURL构造即可。
#! /bin/bash
declare -r SCRIPT="${0##*/}"
SITE="http://www.xiami.com"
USERAGENT="Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.0)"
COOKIEFILE="cookie.txt"
USER="********@gmail.com"
PASSWORD="******"
# 检测cookie
if [[ ! -e $COOKIEFILE ]];then
# 登录xiami
curl -c $COOKIEFILE -d "email=$USER&password=$PASSWORD&submit=登录" "$SITE/member/login"
fi
# 单击"签到"
curl -s -b $COOKIEFILE -A "$USERAGENT" -e "$SITE" -H "X-Requested-With: XMLHttpRequest" -X POST -d "" "$SITE/task/signin" --retry 5 -H "Connection: keep-alive" 1>/dev/null
# 删除cookie
#rm $COOKIEFILE
没有评论:
发表评论