手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆

采用CURL登录量子统计

首页 > PHP >

这是我很久前的文字了。只是。。。那个博客其实已经废掉了,被我用来尝试着赚点零花钱(域名费而已)
所以,这两天在用到它的时候,又COPY出来,做个备份。虽然其中大部分代码都有点一样,但其实还是略有区别,我这里还是贴我以前的文章。现在项目中用的就不贴了。。。

我自己的站点用的是量子统计,所以对于量子统计就需要有更多的研究和学习。
我想的是,如果我能够通过手机,每天在自己的某个指定页面,就能够看到朋友们过来时的关键字或者搜索引擎关键字等。我就可以利用他们有针对性的对网站进行优化?也可以随时关注网站的流量等信息了。

于是,想到什么就做什么,我直接用snoopy类开始尝试提交post数据,提交后取后返回值 ,并同时打开http://tongji.linezing.com/mystat.html页面(这是一个汇总页),但结果都是提示我需要登录。

如此反复尝试多次,也尝试用curl进行登录,但都是一直失败。最后我不得不祭起抓包利器:smartsniff,这是一个小工具,但是他的抓包功 能很强。于是我对我的行为开始抓包,从登录直到显示mystat.html页面,结果却发现,从登录开始,到显示mystat.html页面,一共抓了四 次包,他们分别是:

  1. http://www.linezing.com/login.php 登录提交页,POST提交
  2. http://www.linezing.com/router.php GET方式
  3. http://tongji.linezing.com/welcome.html GET方式
  4. http://tongji.linezing.com/mystat.html GET方式

其实我觉得奇怪的是,这四个页面是在同一台机器上,而且主机名却是bbs.linezing.com,好妖异。

不过,既然分析了抓包数据,得到这四个页面,那么剩下的就开始写代码了,欲知后事如何,请看周一的代码分析(其实是因为代码在单位的电脑上,在家里地无法更新而己),敬请关注。

PHP代码
  1. $cookiefile = tempnam( './log/' , 'cookie' );//设定cookie文件的路径 。  
  2. $ch = curl_init();  
  3. $header[]="Content-Type: application/x-www-form-urlencoded";    
  4. curl_setopt($ch, CURLOPT_URL, 'http://www.linezing.com/login.php');  //登录地址  
  5. curl_setopt($ch, CURLOPT_HTTPHEADER, $header);  //发送header ,其实这个header可以不发送  
  6. curl_setopt($ch, CURLOPT_POST, 1);  //这是POST数据  
  7. curl_setopt($ch, CURLOPT_POSTFIELDS, 'referer=&webname=index&username=用户名&password=密码&submit=%E7%99%BB%E5%BD%95');//http_build_query( $postData));    
  8. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  //这个是代表curl_exec后取返回成字符串,而不是象WEB一样跳转  
  9. curl_setopt($ch, CURLOPT_HEADER, 0);  //curl返回的时候,默认都是带有header信息的,所以这里设为0,代表返回的时候不要header信息  
  10. curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate'); //这是在用sniff抓包的时候发现用了gzip,deflate的encoding,  
  11. curl_setopt($ch, CURLOPT_REFERER, 'http://www.linezing.com/');//记录来源的Referer  
  12. curl_setopt($ch, CURLOPT_COOKIEFILE,$cookiefile);  
  13. curl_setopt($ch, CURLOPT_COOKIEJAR,$cookiefile);  
  14. curl_exec($ch);  //我这里并没有取返回值,主要是把cookie记录下来  
  15.   
  16. curl_setopt($ch, CURLOPT_URL, 'http://www.linezing.com/router.php');  //登录后跳转的网址  
  17. //curl_setopt($ch, CURLOPT_COOKIEFILE,$cookiefile); 原先我在这里也记录cookie了,但事实上,我这样做之后,反而会把第一次登录时的cookie覆盖了。。。郁闷  
  18. //curl_setopt($ch, CURLOPT_COOKIEJAR,$cookiefile);  
  19. curl_setopt($ch, CURLOPT_REFERER, 'http://www.linezing.com/');  
  20. curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');  
  21. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    
  22. curl_setopt($ch, CURLOPT_HEADER, 0);    
  23. curl_setopt($ch, CURLOPT_COOKIESESSION,1);  
  24. $res = curl_exec($ch);    
  25.   
  26. curl_setopt($ch, CURLOPT_URL, 'http://tongji.linezing.com/welcome.html');  //welcome页还会再判断是否登录,如果没有登录,会是一段JS跳到www.linezing.com  
  27. //curl_setopt($ch, CURLOPT_COOKIEFILE,$cookiefile);  
  28. //curl_setopt($ch, CURLOPT_COOKIEJAR,$cookiefile);  
  29. curl_setopt($ch, CURLOPT_REFERER, 'http://www.linezing.com/');  
  30. curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');  
  31. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    
  32. curl_setopt($ch, CURLOPT_HEADER, 0);    
  33. curl_setopt($ch, CURLOPT_COOKIESESSION,1);  
  34. curl_exec($ch);    
  35.   
  36. curl_setopt($ch, CURLOPT_URL, 'http://tongji.linezing.com/mystat.html');    
  37. curl_setopt($ch, CURLOPT_COOKIEFILE,$cookiefile);  
  38. curl_setopt($ch, CURLOPT_COOKIEJAR,$cookiefile);  
  39. curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate');  
  40. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    
  41. curl_setopt($ch, CURLOPT_HEADER, 0);    
  42. curl_setopt($ch, CURLOPT_COOKIESESSION,1);  
  43. $res = curl_exec($ch);  //这里获取返回值,我是想看一下是不是正确。。。  
  44. curl_close($ch);    
  45. echo htmlSpecialChars( $res );  
因为没写什么,所以就注释写的详细了一点




本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"易栈网-膘叔", 保留原始链接, 此外还必须标注原文标题和链接.

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):