Code Metaphor

Programming, Writing, Reading, Thoughts…

KT 메가패스의 인증 자동화

집에서 사용하는 ISP가 KT 메가패스인데, 언제부터인가 일정 시간이 지나면 모든 HTTP 접속을 차단하고 자기네 인증 페이지로 넘겨버린다. 거기서 인증을 하면 그 뒤로는 다시 아무 문제 없이 HTTP 사용이 가능하다. 문제는 내가 웹 브라우저가 아닌 것으로도 HTTP를 사용하기 때문에—예를 들면 MSN이나, 내가 직접 작성한 스크립트들—그런 것들은 얼핏 보기에 불가사의하게 오작동을 하는 것처럼 보여서 한참 헤매기 십상이라는 점이다. 그래서 간단하게 자동으로 인증하는 스크립트를 만들었다.

#!/usr/bin/env perl
use WWW::Mechanize;
my $mech = new WWW::Mechanize;

$mech->get('http://daum.net/');

exit unless $mech->content() =~ /Please wait while you are redirected/i;

$mech->content() =~ /\d+;\s*url=(https?:\/\/[^"]+)/i;
$mech->get($1);

$mech->submit_form(
    form_number => 2,
    fields    => {
        userID => '<YOUR ID GOES HERE>',
        userPW => '<YOUR PASSWORD GOES HERE>'
    }
);

WWW::Mechanize 모듈을 사용하면 이런 종류의 문제는 매우 쉽게 해결된다. 이런 스크립트를 만든 후, cron을 이용해 주기적으로 실행하게 했다.

# m    h  dom mon dow   command
  */20 *  *   *   *     /Users/dahlia/bin/auth-megapass.pl
  @reboot               /Users/dahlia/bin/auth-megapass.pl

20분 주기로 실행한다고 해도, 내가 당장 컴퓨터를 깨웠을 때는 인증이 바로 되지 않는다. 나는 Mac을 사용하는데, 컴퓨터를 거의 끄지 않는 대신 잠자기(sleep)를 주로 사용한다. 하지만 잠자기에서 깼을 때는 crontab의 @reboot에 걸린 스크립트가 실행되지 않는다(cron 데몬이 다시 켜지거나 하는 것도 아니기 때문일 것이다). 잠자기에서 깨어났을 때의 이벤트를 잡는 방법을 두 시간 이상 검색해봤는데, 몇 가지 나온 방법(AppleScript에서 pmgtwake 이벤트 사용하기 등) 모두 제대로 동작하지 않는다. PowerPC Mac에서만 되는 것 같기도 하다.

This entry was posted on December 11, 2008 at 12:25 AM. You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.

3 Responses to “KT 메가패스의 인증 자동화”

  1. 大山 Says:

    저도 궁금해서 한 번 검색해 봤는데, launchd도 sleep/wake 콜백을 지원하지는 않는군요. 코코아 notification을 사용하는 방법 밖에는 없어보입니다. http://developer.apple.com/qa/qa2004/qa1340.html

  2. 홍민희 Says:

    그런 방법이 있었군요. 감사합니다! 오랜만에 Cocoa 프로그래밍을 해봐야겠네요.

  3. 가우리 Says:

    저거 KT 신인증으로 생긴 겁니다.

    저거 원래 한번만 하면 인증이 되는데요…

    접속하는 맥(Mac Address)가 변경되면 나오더라고요.

    그래서 저의 맥북 맥을 공유기에다가 물려서 인증 때려놓으니까 안나옵니다.

Powered by WordPress. Styled by Hong, MinHee. XML Feed, Comments XML Feed.