登录+模拟签到

来源:互联网 发布:mysql 触发器 if 编辑:程序博客网 时间:2024/04/30 12:32

<?php
 include 'Snoopy/Snoopy.class.php';
 set_time_limit(0);
 date_default_timezone_set ('Asia/Shanghai');

 $usr = trim($_REQUEST['usr']);
 $pwd = trim($_REQUEST['pwd']);
 @$isjq = trim($_REQUEST['isjq']);
 
 define('BBS_URL',  "http://qqtz.com");   //论坛地址
 define('LOGIN_PATH', "/login.php?");    //登录路径
 define('QD_PATH',  '/hack.php?H_name=qiandao');//签到路径
 define('USER_NAME',  $usr);      //用户名
 define('USER_PWD',  $pwd);      //用户密码

 define('FROM_IP',  '119.75.218.45');   //模拟的ip(为空则不模拟)

 define('IS_JQUERY',   $isjq);      //JQ获取数据
 function login($snoopy){
  $retval = true;
  $submit_url = BBS_URL.LOGIN_PATH;
  //登录所需表单
  $submit_vars["cktime"] = "31536000"; 
  $submit_vars["hideid"] = "0";
  $submit_vars["lgt"] = "0";
  $submit_vars["jumpurl"] = BBS_URL.QD_PATH;
  $submit_vars["step"] = "2";
  $submit_vars["forward"] = "";
  $submit_vars["pwuser"] = USER_NAME;
  $submit_vars["pwpwd"] = USER_PWD;
  $submit_vars["submit"] = "登 录";
  //伪装成浏览器访问
  //$snoopy->cookies["PHPSESSID"] = 'fc106b1918bd522cc863f36890e6fff7';   //伪装sessionid  
  $snoopy->agent = $_SERVER['HTTP_USER_AGENT'];        //伪装浏览器  
  $snoopy->rawheaders["Pragma"] = "no-cache";         //cache 的http头信息 
  if(trim(FROM_IP) != ''){
   $snoopy->rawheaders["X_FORWARDED_FOR"] = FROM_IP;      //伪装ip
  }
  //提交表单 
  $retval = $snoopy->submit($submit_url,$submit_vars);
  $qiandao_page = $snoopy->results;           //获取签到页面内容
  $snoopy->setcookies();
  preg_match('|<input type="hidden" name="qdkey" value="([\d]{0,})" />|is',$qiandao_page,$m);
  $qdkey = $m[1];if($qdkey==''){echo '请刷新并重新登陆!';}
  return  $qdkey;
 }
 function sign_in($snoopy,$qdkey){
  $retval = true;

  $xinqing = array('kx','ng','ym','wl','nu','ch','fd','yl','shuai');
  $qdxq = $xinqing[array_rand($xinqing,1)];

  //签到部分
  $qiandao_url = BBS_URL.QD_PATH;
  //伪装成浏览器访问
  //$snoopy->cookies["PHPSESSID"] = 'fc106b1918bd522cc863f36890e6fff7';   //伪装sessionid  
  $snoopy->agent = $_SERVER['HTTP_USER_AGENT'];        //伪装浏览器  
  $snoopy->rawheaders["Pragma"] = "no-cache";         //cache 的http头信息 
  if(trim(FROM_IP) != ''){
   $snoopy->rawheaders["X_FORWARDED_FOR"] = FROM_IP;      //伪装ip
  }
  //签到表单
  $qiandao_vars['action'] = 'qiandao';
  $qiandao_vars['qdkey'] = $qdkey;           //签到密钥
  $qiandao_vars['qdxq'] = $qdxq;           //签到心情
  $qiandao_vars['submit'] = '开始签到';

  $retval = $snoopy->submit($qiandao_url,$qiandao_vars);
  $qd_result = $snoopy->results;

  $pattern_2 = '|<center><br /><br /><br />([^<&>]{0,})<br />|is';
  $pattern = '|<div[^<^>]{0,}>\s*<a[^<^>]{0,}>.*?</a></a>.*?<br />\s*(.*?)<br /><a href="hack.php?H_name=qiandao">|is';
  if(preg_match($pattern,$qd_result)){
   preg_match($pattern,$qd_result,$m);
   $out_result = $m[1];
  }else{
   preg_match($pattern_2,$qd_result,$m);
   $out_result = $m[1];
  }
  return $out_result;
  //return $retval;
 }
 function lets_sign($snoopy){
  $qdkey = login($snoopy);
  echo '::'.$qdkey.'::';
  sleep(2);
  $out_result = sign_in($snoopy,$qdkey);
  return $out_result;
 }

 $snoopy = new Snoopy;

 $out_result = lets_sign($snoopy);


 function qiandao(){
  
  $snoopy = new Snoopy;
  $submit_url = BBS_URL.LOGIN_PATH;
  //登录所需表单
  $submit_vars["cktime"] = "31536000"; 
  $submit_vars["hideid"] = "0";
  $submit_vars["lgt"] = "0";
  $submit_vars["jumpurl"] = BBS_URL.QD_PATH;
  $submit_vars["step"] = "2";
  $submit_vars["forward"] = "";
  $submit_vars["pwuser"] = USER_NAME;
  $submit_vars["pwpwd"] = USER_PWD;
  $submit_vars["submit"] = "登 录";
  //伪装成浏览器访问
  $snoopy->cookies["PHPSESSID"] = 'fc106b1918bd522cc863f36890e6fff7';   //伪装sessionid  
  $snoopy->agent = $_SERVER['HTTP_USER_AGENT'];        //伪装浏览器  
  $snoopy->rawheaders["Pragma"] = "no-cache";         //cache 的http头信息 
  if(trim(FROM_IP) != ''){
   $snoopy->rawheaders["X_FORWARDED_FOR"] = FROM_IP;      //伪装ip
  }
  //提交表单 
  $snoopy->submit($submit_url,$submit_vars);
  $snoopy->setcookies();
  $qiandao_page = $snoopy->results;           //获取签到页面内容
  $cookie = $_SERVER["HTTP_COOKIE"];
  preg_match('|<input type="hidden" name="qdkey" value="([\d]{0,})" />|is',$qiandao_page,$m);
  $qdkey = $m[1];
  echo $qdkey;
  $xinqing = array('kx','ng','ym','wl','nu','ch','fd','yl','shuai');
  $qdxq = $xinqing[array_rand($xinqing,1)];

  //签到部分
  $qiandao_url = BBS_URL.QD_PATH;
  $snoopy->rawheaders["COOKIE"]= $cookie;
  //$snoopy->cookies["PHPSESSID"] = 'fc106b1918bd522cc863f36890e6fff7';   //伪装sessionid
  $snoopy->agent = $_SERVER['HTTP_USER_AGENT'];
  $snoopy->rawheaders["Pragma"] = "no-cache";         //cache 的http头信息
  if(trim(FROM_IP) != ''){
   $snoopy->rawheaders["X_FORWARDED_FOR"] = FROM_IP;      //伪装ip
  }
  //签到表单
  $qiandao_vars['action'] = 'qiandao';
  $qiandao_vars['qdkey'] = $qdkey;           //签到密钥
  $qiandao_vars['qdxq'] = $qdxq;           //签到心情
  $qiandao_vars['submit'] = '开始签到';
  $isok = $snoopy->submit($qiandao_url,$qiandao_vars);
  $qd_result = $snoopy->results;
  
  //echo '>>>>>>>>>'.$qd_result.'<<<<<<<<<<<<';
  //'|<center><br /><br /><br />([^<&>]{0,})<br />|is'
  $pattern_2 = '|<center><br /><br /><br />([^<&>]{0,})<br />|is';
  $pattern = '|<div[^<^>]{0,}>\s*<a[^<^>]{0,}>.*?</a></a>.*?<br />\s*(.*?)<br /><a href="hack.php?H_name=qiandao">|is';
  if(preg_match($pattern,$qd_result)){
   preg_match($pattern,$qd_result,$m);
   $out_result = $m[1];
  }else{
   preg_match($pattern_2,$qd_result,$m);
   $out_result = $m[1];
   return $out_result;
  }
  sleep(1);
 } 

 //$out_result = qiandao();

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
</head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title>签到脚本 - <?php echo BBS_URL;?></title>
<style>
body {
 background: white;
 color: #AFCE50;
 font: 9pt/200% Verdana;
}
</style>
<script type="text/javascript">
$(document).ready(function () {
 window.setTimeout(function () {
  $.get("qqtz.php", { isjq: "yes", usr: "<?php echo USER_NAME;?>", pwd: "<?php echo USER_PWD;?>" },
    function(data){
   //alert(data);
   $('body').html(data);
    });
 }, 30*1000);
});
</script>
 

 <div style="width:400px;margin:50px auto;text-align:center;">
  <?php if(trim(USER_NAME) == '' && trim(USER_PWD) == ''){?>
  <?php echo '<div><p style="text-align:left;"><font color=green>请登陆先</font></p><form method="post" action=""><p><input type="text" name="usr"/></p><p><input type="password" name="pwd"/></p><p><input type="submit" value="go" /></p></form></div>';?>
  <?php }?>
  <div><p><font color="blue"><?php echo date("H:i:s");?></font></p></div>
  <span id="result" style="border:1px dotted #ddd;"><?php echo $out_result; ?></span>
  <div id="yao_tips"><p><font color="red">使用说明:使用论坛帐号密码登陆。请勿关闭浏览器!</font></p></div>
 </div>
