로봇이 페이지의 특정 부분을 크롤링하지 못하도록 방지


28

포럼이있는 소규모 사이트를 담당하는 웹 마스터로서 정기적으로 사용자로부터 내부 검색 엔진과 외부 검색 (Google을 사용할 때와 같은)이 모두 사용자의 서명 (오래 사용하고 있음)에 의해 오염된다는 불만을받습니다. 서명은 내 포럼에서 의미가 있기 때문에 포럼 경험의 일부입니다.

기본적으로 현재 두 가지 옵션이 있습니다.

  1. 서명을 그림으로 렌더링하고 사용자가 "서명 그림"을 클릭하면 서명이 포함 된 실제 서명이 포함 된 페이지로 이동하고 해당 페이지는 검색을 통해 크롤링 할 수없는 것으로 설정됩니다 엔진 거미). 이것은 그림을 생성하는 HTML 렌더러가 필요하기 때문에 약간의 대역폭을 소비하고 약간의 작업이 필요하지만 분명히 문제를 해결할 것입니다 (서명이 글꼴 / 색 구성표를 존중하지 않기 때문에 작은 문제가 있습니다) 사용자는하지만 사용자는 어쨌든 사용자 정의 글꼴 / 색상 / 크기 등을 사용하여 서명으로 독창적이므로 그다지 문제가되지 않습니다).

  2. 서명이 포함 된 웹 페이지의 모든 부분을 크롤링 할 수없는 것으로 표시합니다.

그러나 나는 나중에 확실하지 않습니다 : 이것이 할 수있는 일입니까? 웹 페이지의 특정 부분을 크롤링 할 수없는 것으로 표시 할 수 있습니까?

답변:


8

다음은 스택 오버플로 에서 Googlenoindex 태그에 제공 한 것과 동일한 답변입니다 .

robots.txt에 의해 차단 된 iframe에 해당 부분을 넣어 Google이 페이지의 일부를 보지 못하게 할 수 있습니다.

robots.txt

Disallow: /iframes/

index.html

This text is crawlable, but now you'll see 
text that search engines can't see:
<iframe src="/iframes/hidden.html" width="100%" height=300 scrolling=no>

/iframes/hidden.html

Search engines cannot see this text.

iframe을 사용하는 대신 AJAX를 사용하여 숨겨진 파일의 내용을로드 할 수 있습니다. 다음은 jquery ajax를 사용하는 예제입니다.

his text is crawlable, but now you'll see 
text that search engines can't see:
<div id="hidden"></div>
<script>
    $.get(
        "/iframes/hidden.html",
        function(data){$('#hidden').html(data)},
    );
</script>

AJAX를 사용하여 제어를 추가 / 주입하면 크롤링이 허용되지 않고 방지되는 데 도움이됩니까?
Pranav Bilurkar

AJAX가 가져 오는 위치가 robots.txt에 의해 차단되는 한.
Stephen Ostermiller

webmasters.stackexchange.com/questions/108169/… 를 확인 하고 제안하십시오.
Pranav Bilurkar

AJAX가 가져 오는 위치가 robots.txt에 의해 차단되는 한 자세히 설명하십시오.
Pranav Bilurkar

2
Google은 악용을 방지하기 위해 자바 스크립트를 숨기는 사람들을 크롤링하지 않도록 처벌합니다. iframe도 마찬가지입니까?
Jonathan

7

또 다른 해결책은 스타일이 설정된 범위 또는 div에서 시그를 래핑 display:none한 다음 Javascript를 사용하여 Javascript를 사용하는 브라우저의 텍스트가 표시되도록하는 것입니다. 검색 엔진은 표시되지 않을 것이므로 색인을 생성해서는 안됩니다.

이 HTML, CSS 및 자바 스크립트는 다음과 같이해야합니다.

HTML :

<span class="sig">signature goes here</span>

CSS :

.sig {
display:none;
}

자바 스크립트 :

<script type="text/javascript"> 
$(document).ready(function()
  {
      $(".sig").show();
  }
</script>

jquery 라이브러리 를 포함해야합니다 .


4
+1 나는 그것에 대해 생각했지만 다양한 거미들에 의해 "클로킹"의 형태로 간주되지 않습니까?
WebbyTheWebbor


1
정말 깔끔하다고 생각합니다 :-)
paulmorriss

이것은 가장 엄격한 정의에서 클로킹으로 간주 될 수 있습니다. 그러나 그는 document.write ( "");를 사용하여 모든 서명을 자바 스크립트로 인쇄 할 수 있습니다. Google은 자바 스크립트 내에서 색인을 생성하지 않습니다. support.google.com/customsearch/bin/…
Athoxx

