通过snoopy模拟登陆其他有验证码的网站
http://blog.163.com/pjt_ren/blog/static/18825060201062564151583/
2010-07-25 18:41:51| 分类: Php | 标签: |字号大中小 订阅
实现需求:
通过snoopy获得A站sessionid和验证码图片,在自己的网站上显示登陆表单,提交后,snoopy提交输入信息到A站实现登陆,并获取里面的资料作分析。
验证码和sessionid的获取:
//获取图片
$snoopy->fetch('http://www.a.com/imgcode.gif');
//从header信息里面分析出sessionid
preg_match('/JSESSIONID=([\w]+);/', $snoopy->headers[2],$sessionid);
$jsessionid=$sessionid[1];
$imgcode=base64_encode($snoopy->results);
//显示登陆表单
?>
<form action="" method="post">
<table>
<tr>
<th>用户名</th>
<td><input name="username"></td>
</tr>
<tr>
<th>密码</th>
<td><input name="password"></td>
</tr>
<tr>
<th>验证码</th>
<td><input name="loginValidateCode">
<img alt="" src="data:image/gif;base64,<?php echo $imgcode?>">
</td>
</tr>
<tr>
<td><input type="submit"></td>
</tr>
</table>
<input type="hidden" name="jsessionid" value="<?php echo $jsessionid?>">
</form>
提交表单信息到A站并显示登陆后页面:
$snoopy->cookies['JSESSIONID']=post('jsessionid');
$snoopy->submit('http://www.a.com/signin.html',$_POST);
echo $snoopy->results;
小技巧总结:
可以对获取的图片二进制码通过base64编码直接用在img的src属性
<img alt="" src="data:image/gif;base64,<?php echo $base64code?>">