이전부터 도메인 지수가 높은 사이트가 공통적으로 겪는 문제가 하나 있습니다. 바로 내부 검색을 활용한 스팸 검색 노출이 발생하고 있는 겁니다. 이러한 내부 검색 스팸 방식은 국내를 넘어 해외 사이트에서도 동일하게 적용되고 있으며, 아래와 같은 형식으로 불법 광고가 이뤄지고 있습니다.
실제로 wordpress 문의 중 사이트 내부 검색을 활용한 스팸에 대해 문의하는 글이 종종 올라옵니다. 문제는 wordpress로 만들어진 사이트가 아닌, 모든 사이트가 불법 광고의 대상이 될 수 있습니다. 그렇다면 이러한 스팸 방식을 막을 수 있을까요?
결론부터 말씀드리면, 상황에 따라 다릅니다. 사이트 내부 검색을 활용한 스팸은 robots.txt로 막을 수 있습니다. 하지만 검색 결과가 중요한 이커머스 플랫폼이라면 내부 검색을 robots.txt로 막는 것이 어렵습니다. 검색 결과가 중요하지 않다면, robots.txt의 검색 루트가 수집되지 않도록 요청해 어느정도는 막을 수 있습니다.
이번 포스팅을 읽으면 좋은 분들 1. 사이트 내부 검색 스팸으로 문제를 겪는 분. 2. robots.txt의 와일드카드 문자(* , $) 대한 이해가 필요한 분. 3. SEO에서 sub-domain과 sub-directory 차이가 궁금한 분.
내부 검색 스팸 방지 방법 - robots.txt 활용
disallow : mkt52.com/search=*
내부 검색을 활용한 스팸 방식을 막는 방법 중 가장 간단한건 사이트의 robots.txt를 수정하는 겁니다. 스팸이 발생하는 검색 결과 페이지를 검색 엔진이 수집하지 못하게 하면 됩니다. robots.txt에 위와 같이 검색 결과를 막는 경우, 내부 검색 스팸은 간단하게 막을 수 있습니다.
robots.txt의 disallow는 무엇인가?
위 예시 robots.txt의 내용을 조금 살펴보면 아래와 같습니다.
disallow 검색엔진에게 수집하지 말아야할 위치를 알려줍니다.
mkt52.com/search= 수집 거부 위치로 내 도메인의 search가 있는 것을 의미합니다.
search=* search는 검색 url로 대부분 검색어가 함께 존재합니다. 해당 경우 와일드카드 *를 사용해 뒤에 어떤 값이든 있다면 수집을 거부하는 내용입니다.
즉, disallow와 와일드카드*로 내 검색 결과는 수집하지 말라고 검색 엔진에게 알려주는 robots.txt입니다.
하지만 위 방법은 장단점이 존재합니다.
장점 검색을 기반으로 한 스팸 방식을 차단할 수 있습니다.
단점 검색 결과 노출이 중요한 이커머스 비즈니스라면, 검색 결과 노출이 되지 않는 단점이 있습니다.
검색 결과를 유지한 내부 검색 스팸 방지 방법 - robots.txt 내 단어 지정
robots.txt로 검색 결과 자체를 막는 방법은 어떻게 보면 가장 효과적이지만, 특정 비즈니스에서는 활용하기 어려울 수 있습니다. 특히나 도메인 지수가 높다면 검색 결과 또한 하나의 유입 키워드가 될 수 있습니다. 그렇다면 검색 결과는 유지하고, 스팸만 없앨 수 있을까요?
결론적으로 가능합니다. 하지만 불가능하죠. 그 이유는 방법을 보면 알 수 있습니다.
대체로 내부 검색 스팸은 사이트 주소를 포함시키기에 .com, .net 등 도메인을 포함합니다. 즉, 해당 도메인을 막는다면 내부 검색 스팸을 일부 막을 수 있습니다. 그렇다면 우리는 robots.txt를 아래와 같이 구성할 수 있습니다.
disallow : /search=*.com*
위 구성으로 우리는 와일드카드*를 활용해 .com이 검색결과에 포함되어 있다면, 검색 엔진이 수집하지 못하도록 만들 수 있습니다. 즉, 검색 결과는 유지한 상태로 특정 스팸 단어들만 골라서 막을 수 있는 것이죠. 하지만 이 방법은 사실상 어렵습니다. 그 이유는 아래와 같습니다.
robots.txt는 대소문자를 구분한다.
스팸 사이트는 도메인 주소를 다양한 방식으로 표기한다.
즉, 만약 .com을 막고 싶다면 대소문자를 구분해서 .com.Com.cOm.coM.COm.cOM.CoM 을 disallow에 배치해야 합니다. 여기서 스팸 사이트가 특수문자를 사용한다면 .c◐m 등의 조합도 방지해야 하기에 무한에 가까운 조합을 disallow에 추가해야 하죠.
그럼에도 이 방법으로 특정한 키워드들은 효과적으로 막을 수 있기 때문에 어느정도 효과성을 가질 수는 있습니다.
내부 검색 스팸은 허용하되, 도메인 지수 영향 감소 방법 - sub-domain 분리
검색 결과의 노출이 중요하다면, 각 단어들을 disallow에 추가할 수 있습니다. 하지만 완벽히 막는 것은 불가능하고, 검색 엔진이 해당 키워드 색인을 기반으로 우리 사이트의 지수를 낮게 잡는다면 억울할 수 밖에 없습니다. 이 경우 사이트의 도메인 지수를 방어하는 방법으로는 sub-domain을 활용해서 검색 결과를 나누는 것입니다.
예를 들면 아래와 같이 구성되게 됩니다.
도메인에 귀속된 검색 결과 URL https://mkt52.com/search="스팸검색"
서브도메인으로 나눈 검색 결과 URL https://search.mkt52.com/q="스팸검색"
이 방법은 검색 엔진이 서브 도메인을 별도의 사이트로 인식하는 점을 이용하는 것입니다.
즉, 이미 스팸 검색은 막을 수 없다고 판단된다면, 우리 도메인을 오염시키지 않도록 검색 결과를 서브 도메인으로 이동시켜 본 도메인을 지키는 방법입니다. 검색 결과가 서브 도메인에 적용된 것이 궁금하다면, 11번가의 검색 결과를 확인하면 좋습니다.
이 내용을 확장해서 본다면, 간혹 blog.mkt52.com 등 블로그 페이지를 서브 도메인으로 구성하는 경우 본 도메인 지수에 영향을 주지 않습니다. 만약 블로그의 내용이 서비스의 내용을 포함한다면 가급적 서브 디렉토리 구조(mkt52.com/blog/...)로 구성하는 것이 좋습니다.
사이트 자체적으로 검색은 제한하는 방법 - 검색 결과 길이 제한
지금까지 robots.txt로 검색 엔진의 수집을 방지하는 방법과 서브 도메인으로 도메인 지수를 지키는 방법을 기준으로 내부 검색 스팸을 방지 및 우회할 수 있습니다. 하지만 서비스 내에서 직접적으로 스팸 검색을 어느정도 방지할 수 있습니다.
바로 검색 결과의 길이를 제한하는 것이죠.
부적절한 사이트들은 스팸으로 분류돼 사이트 노출이 거의 되지 않습니다. 그렇기에 높은 도메인 지수를 보유한 서비스의 내부 검색을 활용해서 사이트를 홍보합니다. 즉, 사이트 홍보를 위해서 굉장히 긴 검색어를 사용하게 되죠.
그렇기에 서비스 자체에서 검색어 길이를 제한하는 것도 하나의 방식입니다.
대체로 검색어는 1~3개 까지의 속성을 조합하는 경우가 많습니다. 4개의 검색어 조합은 보기 어렵죠.
2개 조합 ‘빨간’ ‘구두’
3개 조합 ‘하늘색’ ‘여름용’ ‘셔츠’
즉, 도서명이나 상품명을 명확히 검색하지 않는 이상 대체로 검색은 13글자 이내로 이뤄집니다. 13글자 이상의 검색을 제한한다면, 내부 검색 스팸을 일부 회피할 수 있습니다.
하지만 이 경우, 일반 유저의 경험을 저해할 수 있기에 주의해야 합니다. 만약 사용한다면 이전 사용자들의 검색 정보를 확인하고, 검색어 글자수를 잘 체크해서 진행하는 것이 필요합니다.
결론.
결론적으로 내부 검색 스팸을 피하는 방법으로는 서비스 상황에 따라 다른 방법을 채택하는 것이 중요합니다.
사이트 검색의 노출이 중요하지 않다.👉 robots.txt에서 검색 서브디렉토리 전체를 막는다.
사이트 검색이 중요하며, 도메인이 스팸으로 피해보는 것을 피하고자 한다.👉 검색 서비스가 진행되는 도메인을 서브 도메인으로 바꾼다.
사용자들이 검색어를 길게 사용하지 않는다.👉 서비스에서 검색어 길이를 제한한다.
악의적인 서비스로 인해서 정상적인 서비스들이 피해를 보는 상황을 완전히 막을 수 없는 것이 안타깝지만, 그래도 각자의 위치에서 가능한 방식으로 이런 불법 행태를 막으시길 바랍니다.