我自己的站点用的是量子统计,所以对于量子统计就需要有更多的研究和学习。
我想的是,如果我能够通过手机,每天在自己的某个指定页面,就能够看到朋友们过来时的关键字或者搜索引擎关键字等。我就可以利用他们有针对性的对网站进行优化?也可以随时关注网站的流量等信息了。
于是,想到什么就做什么,我直接用snoopy类开始尝试提交post数据,提交后取后返回值 ,并同时打开http://tongji.linezing.com/mystat.html页面(这是一个汇总页),但结果都是提示我需要登录。
如此反复尝试多次,也尝试用curl进行登录,但都是一直失败。最后我不得不祭起抓包利器:smartsniff,这是一个小工具,但是他的抓包功 能很强。于是我对我的行为开始抓包,从登录直到显示mystat.html页面,结果却发现,从登录开始,到显示mystat.html页面,一共抓了四 次包,他们分别是:
- http://www.linezing.com/login.php 登录提交页,POST提交
- http://www.linezing.com/router.php GET方式
- http://tongji.linezing.com/welcome.html GET方式
- http://tongji.linezing.com/mystat.html GET方式
其实我觉得奇怪的是,这四个页面是在同一台机器上,而且主机名却是bbs.linezing.com,好妖异。
不过,既然分析了抓包数据,得到这四个页面,那么剩下的就开始写代码了,欲知后事如何,请看周一的代码分析(其实是因为代码在单位的电脑上,在家里地无法更新而己),敬请关注。
PHP代码
- $cookiefile = tempnam( './log/' , 'cookie' );//设定cookie文件的路径 。
- $ch = curl_init();
- $header[]="Content-Type: application/x-www-form-urlencoded";
- curl_setopt($ch, CURLOPT_URL, 'http://www.linezing.com/login.php'); //登录地址
- curl_setopt($ch, CURLOPT_HTTPHEADER, $header); //发送header ,其实这个header可以不发送
- curl_setopt($ch, CURLOPT_POST, 1); //这是POST数据
- curl_setopt($ch, CURLOPT_POSTFIELDS, 'referer=&webname=index&username=用户名&password=密码&submit=%E7%99%BB%E5%BD%95');//http_build_query( $postData));
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //这个是代表curl_exec后取返回成字符串,而不是象WEB一样跳转
- curl_setopt($ch, CURLOPT_HEADER, 0); //curl返回的时候,默认都是带有header信息的,所以这里设为0,代表返回的时候不要header信息
- curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate'); //这是在用sniff抓包的时候发现用了gzip,deflate的encoding,
- curl_setopt($ch, CURLOPT_REFERER, 'http://www.linezing.com/');//记录来源的Referer
- curl_setopt($ch, CURLOPT_COOKIEFILE,$cookiefile);
- curl_setopt($ch, CURLOPT_COOKIEJAR,$cookiefile);
- curl_exec($ch); //我这里并没有取返回值,主要是把cookie记录下来
- curl_setopt($ch, CURLOPT_URL, 'http://www.linezing.com/router.php'); //登录后跳转的网址
- //curl_setopt($ch, CURLOPT_COOKIEFILE,$cookiefile); 原先我在这里也记录cookie了,但事实上,我这样做之后,反而会把第一次登录时的cookie覆盖了。。。郁闷
- //curl_setopt($ch, CURLOPT_COOKIEJAR,$cookiefile);
- curl_setopt($ch, CURLOPT_REFERER, 'http://www.linezing.com/');
- curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_HEADER, 0);
- curl_setopt($ch, CURLOPT_COOKIESESSION,1);
- $res = curl_exec($ch);
- curl_setopt($ch, CURLOPT_URL, 'http://tongji.linezing.com/welcome.html'); //welcome页还会再判断是否登录,如果没有登录,会是一段JS跳到www.linezing.com
- //curl_setopt($ch, CURLOPT_COOKIEFILE,$cookiefile);
- //curl_setopt($ch, CURLOPT_COOKIEJAR,$cookiefile);
- curl_setopt($ch, CURLOPT_REFERER, 'http://www.linezing.com/');
- curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_HEADER, 0);
- curl_setopt($ch, CURLOPT_COOKIESESSION,1);
- curl_exec($ch);
- curl_setopt($ch, CURLOPT_URL, 'http://tongji.linezing.com/mystat.html');
- curl_setopt($ch, CURLOPT_COOKIEFILE,$cookiefile);
- curl_setopt($ch, CURLOPT_COOKIEJAR,$cookiefile);
- curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_HEADER, 0);
- curl_setopt($ch, CURLOPT_COOKIESESSION,1);
- $res = curl_exec($ch); //这里获取返回值,我是想看一下是不是正确。。。
- curl_close($ch);
- echo htmlSpecialChars( $res );