CSS를 사용하여 숨겨져 있어도 Google에서 이러한 단락을 색인 할 수 있다고 생각합니다. 가장 안전한 옵션은 HTML에 텍스트를 전혀 포함시키지 않는 것입니다. (런타임에 JavaScript를 사용하여 텍스트를 삽입 할 수 있습니다.)
wrygiel

3

비슷한 문제가 있었고 CSS로 해결했지만 자바 스크립트와 jquery로도 수행 할 수 있습니다.

1- " disallowed-for-crawlers" 라고 부르는 클래스를 만들고 Google 봇이보고 싶지 않은 모든 것에 해당 클래스를 배치하거나 해당 클래스와 함께 범위 내에 배치합니다.

2-페이지의 기본 CSS에는 다음과 같은 내용이 있습니다.

.disallowed-for-crawlers {
    display:none;
}

3- disallow.css라는 CSS 파일을 생성하고이를 robots.txt에 추가하여 크롤링 할 수 없도록하므로 크롤러는 해당 파일에 액세스 할 수 없지만 기본 CSS 뒤에 페이지에 대한 참조로 추가하십시오.

4-에서 disallow.css나는 코드를 넣었다.

.disallowed-for-crawlers {
    display:block !important;
}

당신은 자바 스크립트 또는 CSS로 재생할 수 있습니다. 방금 disallow와 CSS 클래스를 이용했습니다. :) 누군가에게 도움이되기를 바랍니다.


크롤러가 .css 파일에 액세스하지 않아서 작동하는지 확실하지 않습니다 (이것은 무엇입니까? 크롤러가 특정 CSS 파일에 언제 액세스하고 크롤링합니까?). 색인을 생성하지 않습니다. 이 경우에도 실제로 사용자에게 컨텐츠를 표시하려면 어떻게해야합니까?
Σπύρος Γούλας

컨텐츠는 사용자가 해당 파일 (disallow.css)을 볼 수 있으므로 4 단계가로드 될 때 표시됩니다. 그리고 오늘날 검색 할 수있는 검색 엔진이하는 CSS를로드하는 로봇에 대해, 웹 사이트가 모바일 친화적인지 아닌지를 결정하는 방법,이를 존중하지 않는 크롤러, 걱정할 가치가없는 크롤러, 주요 검색 엔진은 CSS를 읽고 크롤링 할 자바 스크립트 약 6 년 동안 그 일을 해왔습니까? 어쩌면 더.
Rolando Retana

해당 주장을 뒷받침하는 출처를 제공 할 수 있습니까? 참조하시기 바랍니다 webmasters.stackexchange.com/questions/71546/...을 하고 yoast.com/dont-block-css-and-js-files 가장 중요하게 여기 webmasters.googleblog.com/2014/10/... 당신이 설명하는 것은 묘사되는 경우를 나쁜 연습으로.
Σπύρος Γούλας

Google에서 내 웹 사이트를 정상적으로 보도록하려면 모든 CSS를 차단하고 CSS를 해석하기 때문에 나쁜 습관이지만이 경우에는 CSS가 아닌 하나의 특정 파일을 차단합니다. OP ask Google이 페이지의 섹션을 읽지 못하게하는 방법 그러나 Google이 해당 섹션을 크롤링하지 않기를 원하므로 하나의 CSS를 차단합니다 (모두가 아니라 하나만). 그리고 당신이 한 주장을 뒷받침하기 위해? 크롤러가 JS와 CSS를 읽는 것? Google 웹 마스터 도구로 이동하는 것만 큼 쉽고 "로봇으로 가져 오기"를 보면 CSS와 js를 읽는 방법을 볼 수 있습니다.
Rolando Retana

또한 내 특정 경우에는 Google 크롤러로 그늘을 짓고 싶지 않다는 것이 아니라 Google이 모든 페이지에서 반복적으로 보일 수있는 정보 섹션을 읽지 않기를 바랍니다. 전화 번호, 주소, 관련 제품 또는 Google이 크롤링하지 않는 정보와 같은 정보
Rolando Retana

2

이를 수행하는 한 가지 방법은 일반 텍스트 대신 텍스트 이미지 를 사용하는 것입니다.

구글은 결국 이미지에서 텍스트를 읽을 수있을만큼 똑똑 할 수있다. 따라서 미래를 보장 할 수는 없지만 적어도 한동안은 잘 작동 할 것이다.

이 접근법에는 많은 단점이 있습니다. 시각 장애가있는 사람은 나쁘다. 콘텐츠를 모바일 장치와 데스크톱 컴퓨터에 맞추려면 좋지 않습니다. (등등)

그러나 현재 (어떤) 작동하는 방법입니다.


alt & title tage를 적절하게 사용하면 얼마나 잘 작동합니까?
Jayen

