크롤링 이 페이지 차단해도 괜찮을까요?
본문
간헐적으로 한 번씩 트래픽 초과가 되는데,
보면 항상 구글봇이고, /bbs/board.php 이 페이지가 거의 8~90% 차지하더라고요.
User-agent: Googlebot
Allow: /
Disallow: /bbs/board.php
이런 식으로 하면 혹시 구글 검색노출에 문제가 될까요?
답변 4
그럼 게시판을 아예 제외대상이 되는데... 트레픽 늘린게 낫지 않을까요?
차단하면 게시글 전체를 가져가지 못합니다.
그냥 두시는게..
가끔 내 게시글 키워드와 구글 검색 트랜드가 아다리가 맞을때가 있는데 그냥 두시는게 좋습니다.
구글 웹문서로 안나와도 된다면 차단하시구요
새글이 추가되거나 하면 봇이 벌떼 같이 들려들어서 트래픽 초과가 되어 버리더군요...
카페 24 쓰시면 아이피로 차단 할 수 있습니다.
몇개만 남겨 두고 구글 것들은 차단 하니 트래픽 초과가 되지 않았습니다...
완전히 막아 버리면 새로운 글들이 반영이 안되니 일부만 남겨 두는 것도 방법일 것입니다.
아이피는 계속 바뀔 것이니 봐 가면서 해보세요..
어떤 봇도 robots.txt만으로는 통제할 수 없습니다. < 사실 통제되지 않음.
서버(Nginx) 단에서 허용할 UA를 $is_trusted_bot 맵으로 식별,
허용할 봇(trusted_bot) 아니면 robots.txt 조차도 차단(필자의 경우)하며
크롤링을 허용할 페이지(URI)만 화이트리스트로 지정,
나머지는 403·444·429 등으로 차단 >>>
이 글은 경험에 의한 현실적인 대응책일 뿐입니다.
구글봇을 단순히 Disallow: /bbs/board.php로 막으면
게시판 전체가 검색 색인에서 제외되어 사이트 노출에 악영향일 수 있습니다.
저 같은 경우는 ‘허용할 페이지(URI)만 인덱싱 허용’ 방식으로 통제하고 있습니다.
서버(Nginx) 단에서 다음과 같이 세밀하게 제어해야 가능합니다.
허용할 주소만 map으로 지정해 두고,
구글·네이버 등 신뢰된 봇이더라도 그 외 URI를 요청하면 403으로 차단되도록 구성하는 것입니다.
예를 들어 아래처럼 설정합니다 : ( nginx 기준입니다.)
map $request_uri $is_sitemap_whitelist {
default 0;
~^/bbs/board\.php\?bo_table=notice&wr_id=1$ 1;
~^/bbs/board\.php\?bo_table=notice&wr_id=2$ 1;
}
if ($is_trusted_bot = 1) {
if ($is_sitemap_whitelist = 0) { return 403; }
}
이렇게 하여 구글등 허용된 봇들이라도 허용된 페이지만 접근되고,
게시판 목록·댓글 등 허용 않한 페이지 등은 색인이나 접근 자체를 제한합니다.
또한 이 구조를 보완하기 위해 전역 트래픽 제어와 게시판 일괄 제어를 병행합니다.
=전역 트래픽 제어:
limit_conn s_conn/conn과 limit_req s_user/uses를 이용해 동시 접속 수와 요청 속도를 제어합니다.
일정 한도를 넘으면 429(Too Many Requests)로 응답시켜 과도한 트래픽 유입을 차단합니다.
=게시판 PHP 일괄 제어:
/gate/.*_board_.*\.php 요청은 $allow_board_request = 0일 때 즉시 444로 차단하도록 하여
내부 정책이나 리퍼러 검증과 연동해 비정상 접근을 원천적으로 봉쇄합니다.
- /gate/.*_board_.* : 필자의 보드 폴더입니다. -
결과적으로, 단순히 “차단”하는 것이 아니라
정상 봇의 색인 범위를 허용된 URI(사용자 구성 맵)로 한정하고,
비정상 접근은 트래픽 레벨에서 차단하며,
게시판 로직은 정책 변수로 통제하는 다층 보안 구조를 사용하셔야 됩니다.
이 방식은 검색 노출은 유지하면서도
서버 부하와 크롤링 트래픽을 근본적으로 줄이는 가장 안전하고 효율적인 대응책이라 생각합니다.(경험)
※ 사실, 구글·네이버,빙 등의 크롤링 제재는 필수이여야 합니다.-(사견)
○ 필자 명암("https://glitter.kr")에 사용중인 서버단 화이트맵입니다. - 스크립 사용 권장함.
# whitelisted URLs for sitemap
map $request_uri $is_sitemap_whitelist { default 0;
~^/min_53g48164a0c8ca0db83af33fgh0e124_BMa83jeC_f9ae46cf7c940b1fghj096se0df4c0b7693ea0527dfn_53g48164a0c8ca0db83af33fgh0e124_BMa83jeC_f9ae46cf7c940b1fghj096se0df4c0b7693ea\.php$ 1;
~^/hwi/bike/btrek/?$ 1;
# . . .
# gate/.../board.php + notice, wr_id=1
~^/gate/_board_5348164a0c8ca0db83af330e124_BMa83WeC_e9ae46cf7c940b10963820df4c0b7693ea052754/board\.php\?(?:bo_table=notice&wr_id=1|wr_id=1&bo_table=notice)(?:&|$) 1;
# . . .
# _baoas/.../board.php + free, wr_id=3
~^/_baoas_5w48164a0c8ca0dbDgaf330e124_m3twQsyA_7fad575e3fp87860edFc46sb7O192hr767b2d3d9/board\.php\?(?:bo_table=free&wr_id=3|wr_id=3&bo_table=free)(?:&|$) 1;
# . . .
# _baoas/.../board.php + notice, wr_id=1..5
~^/_baoas_5w48164a0c8ca0dbDgaf330e124_m3twQsyA_7fad575e3fp87860edFc46sb7O192hr767b2d3d9/board\.php\?(?:bo_table=notice&wr_id=1|wr_id=1&bo_table=notice)(?:&|$) 1;
~^/_baoas_5w48164a0c8ca0dbDgaf330e124_m3twQsyA_7fad575e3fp87860edFc46sb7O192hr767b2d3d9/board\.php\?(?:bo_table=notice&wr_id=2|wr_id=2&bo_table=notice)(?:&|$) 1;
~^/_baoas_5w48164a0c8ca0dbDgaf330e124_m3twQsyA_7fad575e3fp87860edFc46sb7O192hr767b2d3d9/board\.php\?(?:bo_table=notice&wr_id=3|wr_id=3&bo_table=notice)(?:&|$) 1;
~^/_baoas_5w48164a0c8ca0dbDgaf330e124_m3twQsyA_7fad575e3fp87860edFc46sb7O192hr767b2d3d9/board\.php\?(?:bo_table=notice&wr_id=4|wr_id=4&bo_table=notice)(?:&|$) 1;
~^/_baoas_5w48164a0c8ca0dbDgaf330e124_m3twQsyA_7fad575e3fp87860edFc46sb7O192hr767b2d3d9/board\.php\?(?:bo_table=notice&wr_id=5|wr_id=5&bo_table=notice)(?:&|$) 1;
# . . .
# _baoas/.../board.php + gallery, wr_id=1
~^/_baoas_5w48164a0c8ca0dbDgaf330e124_m3twQsyA_7fad575e3fp87860edFc46sb7O192hr767b2d3d9/board\.php\?(?:bo_table=gallery&wr_id=1|wr_id=1&bo_table=gallery)(?:&|$) 1;
# . . .
}
※ 붙임 ※
위 방안은 운영자에게 해당 서버의 root 권한이 있는 환경을 전제로 합니다.