Sablog Models/인터넷·웹

네이버 블로그 포스트 내용을 plain text로 보기.

어­리 2009. 11. 28. 15:31

(이 글에는 쓰이는 시점의 네이버 블로그 시스템이 반영되어 있으므로,
여기서 소개하는 지침은 나중에 사용 불가능할 수도 있습니다.)


저작권을 준수하는 사람으로서 이런 걸 올리면 안 되지만,
기본적인 (X)HTML 예의마저 안 지키는 네이버는 종종 엿먹이고 싶은 상대다.

일단 마우스 우클릭 방지 스크립트를 무력화하는 프로그램에는

  • IETOY
  • Spell
  • 알툴바-_-

등등이 있다. 최근에 네이버에서 이것들을 거의 모두 막았다.

자바스크립트에서는 아래 툴이 잘 알려져 있다. 물론 이걸 무력화시키기도 한다.

javascript:
function r(d) {
    d.on-contextmenu=null;
    d.on-selectstart=null;
    d.on-dragstart=null;
    d.on-keydown=null;
    d.on-mousedown=null;
    d.body.on-contextmenu=null;
    d.body.on-selectstart=null;
    d.body.on-dragstart=null;
    d.body.on-keydown=null;
    d.body.on-mousedown=null;
};
function unify(w) {
    r(w.document);
    if(w.frames.length>0) {
        for(var i=0; i<w.frames.length; i++) {
            try {
                unify(w.frames[i].window);
            }
            catch(e) {}
        }
    }
};
unify(self);
alert('ok');
javascript:function r(d) {d.on-contextmenu=null;d.on-selectstart=null;d.on-dragstart=null;d.on-keydown=null;d.on-mousedown=null;d.body.on-contextmenu=null;d.body.on-selectstart=null;d.body.on-dragstart=null;d.body.on-keydown=null;d.body.on-mousedown=null;};function unify(w) {r(w.document);if(w.frames.length>0) {for(var i=0; i<w.frames.length; i++) {try {unify(w.frames[i].window);}catch(e) {}}}};unify(self);alert('ok');

이걸 주소창에 붙여넣고 실행시키며, 아예 즐겨찾기/책갈피에 등록하기도 한다.

뭐 이건 창과 방패의 싸움이라,
법적으로 클라이언트가 리버스 엔지니어링하는 것 자체를 금지하거나, (뭐 금지한다고 못하나..?)
HTML을 보내지 않고 미리 렌더링된 데이터를 보내지 않는 이상 해결할 수 없다.


네이버 블로그 포스트가 일반적인 방법으로 검색당하지조차 않는 현상은,

네이버 블로그 틀이 프레임셋 + 아이프레임 이중 구조를 갖고 있어서
일반적인 봇이 무시하기 때문에 일어난다.

하지만 브라우저의 모든 데이터는 클라이언트에 저장된다.
화면에 보이는 내용은 사실 컴퓨터가 네이버에서 가져왔던 것이란 말.

HTML 데이터를 읽을 수만 있으면 블로그 속살-_-로 들어갈 수 있다.

(이 포스트에 대한 간단한 설명은 http://blog.naver.com/wonderjune/10051716507에)


샘플은 내 네이버 블로그로 하려 했으나...
나는 우클릭 방지가 필요한 건 애초에 올리지를 않으니까 의미가 없다.

고로 희생양을 하나 만들었다.
http://blog.naver.com/shinyunho
예의상 모르는 사람을 공개처형할 수는 없고, 친구 블로그를 골랐다.

일단 블로그 글을 보려면 네이버에서 제공하는 포스트 고유 URL에 접속해야 한다.

타겟은 http://blog.naver.com/shinyunho/60092671785로 골랐다.


1. HTML Source 보기.

네이버 블로그는 메인에서 접속하든 포스트 URL로 접속하든 프레임셋으로 만들어져 있다.


내용이 없는 프레임을 하나 추가하는 것은,
브라우저 외의 프로그램에서 내용물을 인지하지 못하게 하는 전통적인 방법이다.

여기에서 필요한 것은 mainFrame뿐이니 이 주소로 들어가도록 하자.



2. NBlogMain.nhn

mainFrame이 가리키는 NBlogMain.nhn에서도...
링크의 원활한 이용을 위해 포스트의 내용은 iFrame을 통해 표시된다.

포스트 내용이 있는 iFrame은 "post-area"라는 div 태그 안에 들어 있다.
(각각의 div 태그 디자인은 블로그 디자인에 따라 CSS에서 조정되지만, 넘어가자.)
<div id="post-area">를 찾은 후 그 안의 iFrame이 가리키는 src(source)에 들어간다.

참고: 포스트의 내용을 담는 iFrame의 name/id는 "papermain"이지만,
이것을 타겟으로 삼는 앵커가 많으므로 div 태그를 찾는 것이 안전하다.

그런데 참고로 예전에 저 div 태그의 id는 "post-view"였다.
자동화 로봇을 막으려고 계속 바꾸는 거다. 모를 줄 알고? +_+
하는 수 없다. 또 달라지면 그냥 PostView.nhn을 찾아야지.


3. PostView.nhn

포스트에서 가져오고 싶은 그림이 있는데 포스트 내용이 방대하면 이건 대책이 없다.
이 때에도 그냥 찾기 기능을 애용한다.

다만 <img ... 태그를 찾고 다니는 건 별 효과가 없는 짓이다.
그 대신 그림에 인접한 글의 내용을 찾아 가는 노하우.


찾아낸 글 내용의 왼쪽에 <img> 태그의 일부가 보인다.


막상 말로 설명하니까 상당히 긴 글이 되어 버려서 그냥 동영상을 준비했다.
따로 만든 건 아니고 위의 과정을 그대로 녹화한 것이다.



여기까지... 복사 방지된 네이버 블로그 포스트 내용 보기는 끝난다.

이 포스트를 따라함으로써 생기는 저작권상의 문제에 본인은 책임질 수 없다.

다만 네이버 블로그에 깃든 이상한 문화가 사라지기를 빌 뿐이다.