시도하지는 않았지만 Google이 크롤링하는 것 같습니다. 이 접근 방식의 주요 제한 사항입니다.
James Foster

1

이것은 쉽다.

페이지를 서비스하기 전에 봇, 컴퓨터 또는 전화 중 어느 페이지인지 알아야합니다. 그런 다음 그에 따라 내용을 설정해야합니다. 이것은 오늘날의 표준 관행이며 일부 CMS의 핵심 기능입니다.

htaccess에 넣을 수있는 USER AGENT를 기반으로 리디렉션을 수행하기위한 많은 솔루션이 SE에 있습니다. 이것이 포럼 소프트웨어에 적합한 경우 동일한 DB에서 다른 코드를 실행하여 틈새 및 다듬기없이 Google에 필요한 것을 제공 할 수 있습니다.

또는 'USER AGENT == Googlebot이면 서명을 표시하지 않습니다'를 수행하는 PHP 코드에 작은 줄을 넣을 수 있습니다.

실제로 그렇게 할 수 없다면 mod_proxy가 봇에 제공하고 봇이 볼 필요가없는 PHP 코드가 생성하는 것을 제거하는 데 사용할 수 있습니다.

기술적으로 Google은 검색 엔진이 일반 사이트 방문자에게 표시되는 것과 다른 페이지로 표시되는 것을 승인하지 않지만 현재까지 검색 엔진 결과에서 브라우저 / IP / 방문자 별 콘텐츠를 제공하는 BBC 및 기타 사이트를 가져 오지 않았습니다. . 그들은 또한 그들의 봇이 '코닝 (conned)'되었는지를 알 수있는 수단이 제한되어 있습니다.

스크립트로 다시 활성화 할 수 있도록 CSS로 컨텐츠를 숨기는 대체 솔루션도 약간 회색입니다. 20/6/11의 자체 웹 마스터 도구 가이드 라인에 따르면 이는 좋은 생각이 아닙니다.

http://www.google.com/support/webmasters/bin/answer.py?answer=66353

그것은 석재로 주조 된 태블릿이 아닐 수도 있지만 최신 버전이며 Google에서 제공 한 것입니다.

콘텐츠 트릭 숨기기는 자바 스크립트가없는 소수의 사람들에게는 작동하지 않습니다. 큰 문제는 아니지만 문서가로드 될 때까지 기다렸다가 서명을 표시하는 것이 만족스러운 시청 환경이 아닙니다. 페이지가로드되었다고 생각하면 숨겨진 서명이 표시되면 내용을 페이지 아래로 밀어 넣습니다. 이 유형의 페이지로드는 로우 엔드 넷톱이있는 경우 자극적 일 수 있지만 빠른 인터넷 연결에 빠른 개발자 시스템이있는 경우 눈에 띄지 않을 수 있습니다.


6
@ ʍǝɥʇɐɯ : 페이지에 누가 액세스하고 있는지에 따라 다른 콘텐츠를 제공하는 것은 다소 어리둥절하며 내가 이해하는 한 검색 엔진에서 사용자에게 불이익을 줄 수 있습니다. paulmorris의 JavaScript 솔루션을 선호합니다.
WebbyTheWebbor

@ ʍǝɥʇɐɯ : erf, 개인화 된 콘텐츠를 제공하는 것이 게임 이름 인 경우 JavaScript도 마찬가지입니다. 마지막으로 JavaScript가 설치되어 있지 않으면 웹 전체가 더 이상 제대로 작동하지 않습니다 (GMail, FaceBook, Google Docs, stack overflow, Google+ --yup it have it have;)). JavaScript를 사용할 수 없다는 잘못된 전제를 바탕으로 paulmorris의 솔루션을 비판 할 필요가 없습니다.
WebbyTheWebbor

@ ʍǝɥʇɐɯ : Matt Cutts (Google의 SEO 담당)의 주제에 대해 다음 같은 주제 를 좋아할 것입니다. 죄송하지만 해당 포럼에서 JavaScript "sillyness"를 호출하는 것은 트롤링에 가깝습니다.
WebbyTheWebbor

... 그리고 우리는이 질문을 얻습니다 : webmasters.stackexchange.com/questions/16398/…- '키워드 스터핑'은 바보입니다. 미안합니다.
ʍǝɥʇɐɯ

나는 이것이 "클로킹 (cloaking)"에 해당한다고 믿기 때문에 좋은 습관이 아니다.
Σπύρος Γούλας

0

아니요, 로봇이 페이지의 일부를 크롤링하는 것을 막을 방법이 없습니다. 전체 페이지이거나 아무것도 아닙니다.

