版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。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_URL
CURLOPT_HEADER
CURLOPT_NOBODY
CURLOPT_PORT
CURLOPT_POST
CURLOPT_POSTFIELDS
CURLOPT_RETURNTRANSFER
CURLOPT_FOLLOWLOCATION
CURLOPT_COOKIEJAR
CURLOPT_COOKIEFILE
CURLOPT_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内的文章.
预祝大家模拟成功.