본문 바로가기

Computer/Lang

블로그 무단스크랩방지하기 (htaccess Generator)

http://skysummer.com/176
내 블로그 무단 스크랩 방지하기. (.htaccess Generator)

(블러그무단스크랩을 방지하기 위한 다양한 방법을 소개하고 있다.
글과 이미지를스크랩하는가를 확인해볼수있다.
이미지를뜨지않게 하고 다른곳으로 강제이동할수도 있다.또는임의이미지가보이게 할수도 있다.

설치형 블로그를 운영하는 입장에서는 트래픽 1바이트까지도 모두 돈이므로, 무단 스크랩은 직/간접적으로 블로거에게 피해를 준다..웹 계정과 서버에 대한 다소간의 지식이 있는 유저라면 .htaccess 파일을 이용하여 이러한 문제를 해결하는데, 일반 초보자는 익숙하지 못하여 어려움을 호소하는 경우가 종종 있다..
이러한 분들에게 반가운 소식이 있으니, 별 다른 지식 없이 클릭 몇 번만으로 간단하게 온라인 상에서 .htaccess 파일을 만들어 주는 곳이다..

Hypertext Access의 약칭으로 분산 설정 파일(distributed configuration files)이라고도 지칭되며, 디렉토리별로 접근을 설정할 수 있다.
http://en.wikipedia.org/wiki/.htaccess
테터 블로그를 설치하면 자신의 계정 맨 상위 디렉토리에 위치하여 있다..
숨김파일로 지정되어 있으므로 FTP로 접속시 모든 파일이 보이게 설정해야 하며, 내 PC로 전송하여 메모장 등의 텍스트 에디터로 편집할 수 있다..
.htaccess는 하위 폴더에도 영향을 주므로, 최상위 폴더에 하나만 만들어 주면 그 룰이 모든 하위 폴더에도 미친다..

1) Htaccess Disable Hotlinking Code Generator
위에 언급한 이미지 스크랩 방지를 위한 .htaccess 파일을 생성해 주는 곳이다
http://www.htmlbasix.com/disablehotlinking.shtml

(2) .htaccess Generator
.htaccess 와 .htpasswd를 생성하여 특정 폴더를 비밀로 지정할 수 있게 해 주는 곳이다..
이렇게 비밀로 지정된 폴더는 암호를 알고 있는 사람만이 접근할 수 있다..
http://www.webmaster-toolkit.com/htaccess-generator.shtml

3) .htaccess Generator
바로 위에 링크한 곳과 비슷하게 특정 폴더를 비밀로 하는 .htpasswd 파일을 만들어 주는 곳이다..
http://developers.evrsoft.com/tools-htaccess-generator.shtml

4) .htaccess File Generator
아파치용 .htaccess 파일을 만들어 주는 곳이다..
http://cooletips.de/htaccess/

출처 : 위드파트너





출처 : http://cafe.naver.com/q69/115284


개인 계정에서 블로그등의 사이트를 운영하시는 분들 중 가끔 외부에서의 컨텐츠 직링크로 인해 트래픽 초과에 걸리시는 분들이 많습니다. 트래픽 문제가 아니더라도, 무단 링크로 인해 저작권을 침해받는 경우도 있겠죠.
이를 해결하기 위해 레퍼러비교 같은 방법도 쓰곤 하는데, 아마 .htaccess 파일을 이용한 것도 많이들 아실 겁니다.

간단히, .htaccess와 워터마킹 기술을 이용해 이미지 링크 제어를 하는 법을 소개합니다.

일단, 이미지들이 저장되는 디렉토리에 .htaccess파일을 만듭니다. (이미 존재한다면 아래의 소스를 마지막에 추가하시면 됩니다.)

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} .*jpg$|.*gif$|.*png$ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !explug\.com [NC]
RewriteCond %{HTTP_REFERER} !eouia0\. [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]
RewriteRule (.*) image.php?image=$1

...........
잠깐 설명을 하자면,

RewriteCond %{HTTP_REFERER} !explug\.com [NC]
RewriteCond %{HTTP_REFERER} !eouia0\. [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !search\?q=cache [NC]

이 부분에 링크를 허용할 URL들을 기재합니다. 정규식 패턴이므로 잘 알아서.. :)
위의 예의 경우 explug.com, eouia0가 포함되는 사이트, google 등에 링크를 허용한 경우입니다. 이 경우에는 원본 이미지를 마음대로 가져다 쓸 수 있습니다.
그외의 URL에서 링크가 걸릴 경우에는

RewriteRule (.*) image.php?image=$1

에 따라, image.php?image=파일이름 으로 리다이렉트됩니다. 만약 그냥 링크 자체를 끊고 싶으시다면 여기에 아무거나 써주셔도 되지요.

이제 워터마킹 처리를 위해 image.php를 작성합니다. GD라이브러리를 사용했으므로 GD가 사용가능한 계정이어야 합니다.

<?
define ("WATERMARK", "watermark.jpg");

header("Content-type: image/jpeg");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

$pic = strip_tags( $_GET['image'] );

$image_url = urldecode($pic);

if (!@fopen($image_url, "r")) {
    $dst_img = imagecreatefromjpeg(WATERMARK);
    $res = imagejpeg($dst_img, "", 100);
    die();
}

$file = pathinfo($image_url);
switch(strtoupper($file["extension"])) {
    case "JPG":
        $src_img = imagecreatefromjpeg($image_url);
        break;
    case "GIF":
        $src_img = imagecreatefromgif($image_url);
        break;
    case "PNG":
        $src_img = imagecreatefrompng($image_url);
        break;
}

$src_w = imagesx($src_img);
$src_h = imagesy($src_img);

$portion = $src_h / $src_w;
$dest_w = 300;
$dest_h = round($dest_w * $portion);

$dst_img = imagecreatetruecolor($dest_w, $dest_h);
imagecopyresized($dst_img, $src_img, 0, 0, 0, 0, $dest_w, $dest_h, $src_w, $src_h);

$watermark = imagecreatefromjpeg(WATERMARK);

$watermark_w = imagesx($watermark);
$watermark_h = imagesy($watermark);

$overlay_img = imagecreatetruecolor($watermark_w, $watermark_h);
imagecopy($overlay_img, $watermark, 0,0,0,0, $watermark_w, $watermark_h);
imagedestroy($watermark);

$white = imagecolorallocate($overlay_img, 0xFF, 0xFF, 0xFF);
imagecolortransparent($overlay_img, $white);

$offsetX = $dest_w - $watermark_w - 3;
$offsetY = $dest_h - $watermark_h - 3;

imagecopymerge($dst_img,$overlay_img,$offsetX,$offsetY,0,0,$watermark_w,$watermark_h, 100);
imagedestroy($overlay_img);

$res = imagejpeg($dst_img, "", 100);
imagedestroy($dst_img);
?>

실행 예는 링크를 보시면 이해하실 수 있을 겁니다. 링크를 허용한 사이트에서는 원본이, 링크를 허용하지 않은 사이트에서는 image.php에 의해 워터마크처리된 이미지로 링크가 걸리게 됩니다. 여기에서는 예를 위해 워터마킹 처리된 이미지의 사이즈를 가로 300으로 고정시켰지만 이 부분은 적당히 소스를 고치시면 원하는 대로 적용시키실 수 있으실 겁니다.