Google 검색 결과의 스 니펫은 일반적으로 페이지 의 메타 설명 에서 가져옵니다 . 메타 설명 태그에이를 삽입하여 Google이 페이지의 특정 부분을 표시하도록 할 수 있습니다. 사용자 생성 콘텐츠를 사용하면 좋은 스 니펫을 얻는 것이 어렵지만 스레드의 첫 번째 게시물을 가져 오는 것이 좋습니다.

내가 생각할 수있는 유일한 다른 방법은 Javascript를 사용하는 것입니다. paulmorriss와 같은 제안 효과 가있을 수 있지만 검색 엔진이 HTML에 있으면 여전히 콘텐츠를 색인화한다고 생각합니다. HTML에서 HTML을 제거하고 Javascript 문자열에 저장 한 다음 페이지로드시 다시 추가 할 수 있습니다. 그래도 조금 복잡해집니다.

마지막으로 염두에 두어야 할 사항 : Google이 스 니펫에 사용자의 서명을 표시하는 경우 사용자의 검색어와 가장 관련성이 높은 부분을 결정했습니다.


1
문제는 Google이 스 니펫에서 사용자의 시그마를 보여주는 것이 아니라 특정 페이지가 Google에서 높은 순위를 차지하기 때문입니다. 문제는 여기에 정확하게 내 질문 모두에 대해 정확히 무엇을 그, 내 말은 : 구글이 실제로하지 않은 경우 시그마 관련 생각 할 수있다.
WebbyTheWebbor

@Webby, 이해가되지 않습니다. 왜 귀하의 페이지 순위가 높을까요? 당신이 이야기하고있는 것을 볼 수 있도록 몇 가지 예제 페이지와 쿼리가 있습니까? 구글이 검색 결과에 시그 표시되어 있다면, 그것은 이다 는 페이지 자체와 관련이없는 경우에도, 해당 검색 쿼리에 대한 관련.
DisgruntledGoat

1
나는 예를들 수 있지만 않습니다 높은 순위에 내 사이트 / 포럼을 원하고 그렇게 아주 잘한다. 문제는 검색 결과 (기본적으로 주제 사이트 이기 때문에 대부분 내 사이트 / 포럼 에 대한 것임) 중에서 실제 입력 페이지가 서명 사이에 넘쳐 난다는 것입니다. 나는 의미 합니까 정말 내가 질문에 무엇을 요구해야합니다. 그리고 그림이나 JavaScript가 될 것입니다.
WebbyTheWebbor

@Webby, 귀하의 답변은 약간 혼란 스럽지만 사용자 서명이 모두 별도의 페이지 (URL)이므로 SERP에서 별도의 결과로 나타나는 것으로 보입니다. 이 경우 robots.txt를 통해 해당 페이지를 차단할 수 있습니다. 그렇지 않으면 위에 게시 한 메타 설명 솔루션을 사용해보십시오. 문제를 거의 완화시킬 수 있기 때문입니다.
DisgruntledGoat

0

"else"가 있으면 if 부분의 키를 제공하는 보안 문자로 연결되는 경우 페이지를 PHP에 넣을 수 있습니다.

사용자 자격 증명이 내 페이지에서 일치하지 않으면 빈 페이지가 표시되거나 로그인 페이지로 보내지기 때문에 실제로 신경 쓰지 않습니다.

<?php
session_start();

if(empty($_SESSION['captcha']) or $_SESSION['captcha'] != $key){
    header("Location: captcha.php");
}

if(!empty($_SESSION['captcha']) and $_SESSION['captcha'] == $key){

"the page"

}
?>

$key 현재 날짜의 해시이거나 변경되는 값이므로 세션에 값을 추가하기에 충분하지 않습니다.

내가 지금 captcha를 가지고 있지 않기 때문에 예제 보안 문자를 추가하려면 의견을 작성하십시오.


이 답변은 웹 사이트를 사용하거나 개발자가 사실이 아닐 수도있는 PHP를 알고 있다고 가정합니다. 또한 좋지 않은 사용자에게는 콘텐츠를 얻기가 어렵습니다.
John Conde

모든 사람이 PHP를 아는 것은 아니지만 보안 문자는 "잔디의 색은 무엇인가", 심지어 장님조차도 알 수 있습니다.
Alfons Marklén

-3

4
아니요. Googleoff와 Googleon은 Google 검색 어플라이언스에서만 지원됩니다. Googlebot은 웹 검색을 위해 무시합니다. 참조 : googleon 및 googleoff 댓글을 사용하여 Googlebot이 페이지의 일부를 색인 생성하지 못하게 할 수 있습니까? 귀하는 Google 검색 어플라이언스 설명서에 링크했으며 해당 기사에 대한 의견이 Googlebot에서 작동하지 않는다고 말합니다.
Stephen Ostermiller

@StephenOstermiller 아 맞아! Darn
Luke Madhanga
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.