jakrta의 common-httpclient를 이용해 사이월드의 미니홈피의 접속수를 올려보자..
참고로 사용하다가 생기는 모든문제는 책임안져준다..–;
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.*;
import org.apache.commons.httpclient.methods.multipart.*;
import org.apache.commons.httpclient.params.*;
import java.io.*;
public class HitUp {
private String tid;
private String main_url;
private String sub_url;
private String target_url;
private String user_agent = “Mozilla/4.0”;
// 미니홈피의 url을 입력으로 받는다.. http://www.cyworld.com/love2strue 같이 완전한 url이어야 함..
public void setMainURL(String url){
main_url = url;
}
public String getTid() throws Exception {
// Client를 생성
HttpClient client = new HttpClient();
// 사용할 메소드를 생성 – 접속할 url을 지정
GetMethod multi = new GetMethod(main_url);
// 헤더에 포함될 useragent (안쓰면,, common-httpclient-version)
multi.setRequestHeader(“User-Agent”, “Mozilla/4.0”);
// 서버에 접속
int statusCode = client.executeMethod(multi);
// 실행 결과를 받아오는 루틴이다.
byte buffer[] = null;
ByteArrayOutputStream sb = null;
InputStream response = null;
int bytes_read = 0;
if(multi.getStatusCode() == 200){
System.out.println(multi.getResponseBodyAsString());
buffer = new byte[128];
sb = new ByteArrayOutputStream();
response = multi.getResponseBodyAsStream();
for(bytes_read = response.read(buffer); bytes_read > -1; bytes_read = response.read(buffer))
sb.write(buffer, 0, bytes_read);
response.close();
multi.releaseConnection();
String result = sb.toString();
// 개인의 미니 홈피를 열기 위해서 tid를 따내는 작업
// 다음과 같은 문자열 틈에 있다.
int findex = result.indexOf(“?tid=”);
findex = findex + (“?tid=”.length());
int lindex = result.indexOf(“&urlstr”);
//System.out.println(“”+findex + “, ” + lindex);
tid = result.substring(findex, lindex);
System.out.println(“MiniHp Tid : ” + tid);
sb.close();
// tid따내기 성공
return tid;
} else {
System.out.println(“URL Fault!”);
System.exit(-1);
}
return null;
}
// 얻어진 tid로 미니홈피 페이지를 연다…
public void run(String tid) throws Exception {
if(tid == null){
tid = getTid();
}
HttpClient client = new HttpClient();
GetMethod multi = new GetMethod(“http://minihp.cyworld.nate.com/pims/main/pims_main4.asp?tid=”+tid+
“&domain=&cast=&dpop=&productseq=&gift_preview=&thema=&codi=&preview_effect=
&preview_effect_cd=&seq=&urlstr=&urlstrsub=&send_seq=&back=&item_seq=&act=
&Nyearmon=&board_no=&choco=&product_type=&effect_menu_sel=&toyearmonday=
&preview_news=&theme_seq=&theme_nm=&theme_cat=&catalog_id=&theme_from=
&contents_mode=&mana_type=&town_action”);
multi.setRequestHeader(“User-Agent”, user_agent);
int statusCode = client.executeMethod(multi);
byte buffer[] = null;
ByteArrayOutputStream sb = null;
InputStream response = null;
int bytes_read = 0;
if(multi.getStatusCode() == 200){
System.out.println(multi.getResponseBodyAsString());
buffer = new byte[128];
sb = new ByteArrayOutputStream();
response = multi.getResponseBodyAsStream();
for(bytes_read = response.read(buffer); bytes_read > -1; bytes_read = response.read(buffer))
sb.write(buffer, 0, bytes_read);
response.close();
multi.releaseConnection();
String result = sb.toString();
// 다음과 같은 응답이면 spam으로 차단된것임.. 1시간을 기둘렸다가 하던지.. 여기서는 종료..
if(result.indexOf(“/img/error/spam/alert_spam.gif”) != -1){
System.out.println(“Blocking 되었음 : spam차단”);
System.exit(-1);
}
sb.close();
} else {
System.out.println(“URL Fault!”);
System.exit(-1);
}
}
// HitUp http://www.cyworld.com/love2strue 100 과 같이 입력한다.
public static void main(String args[]){
if(args.length < 2){
System.out.println(“Useage : HitUp [url:string] [hitCount:int]”);
System.exit(-1);
}
System.out.println(“Target : ” + args[0]);
// 첫번째 인자는 미니홈피 주소.
String main_url = args[0];
// 올릴 카운트 수
int count = Integer.parseInt(args[1]);
System.out.println(“Hit Count : ” + args[1]);
String tid = null;
for(int i =0 ; i < count ; i++){
HitUp t = new HitUp();
t.setMainURL(main_url);
try{
t.run(tid);
System.out.println(“Current Count : ” + (i + 1));
// 반드시 기다린다. 대략 1분에서 2분정도
// 기다리지 않으면 spam으로 차단된다.
Thread.currentThread().sleep(100000);
}catch(Exception e){
e.printStackTrace();
}
}
}
내부적으로 2~3번의 프레임중에 미니홈피를 띄우게 되는데..
tid와 url만 알아내면 접속수올리는것은 문제도 아님..
다만 시간이 문제인데.. 접속주기가 짧을경우 spam으로 처리해서
계정을 block처리한다.. 아무래도 이러한 툴의 사용을 막고 싶었나보다..
보시다시피 해킹이 아닌 그냥 범용 client이다…-,ㅡ;
– 삶에찌들기전에 즐겨라.. –