csdn模拟登陆使用curl模拟登陆

it2024-12-05  15

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/mayongzhan - 马永占,myz,mayongzhan

讲讲原理吧.曾经但过有人用python和c#写出来过模拟登陆csdn的.所以决定用php写一个.php当中适合做这个工作的是socket或者是curl,其实curl也是一种Socket不用说了.太基础了.任何的header和内容都可以模拟出来的.适合高手使用.我使用的是curl,可以很方便的实现http post操作.当然也能顺便使用cookie还有可以制定header.

想要模拟csdn的登陆.第一步就是要找出csdn是怎样登陆的.检测一下http.用来完成这个工作的是类似于live http header之类的工具.这些工具都有哪些还有他们具体的内容都在http://blog.csdn.net/mayongzhan 中的其中一篇文章里.

经过分析.Csdn的登陆可以分成两步1显示登陆页面2 填入内容实现登陆.在实际模拟操作中.其实模拟csdn的登陆一步就可以,但是csdn有验证码的.这个要用人眼来识别.所以必须用两步.

翻译成curl的步骤1拿到csdn的登陆页2分析拿到的页,存一些变量,例如cookie,还有一些单位特殊的hidden input参数.3拿到csdn的验证码.(这里为什么要拿一次验证码呢?因为刚才拿的那个登陆页是不能看到验证码的,可以看一下刚才那个登陆页的源码,里面的验证码是相对路径,所以是肯定拿不到的).4直接显示在页面上,然后再给出一个输入框(当然是输入验证码,这里的输出框可以用另外一个页里面写一个iframe来显示验证码)5然后把刚才输入的内容提交到另外一个页处理.实现最终的处理.

这个过程中要使用到的curl参数是:CURLOPT_URLCURLOPT_HEADERCURLOPT_NOBODYCURLOPT_PORTCURLOPT_POSTCURLOPT_POSTFIELDSCURLOPT_RETURNTRANSFERCURLOPT_FOLLOWLOCATIONCURLOPT_COOKIEJARCURLOPT_COOKIEFILECURLOPT_REFERER关于以上内容的解释,请参考http://blog.csnd.net/mayongzhan中的文章.

整个一个curl的过程就是$cookie_jar = tempnam('./tmp','cookie.txt');$ch = curl_init();$options = array(CURLOPT_URL => $url,     CURLOPT_HEADER => 1,     CURLOPT_NOBODY => 0,     CURLOPT_PORT => 80,     CURLOPT_POST => 1,     CURLOPT_POSTFIELDS => ‘&abc=abcd&abcde=123’,     CURLOPT_RETURNTRANSFER => 1,     CURLOPT_FOLLOWLOCATION => 1,     CURLOPT_COOKIEJAR => $cookie_jar,     CURLOPT_COOKIEFILE => $cookie_jar,     CURLOPT_REFERER => $url                 );curl_setopt_array($ch, $options);$temp = curl_exec($ch);curl_close($ch);echo $temp;更具体的curl的相关说明请参考http://blog.csdn.net/mayongzhan内的文章.预祝大家模拟成功.

转载于:https://www.cnblogs.com/xingyong/archive/2011/07/17/2108630.html

最新回复(0)