우선 이 방법은 상당히 위험 할 수 있습니다. 첨에 만들땐 그럴 의도가 아니었는데 만들고 나니까 완전히 피싱사이트에서 아주 쉽게 귀찮은 짓을 해결 할 만한 방법이네요.

그렇기 때문에 자세한 방법은 공개 하지 않고 원리만 이야기합니다. 능력이 있는 사람은 이렇게 말해도 대충 알아 들으실테고, 능력이 없는 분은 좀 더 공부 하신 후에 이런 수상한 분야에 도전하시기 바랍니다..

필요조건

서버에는 아파치에 Rewrite 모듈이 필요하고 PHP에는 CURL모듈이 필요합니다. 또 .htaccess 사용이 가능하도록 아파치 설정에서 Override 가 허용되어야합니다. 다른건 알아서 챙기시고..

작동 구조

구조는 아주 간단합니다.

Rewrite 엔진에 의해 자신의 도메인으로 접속하는 모든 페이지 주소를 한개의 .php 파일로 몰아서 넣습니다. 그런 후, 그 php 파일에서 요청한 서브디렉토리/파일명을 타겟 도메인에서 긁어 와야 합니다. 다시말해 RewriteRule ^(.*) 으로 한개의 php 파일에 rewrite.php?$1 등의 방법으로 뒷 주소에 대한 파라미터를 같이 넘겨준 후 rewrite.php 파일에서 타겟도메인의 $1 라는 서브 주소를 읽는 것입니다.

예를들어 목적지 사이트가 http://www.naver.com 이고, 내 도메인이 http://test.awhile.us 라고 가정을 한다면, http://test.awhile.us/css/navermain.css?20110502 으로 접속하면 반드시 http://www.naver.com/css/navermain.css?20110502 를 읽어오도록 해야합니다. 위의 방법으로 한다면 요청시 실제의 주소는 이렇게 됩니다.

http://test.awhile.us/rewrite.php?/css/navermain.css?20110502

이제 이 php 파일에서, CURL을 통해 http://www.naver.com/css/navermain.css?20110502 을 읽어오면 됩니다.

부가적인 튜닝

CURL을 이용한 이유는 좀더 정확하게 잘 작동하도록 하기 위함입니다.

  1. CURL모듈은 쿠키를 거의 완벽하게 지원합니다. 읽기/쓰기권한이 있는 파일명을 지정해두면 웹을 읽으면서 쿠키를 읽고 쓰고를 알아서 다 해주죠. 이 쿠키파일명을 어떻게 작성하냐(아이피, 세션이용 등)에 따라 사용자 각각의 환경을 잘 보여주는지 못보여주는지의 퀄리티가 달려있습니다.
  2. 헤더 조작입니다. 확장자에 따라, 페이지에 따라 서버에서 보내주는 헤더는 상황에 따라 바뀔 수 있습니다. 그에 따라 유동적으로 대처해야 하기 때문에 헤더도 받아서 열심히 조작해줘야합니다. CURL요청한 페이지에서 받은 헤더 문구를 가지고 적절히 조작한 후 Header 함수를 이용해서 헤더를 바꿔주겠죠.
  3. 긁어온 타 도메인 사이트의 내용에서, 타 도메인을 내 도메인으로 바꿔주는 작업을 해야합니다. 함수 1개로 끝나는 아주 단순한 내용이지만 아주 중요한 부분입니다. 이 작업으로 정말로 많은 것을, 그리고 정말로 중요한 것을 모두 해결 할 수 있을 것입니다.
  4. 입맛 튜닝.. 긁어온 HTML소스에 자바스크립트던 CSS던 아무 입맛에 맛는 소스를 곁들여 추가코딩하시면 더욱더 재밌습니다. 물론 아무데나 갖다 붙이면 안되고 정확한 위치에 있어야 하겠죠. 스크립트와 스타일태그는 </head> 앞에 온다던지..
  5. 외부에서 읽어 오지 않고 내 서버에 있는 파일들을 쓰기 위한 부가적인 튜닝. htaccess 파일을 조작해도 되고 php 파일을 조작해도 됩니다. 좀 더 정확하고 싶다면 htaccess 를 수정하고, 그냥 대충 이미지 한두개만 내 서버에서 갖다쓰고 싶으면 php 에서 예외를 둬서 수정하면 되겠죠.