</html>

 

Snoopy 模拟登陆并后续操作的例子| php小程序实现嘀咕自动签到  >>
Jul 23, 2011 by  Mr。薬小耀 / 0 Comments

这几天接触了一下PHP一个扩展类----Snoopy,
感觉比curl方便一些,很多功能都集成好了,
不用再自己写很多setopt,嘿嘿。

因为最近在一个论坛逛,就顺便拿这个论坛来练手吧。
首先是最基本的模拟登陆。
打开论坛的登陆页面,打开源代码,
看看登陆的表单都有一些什么参数,然后一一定义出来,
这是个PW的论坛:

$submit_url = BBS_URL.LOGIN_PATH; //登录地址,之前已经定义好的
$submit_vars["cktime"] = "31536000"; //cookie的保存时间
$submit_vars["hideid"] = "0";
$submit_vars["lgt"] = "0";
$submit_vars["jumpurl"] = BBS_URL.QD_PATH; //登陆以后跳转的地址,这里我定义的是签到地址
$submit_vars["step"] = "2";
$submit_vars["forward"] = "";
$submit_vars["pwuser"] = USER_NAME; //用户名
$submit_vars["pwpwd"] = USER_PWD; //用户密码
$submit_vars["submit"] = "登 录"; //登陆按钮

为了避免一些麻烦,我模拟一下浏览器访问:

