使用snoopy提交数据实现登陆

这里我们具体讲讲如何使用snoopy来模拟登陆。
    模拟登陆可以用curl或者socket来实现,当curl需要服务器相应的启用curl module,自己socket实现相对比较麻烦,使用snoopy就简单了很多啦。

    在这里,我们使用喜悦国际村做为例子。(^_^,纯属研究)

    首先,我们要获取到登陆需要发送什么字段,目标地址是什么。这里我们使用snoopy的fetchform来实现。


1 <?
2 include " Snoopy.class.php " ;
3 $snoopy = new Snoopy;
4 $snoopy -> fetchform( " http://www.phpx.com/happy/logging.php?action=login " );
5 print $snoopy -> results;
6 ?>
7

当然你也可以直接查看http://www.phpx.com/happy/logging.php?action=login的源代码来实现,不过这样更加方便把。这里,我们获取到目标和提交的数据,下一步就可以实现模拟登陆了。代码如下:
1 <?
2 include " Snoopy.class.php " ;
3 $snoopy = new Snoopy;
4 $submit_url = " http://www.phpx.com/happy/logging.php?action=login " ;
5     
6     $submit_vars [ " loginmode " ] = " normal " ;
7     $submit_vars [ " styleid " ] = " 1 " ;
8     $submit_vars [ " cookietime " ] = " 315360000 " ;
9     $submit_vars [ " loginfield " ] = " username " ;
10     $submit_vars [ " username " ] = " ******** " ; // 你的用户名
11     $submit_vars [ " password " ] = " ******* " // 你的密码
12     $submit_vars [ " questionid " ] = " 0 " ;
13     $submit_vars [ " answer " ] = "" ;    
14     $submit_vars [ " loginsubmit " ] = " 提 &nbsp; 交 " ;    
15     $snoopy -> submit( $submit_url , $submit_vars );
16     print $snoopy -> results;
17
18 ?>
19

^_^,是不是显示你已经登陆了?使用snoopy就是这么简单!

fsockopen和curl都可以做php自动提交表单


1 <? php
2 /* -----------------------------------------------------------
3 *功能:使用PHP socke 向指定页面提交数据
4 *
5 *作者:Honghe.c
6 *
7 *说明:post($url, $data)
8 *
9 *       $url     = 'http://www.xxx.com:8080/login.php';
10 *       $data[user] = 'hong';
11 *       $data[pass] = 'xowldo';
12 *       echo post($url, $data);
13 *----------------------------------------------------------- */
14
15 function post( $url , $data ) {
16    
17     $url = parse_url ( $url );
18      if ( ! $url ) return " couldn't parse url " ;
19      if ( ! isset ( $url [ ' port ' ])) { $url [ ' port ' ] = "" ; }
20      if ( ! isset ( $url [ ' query ' ])) { $url [ ' query ' ] = "" ; }
21    
22     $encoded = "" ;
23    
24      while ( list ( $k , $v ) = each ( $data )) {
25         $encoded .= ( $encoded ? " & " : "" );
26         $encoded .= rawurlencode ( $k ) . " = " . rawurlencode ( $v );
27      }
28    
29     $fp = fsockopen ( $url [ ' host ' ] , $url [ ' port ' ] ? $url [ ' port ' ] : 80 );
30      if ( ! $fp ) return " Failed to open socket to $url [host] " ;
31    
32     fputs ( $fp , sprintf ( " POST %s%s%s HTTP/1.0n " , $url [ ' path ' ] , $url [ ' query ' ] ? " ? " : "" , $url [ ' query ' ]));
33     fputs ( $fp , " Host: $url [host]n " );
34     fputs ( $fp , " Content-type: application/x-www-form-urlencodedn " );
35     fputs ( $fp , " Content-length: " . strlen ( $encoded ) . " n " );
36     fputs ( $fp , " Connection: closenn " );
37    
38     fputs ( $fp , " $encodedn " );
39    
40     $line = fgets ( $fp , 1024 );
41      if ( ! eregi ( " ^HTTP/1.. 200 " , $line )) return ;
42    
43     $results = "" ; $inheader = 1 ;
44      while ( ! feof ( $fp )) {
45         $line = fgets ( $fp , 1024 );
46          if ( $inheader && ( $line == " n " || $line == " rn " )) {
47         $inheader = 0 ;
48      }
49      elseif ( ! $inheader ) {
50         $results .= $line ;
51      }
52      }
53     fclose ( $fp );
54    
55      return $results ;
56 }
57
58 /*
59 $url = 'http://video.xxx.com:80/game_vm.php';
60 $data['gid'] = '1';
61 echo post($url, $data);
62 */
63
64 ?>
65
66 Curl
67
68 php Code :
69 <?
70    $url = ' http://localhost/curl/result.php ' ;
71    $params = " param=123&param2=333 " ; // What will be posted
72    $user_agent = " Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0) " ;
73    $ch = curl_init();
74    curl_setopt( $ch , CURLOPT_POST , 1 );
75    curl_setopt( $ch , CURLOPT_POSTFIELDS , $params );
76    curl_setopt( $ch , CURLOPT_URL , $url );
77    curl_setopt( $ch , CURLOPT_USERAGENT , $user_agent );
78    curl_setopt( $ch , CURLOPT_RETURNTRANSFER , 1 );
79    $result = curl_exec ( $ch ); // execut
80    curl_close ( $ch );
81    echo " Results: <br> " . $result ;
82 ?>
83
84 result . php (just for test)
85 <?
86 print_r ( $_POST );
87 ?>
88
89

PS:1.You can download Curl library in http://pear.php.net
   2.You can open the "php.ini" and search "extension=php_curl.dll".Then delete semicolon at this line.

使用snoopy提交数据实现登陆
原文地址:http://www.phpobject.net/blog/read.php/91.htm
下载地址:下载文件 Snoopy 1.2.3
    首先,我们要获取到登陆需要发送什么字段,目标地址是什么。这里我们使用snoopy的fetchform来实现。

1 <?
2 include " Snoopy.class.php " ;
3 $snoopy = new Snoopy;
4 $snoopy -> fetchform( " http://www.phpx.com/happy/logging.php?action=login " );
5 print $snoopy -> results;
6 ?>
7

当然你也可以直接查看http://www.phpx.com/happy/logging.php?action=login的源代码来实现,不过这样更加方便把。这里,我们获取到目标和提交的数据,下一步就可以实现模拟登陆了。代码如下:
1 <?
2 include " Snoopy.class.php " ;
3 $snoopy = new Snoopy;
4 $submit_url = " http://www.phpx.com/happy/logging.php?action=login " ;
5     
6     $submit_vars [ " loginmode " ] = " normal " ;
7     $submit_vars [ " styleid " ] = " 1 " ;
8     $submit_vars [ " cookietime " ] = " 315360000 " ;
9     $submit_vars [ " loginfield " ] = " username " ;
10     $submit_vars [ " username " ] = " ******** " ; // 你的用户名
11     $submit_vars [ " password " ] = " ******* " // 你的密码
12     $submit_vars [ " questionid " ] = " 0 " ;
13     $submit_vars [ " answer " ] = "" ;    
14     $submit_vars [ " loginsubmit " ] = " 提 &nbsp; 交 " ;    
15     $snoopy -> submit( $submit_url , $submit_vars );
16      print $snoopy -> results;
17
18 ?>
分类: PHP
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值