了解,还是搞了几天。主要的经验有:
- 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
没有评论:
发表评论