Bookmark and Share

Lee's 程序人生

HTML CSS Javascript XML AJAX ATLAS C# C++ 数据结构 软件工程 设计模式 asp.net Java 数字图象处理 Sql 数据库
  博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

使用snoopy提交数据实现登陆

Posted on 2008-06-13 09:58  analyzer  阅读(1983)  评论(0编辑  收藏  举报

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

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

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


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

当然你也可以直接查看http://www.phpx.com/happy/logging.php?action=login的源代码来实现,不过这样更加方便把。这里,我们获取到目标和提交的数据,下一步就可以实现模拟登陆了。代码如下:
 1<? 
 2include "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
15function post($url, $data) {
16    
17    $url = parse_url($url);
18     if (!$urlreturn "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 (!$fpreturn "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';
61echo post($url, $data);
62*/
63
64?>
65
66Curl 
67
68php 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
84result.php (just for test) 
85<? 
86print_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<? 
2include "Snoopy.class.php"
3$snoopy = new Snoopy; 
4$snoopy->fetchform("http://www.phpx.com/happy/logging.php?action=login"); 
5print $snoopy->results; 
6?> 
7

当然你也可以直接查看http://www.phpx.com/happy/logging.php?action=login的源代码来实现,不过这样更加方便把。这里,我们获取到目标和提交的数据,下一步就可以实现模拟登陆了。代码如下:
 1<? 
 2include "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?> 
我要啦免费统计