我用PHP snoopy想做个自动登录开心网的类,现在用cookie自动登录已经成功了,但直接用POST方式传递值回去就会跳回开心网登陆界面,代码如下:include "Snoopy.class.php"; 
$snoopy = new Snoopy; 
$submit_url = ' http://www.kaixin001.com/login/login.php';
$submit_vars["email"] = "kaixin_username"; //此处用户名已经被我注释
$submit_vars["password"] = "kaixin_password"; //此处密码已经被我注释
$submit_vars['url'] = '/home/';
$submit_vars["remember"] = 1;   
$snoopy->submit($submit_url,$submit_vars); 
print $snoopy->results; 在用户名和密码这里输入自己的用户名密码就可以了,但就是提交不上去,我用代码打印出开心首页的提交标签是这样的:<input type="text" autocomplete="off" value="搜索" placeholder="搜索" id="headsearchuser" class="sc_txt _kxj_suggestbind" /><form action="" method=post name=loginform id="kxloginform"><input type=hidden name=url value="/home/"><input style="font-family:Arial;" name="email" type="text" size="18" class="it1" onfocus="this.className='it2';" onblur="this.className='it1';" /><input name="password" type="password" size="18" class="it1" onfocus="this.className='it2';" onblur="this.className='it1';" maxlength="20" /><input style="vertical-align:middle;margin-top:-2px;*margin-top:-1px;" id="status" type=checkbox name=remember value=1><input type="submit" id="btn_dl" value="登录" title="登录" class="rb1" onmouseover="this.className='rb2';" onmouseout="this.className='rb1';" onclick="" style="width:70px;padding-top:4px\9;" /><input type="button" id="btn_dl2" value="退出" title="退出" class="gb1" onmouseover="this.className='gb2';" onmouseout="this.className='gb1';" onclick="javascript:logout();" style="width:70px;padding-top:4px\9;" /></form>
 还有开心HOME界面的头信息我也试过传递过去,也失败了,同样的办法用到CSDN,返回了个405错误- =0,求各位大侠指点啊

解决方案 »

  1.   

    你确定正确登录了? 抓包分析下非Snoopy下正常POST的数据,然后对比看看差别,再去伪造.
      

  2.   

    自动登录,据我所知,开心网在登录过程中是要记录并处理cookie的。
    不知道你这个snoopy有没有相关的操作。curl实现的过程中,是需要提供cookie的一些参数的curl_setopt($ch, CURLOPT_COOKIEJAR, "d:/cookie/coo1C.tmp");     
    curl_setopt($ch, CURLOPT_COOKIEFILE, "d:/cookie/coo1C.tmp"); 
      

  3.   

    不...和cookie没关系,开心他是开始你输入的密码经过他JS加密过的,然后在后台提前会自动再生成个认证的KEY,现在我把他整个网页扒下来了,但他的那个自动生成的key和加密的JS貌似没找到这方面有高手能解答下嘛。