웹 관련 기획도서나 마케팅도서를 보면 포털이나 유명사이트의 예전 화면을 보여줍니다. 
예를 들면 2000년도의 다음 메인은 어떠했는데 지금은 이렇게 변해있다 등과 같이 말이죠.
"어떻게 예전 화면들을 가지고 있을까? 일일이 시간내서 캡쳐를 해두는걸까?"란 생각을 하다 만들어 보기로 했습니다.

첫째로 자바 GUI 툴을 생각했었는데 관련 지식이 없는 관계로 스킵!!

두번째로 java.url.net 패키지를 사용해서 소스를 얻어와 어떻게 해볼 요량이었는데... 소스를 얻어와서 어쩌겠다고?
URL 클래스난 URLConnection 클래스를 이용하면 소스를 얻어오는 것까지는 전혀 문제가 없습니다.
얻어온 소스로 어떻게 이미지를 만들 것이냐가 문제였죠.
해서 소스 자체로 이미지 만든다는 생각을 버리고 
캡쳐하길 원하는 사이트를 DB에 모으고 JSP에서 순차적으로 캡쳐하면 되겠구나 라는 생각을 했습니다.
어라, 근데 JSP 화면을 어떻게 캡쳐하지? 구글신공!!
http://blog.naver.com/ttggi7/100041555227에서 관련 소스를 발견했습니다. (이 님 무척 똑똑하신 듯 ㅋㅋ)
(경로와 파일명은 날짜와 사이트명 등을 이용해서 유니크하게...)

public void capture() {
try {
// 전체 화면 Capture
BufferedImage screencapture = new Robot()
.createScreenCapture(new Rectangle(Toolkit
.getDefaultToolkit().getScreenSize()));

// JPEG 저장.
File file = new File(
"C:/Tomcat 6.0/webapps/ROOT/capture/20091128/screencapture.jpg");
ImageIO.write(screencapture, "jpg", file);
} catch (HeadlessException e) {
e.printStackTrace();
} catch (AWTException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

간단하게 해결 되더군요.
두번째 방법을 정리를 해보면 URLConnection 클래스를 이용해 해당 사이트의 소스를 얻어와서 화면에 뿌려주고 -> 완성된 화면을 캡쳐한다.
문제가 발생했습니다.
소스를 그대로 뿌려주니 CSS와 JS 문서의 경로로 인해 화면이 일그러져 버렸습니다.
해서 URLConnection 클래스를 이용해 얻은 소스에 <base href='사이트주소'>를 추가해주는 것이었습니다.
그러니 대충 화면 일그러짐 없이 출력이 되었는데 간혹 JS 에러가 발생하더군요. (크로스 도메인에 대한 제약)
해서 세번재 방법을 생각했습니다.

세번째 방법은 URLConnection 클래스를 이용해 얻은 소스를 포기하는 것입니다.
삽질해서 접근한 소스를 버리니 아주 편한 길이 보였습니다. ㅡㅡ;;
그냥 iframe을 이용하는 것이지요.
<iframe width="1024" height="700" src="http://www.daum.net/"></iframe>
간단하고 CSS나 JS 에러 일어날 일 없고, 화면을 그대로 보여주니 좋더군요.
근데, URLConnection에 대한 미련 TT..TT 그래도 버리는 수밖에요.
(사실 버리지 않고 다른 프로그램을 짜는데 도움이 되었습니다. 
저의 프로젝트 경력에서 java.net.* 패키지를 이용할 일이 없었습니다.)
하지만 이 세번째 방법에도 문제점이 조금 있습니다.
capture() 메소드를 이용해서 캡쳐를 하게되면 딱 모니터 화면만큼만 캡쳐가 된다는 것이지요.
스크롤 되어 숨어있는 부분은.... 
해결 방법은 세가지 입니다.
1. 숨겨진 부분은 포기한다.
2. 소스로 해결한 방법을 찾아본다. (알툴바의 전체영역 캡쳐를 하고 싶습니다.)
3. 해상도 엄청 좋은 모니터를 구입한다.

위 내용의 프로그램 구현은 정말 심심해서 몸이 비틀어질 것 같을때 http://play.wifil.kr/에 구현을 하겠습니다.
DB에 목록을 구성해서 불러와 순차적으로 캡쳐하는 부분은 일반적인 것이니 금방 되겠지요.
그렇게 믿습니다!!


JSP 소스 : 별 내용이 없는지라....




  1. remembersh 2010.01.21 20:10

    안녕하세요. 혹시 구현하신 소스를 좀 구할 수 없을까요? 꼭 필요해서요.
    iframe으로 구현하신거요. 구현하신 jsp코드를 보고 싶습니다. onlyou95@naver.com으로 연락 주시면 감사하겠습니다.

    • BlogIcon 알통 2010.01.22 09:12 신고

      이제 겨우 한달 반 지났는데 가물가물하군요.
      어제 다른걸하다가 좀 더 정확하게 구현할 수 있는 방법을 찾았습니다.
      프로토타입에 있는 기능을 이용하면 되더라구요. (js부분)
      소스가 있으면 보내드릴께요

  2. hardc5r2 2011.01.17 14:58

    안녕하세요. 글쓰신 날짜를 보니 상당히 오래 되었지만
    혹시 구현하신 프로토 타입에 있는 기능을 이용해서
    구현하신 소스를 좀 구할 수 없을까요?
    hardc5re@naver.com으로 연락 주시면 감사하겠습니다.

  3. son 2014.11.01 13:30

    화면이 까맣게 캡쳐되는데 왜이런거죠ㅠㅠ