php2012. 7. 24. 22:09

몇해전에 PHP 를 이용해서 멋진 라이브러리를 만든적이 있습니다.

아직도 애용하고 있죠 ㅎㅎ

웹페이지의 특정 정보를 얻기위해 로긴하고 게시물을 본다거나 글을 올리는 행위(?)를 꼭 브라우저를 쓰지않고 자동으로 동작하게 할수 없을까, 그리고 이걸 스케줄에 넣어서 자동화 할수 없을까 하다가 하나 만들게 된게 Autosurf 라는 php 라이브러리입니다.

당시에 잘 쓰지 않는 php 의 클래스를 써서리 멋지게 만들었지요.

그래서 무단 갈무리 해오기에 무척이나 좋게 되었고, 한때 유행하던 sms 보내는걸 제 홈피에 내가 서비스 하는것처럼 올릴수도 있었죠.

그당시 sms 가 무료라서 상당히 좋았었는데.. 지금은 유료화가 되서...

이걸 만들면서 http 통신 방식에 대해 많은걸 이해하게 되었답니다.


그 다음은 html 파서인데.. 이전에 펄(perl)을 좀 다루면서 펄에 내장 라이브러리로 있던 html 파서가 무척이나 마음에 들었는데.. 같은 방식으로 오히려 더 좋게 php 버전으로 만들었습니다.

html 태그 각 항목을 입맛대로 수정할수 있었지요.

autosurf 로 웹페이지를 가져온다음에 html파서로 정보 변경해서 제 홈피에 올리는 불펌.. 이랄까.. 그외에도 참 많이 애용 되고 있답니다.

Autosurf 소스 받기
autosurf.php 내용 보기
Html Parse 소스 받기


AutoSurf 1.0 Beta1

AutoSurf 는 자동으로 웹서핑을 할수 있는 프로그램입니다.
예들 들어 우리가 웹브라우저를 통해서 웹페이지를 서핑하는걸 프로그램으로
처리하는거지요.
쿠키/섹션을 이용한 인증처리도 통과가 가능합니다.
사용시에는 간단한 스크립터를 사용하면됩니다.

이걸 이용한다면, 문자메세지 전송프로그램도 제작가능하겠지요.
상대서버가 인증을 거치더라도 가능합니다.
특별한 경우를 제외하고는 자동웹서핑이 가능합니다.
특별한 경우라는건, 웹페이지가 자바스크립터를 이용해 쿠키세팅할때와
웹서버인증(입력폼이 뜨는..)에서는 아직 지원안합니다.

동작방식은, GET 과 POST 두개를 이용합니다.

라이브러리 사용법
require "autosurf.php";

$a = new autosurf();
$a->set_key("변수명", "값");
$a->set_key("변수명", "값");
$a->cfg_run("스크립터파일");


스크립터 명령어들..
debug: (yes/no) - http header 송신/수신을 보여줍니다. 가장상단에 한번적으시면 됩니다.
url: (domain) - 접속 주소
retry_num: (숫자) - 재전송 횟수. retry 명령어의 문자열을 만나면 재전송한다. form_action: (path 포함파일명) - 읽을 html 파일 혹은 디렉토리, http url은 제외 (

태그와 같음)
form_method: (get/post) - 메세지 전송양식( 태그와 같음) get 혹은 post
form_input: (key=value) - 파라메터 값전송( 태그화 같음)
show_html: (yes/no) - 전송받은 페이지 출력여부
retry: (문자열) - 결과 페이지 출력에 이 문자열을 만나면 재전송한다.


예제1)
# http://ping.dongman.pe.kr/new/main.php 로 접속한후 메세지를 보여줍니다.

- dongman.cfg 파일
debug: no

url: ping.dongman.pe.kr
form_action: /new/main.php
form_method: get
show_html: yes

- dongman.php 실행 프로그램
require "autosurf.php";

$a = new autosurf();
$a->cfg_run("dongman.cfg");

예제2)
# 라이코스를 통한 문자메세지 전송 스크립터 예제입니다.
아이디와 패스워드는 XXX 로 표현했습니다.
먼저 oneid.lycos.co.kr 로 접속하여 인증을 통과합니다.
debug: no 를 통해 http 헤더값을 출혁하지 않습니다.
각 url 접속시 show_html: yes 값을 주지않으면 페이지내용을 출력하지않습니다.
인증후 mobile-mail.lycos.co.kr 로 접속후 메세지를 전송합니다.
메세지 보낼시 [receiver], [recall1] 등등 괄호가 보이는건 변수입니다.

- lycos.cfg 스크립터 파일
debug: no

url: oneid.lycos.co.kr
form_action: /logon.jsp
form_method: post
form_input: LOGIN=YES
form_input: SOURCE=MMAIL
form_input: ID=XXXXX
form_input: PASSWD=XXXXX

url: mobile-mail.lycos.co.kr
form_action: /Korean/message/send_msg_final.asp
form_method: post
form_input: receiver=[receiver]
form_input: recall1=[recall1]
form_input: recall2=[recall2]
form_input: recall3=[recall3]
form_input: ResOrNot=soon
form_input: content=[content]
form_input: mycount=[mycount]
form_input: current_date=[current_date]
form_input: current_time=[current_time]
show_html: no 


- sms.php 실행 프로그램
require "autosurf.php";

$a = new autosurf();
$a->set_key("receiver", $sms_num1);
$a->set_key("recall1", $num1);
$a->set_key("recall2", $num2);
$a->set_key("recall3", $num3);
$a->set_key("content", $sms_message);
$a->set_key("mycount", strlen($sms_message));
$a->set_key("current_date", date("Ymd"));
$a->set_key("current_time", date("Hi"));
$a->cfg_run("lycos.cfg");

Posted by 다오나무