프로그램개발/ServerSide(PHP,Node.js)
[PHP] 검색엔진 로봇 크롤링 방지
크레도스
2018. 8. 24. 15:25
출처 : http://blog.devez.net/275
구글봇 같은 검색엔진 로봇이 페이지를 크롤링해가는 것은 페이지를 노출하는데 도움이 되지만 관리자페이지 같이 보안이 필요한 페이지의 경우 크롤링을 하지 않도록 설정해야한다.
robots.txt
사이트 전체를 크롤링하지 않으려면 사이트의 root폴더에 robots.txt를 추가하고 크롤링을 하지 않도록 다음과 같이 내용을 입력한다.
User-agent: * Disallow: /
참고로 크롤링 로봇은 사이트이 root폴더에서만 robots.txt파일을 읽기 때문에 하위 폴더는 robots.txt파일을 추가해도 적용도지 않는다.
메타태그 추가
페이지별로 크롤링을 방지하려면 meta태그에 robots키를 추가하고 noindex, follow를 입력한다.
1 2 3 4 5 6 | < head > < meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" /> <!--크롤링 금지, 인덱싱 금지 --> < meta name = "robots" content = "noindex, follow" > < title >HTML sample</ title > </ head > |
IP제한
robots.txt를 추가하고 meta태그에 설정하는 방법은 로봇에게 크롤링하지 말 것을 알려주는 역할만 할 뿐 물리적으로 접근을 막지 못한다.
따라서 잘 만들어진 로봇이 아니라면 페이지를 가져갈 수도 있다는 뜻이다. 이런 경우를 대비해서 세션 등을 이용 접근을 제한하는 방법도 고려해야 한다.
세션을 이용한 인증 방법은 http://blog.goooood.net/88 참고
지정된 장소에서 접근하고 별도 인증 방법을 구현하기 어렵다면 IP로 제한하는 방법을 사용해도 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <head> <meta http-equiv= "Content-Type" content= "text/html; charset=utf-8" /> <!--크롤링 금지, 인덱싱 금지 --> <meta name= "robots" content= "noindex, follow" > <title>HTML sample</title> </head> <body> <?php // 지정된 아이피가 아니라면 종료 if ( "100.101.102.103" != $_SERVER [ 'REMOTE_ADDR' ]) { echo "<p>Authentication Error</p>" ; echo "</body></html>" ; exit (0); } ?> </body>
|