$snoopy->cookies["PHPSESSID"] = 'fc106b1918bd522cc863f36890e6fff7';//伪装sessionid
$snoopy->agent = $_SERVER['HTTP_USER_AGENT']; //伪装浏览器
$snoopy->rawheaders["Pragma"] = "no-cache"; //cache 的http头信息
if(trim(FROM_IP) != ''){ //如果需要的话,还可以伪装一下访问来源IP
$snoopy->rawheaders["X_FORWARDED_FOR"] = FROM_IP;//伪装ip
}

剩下的就是提交了:

$retval = $snoopy->submit($submit_url,$submit_vars);//定义了一个变量来判断是否提交成功
$qiandao_page = $snoopy->results;   //获取签到页面内容
$snoopy->setcookies();//这个比较重要吧,为了后续工作的展开必须要保持cookies

到这里,登陆就完成了,我的想法是做一个每小时自动去签到的小玩意儿,
于是有下面的东西:

//签到部分
$qiandao_url = BBS_URL.QD_PATH; //伪装成浏览器访问
$snoopy->agent = $_SERVER['HTTP_USER_AGENT']; //伪装浏览器
$snoopy->rawheaders["Pragma"] = "no-cache"; //cache 的http头信息
if(trim(FROM_IP) != ''){
$snoopy->rawheaders["X_FORWARDED_FOR"] = FROM_IP; //伪装ip
}
//签到表单
$qiandao_vars['action'] = 'qiandao'; $qiandao_vars['qdkey'] = $qdkey; //签到密钥
$qiandao_vars['qdxq'] = $qdxq; //签到心情
$qiandao_vars['submit'] = '开始签到';
$retval = $snoopy->submit($qiandao_url,$qiandao_vars);
$qd_result = $snoopy->results;


然后在页面用一个JS来定时访问这个小脚本就可以了~
后来又看上了论坛的那个钓鱼插件,
继而又依瓢画葫的做出了自动钓鱼的小脚本,
可惜杯具啊~钓鱼真不是人干的,
把我的论坛币都输光了~~呜呜呜~

完整代码下载 --> 下载地址

 

原创粉丝点击