programfan注册机的实现
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) {
AutoRegister ar = new AutoRegister();
try {
/**
* 帐号和密码都是 knockerkao
* 当然,当你看到这个代码的时候knockerkao早就被我注册了
* 对了,顺便提醒一句,你起的帐号名必须要超过7个字符以上
* 否则会和我的 Content-Length: 256 对不上
* 因为你至少要超过这个数字才能正确被服务器识别
*/
ar.register("knockerkao","www.programfan.com",80);
} catch (FileNotFoundException ex) {
System.out.println( "找不到文件: "+ex.getMessage() );
}
}
}
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) {
AutoRegister ar = new AutoRegister();
try {
/**
* 帐号和密码都是 knockerkao
* 当然,当你看到这个代码的时候knockerkao早就被我注册了
* 对了,顺便提醒一句,你起的帐号名必须要超过7个字符以上
* 否则会和我的 Content-Length: 256 对不上
* 因为你至少要超过这个数字才能正确被服务器识别
*/
ar.register("knockerkao","www.programfan.com",80);
} catch (FileNotFoundException ex) {
System.out.println( "找不到文件: "+ex.getMessage() );
}
}
}
搜索更多相关的解决方案:
programfan 注册机
----------------解决方案--------------------------------------------------------
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
以上是 programfan_hacker_register.txt 这个文件的内容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
这是我在 openSuse10.2下用伪代理截取FireFox2.0发送给programfan注册信息的http header
不知道在windows下能不能用,如果不能我再给出windows下截取ie发送的 http header
----------------解决方案--------------------------------------------------------
能用,HTTP在IE和FF都是一样的
不错,终于整理出去了,不过有时候应该写个通过版的,那就爽了
----------------解决方案--------------------------------------------------------
通用版有个问题就是要解析对方的<html>代码
否则你怎么构造<form>提交字段啊
虽然解析<html>代码不难,但是也是要花费时间的,live41正好在研究这个方向
有机会我们一起讨论吧
----------------解决方案--------------------------------------------------------
一般比如动网的论坛它的FORM都是一样的
所以我们要把这些版本的论坛搞清楚就可以了
还有些论坛是discuz版的,反正论坛的模版都是这几个而已
----------------解决方案--------------------------------------------------------
那个灌水机的代码呢
----------------解决方案--------------------------------------------------------
不就在上面吗
----------------解决方案--------------------------------------------------------
上面是注册机的,大家先能用这个注册机我再方灌水机上来
----------------解决方案--------------------------------------------------------
不是注册机么
----------------解决方案--------------------------------------------------------
不急,灌水机他在整理呢
----------------解决方案--------------------------------------------------------