Запретить роботам сканировать определенную часть страницы

28

Как веб-мастер, отвечающий за крошечный сайт, на котором есть форум, я регулярно получаю жалобы от пользователей на то, что как внутренняя поисковая система, так и внешние поисковые запросы (например, при использовании Google) полностью загрязнены подписями моих пользователей (они используют длинные подписи и это часть опыта форума, потому что подписи имеют большой смысл на моем форуме).

Так что в основном я вижу два варианта на данный момент:

  1. Рендеринг подписи в виде изображения, и когда пользователь нажимает на «изображение подписи», он попадает на страницу, содержащую настоящую подпись (со ссылками в подписи и т. Д.), И эта страница считается не подлежащей сканированию поиском. двигатель пауков). Это потребовало бы некоторой полосы пропускания и потребовало бы некоторой работы (потому что мне понадобилось бы средство визуализации HTML, создающее изображение и т. Д.), Но, очевидно, это решило бы проблему (есть крошечные ошибки в том, что подпись не будет соответствовать шрифтовой / цветовой схеме пользователи, но мои пользователи, в любом случае, очень креативны со своими подписями, используют пользовательские шрифты / цвета / размер и т. д., так что это не такая уж большая проблема).

  2. Пометить каждую часть веб-страницы, которая содержит подпись, как не подлежащую сканированию.

Однако я не уверен в последующем: это то, что можно сделать? Вы можете просто пометить определенные части веб-страницы как не подлежащие сканированию?

WebbyTheWebbor
источник

Ответы:

8

Вот тот же ответ, который я предоставил тегу noindex для Google в Stack Overflow:

Вы можете запретить Google видеть части страницы, поместив эти части в фреймы, заблокированные robots.txt.

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.

Вместо использования iframes вы можете загрузить содержимое скрытого файла, используя 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 запретить и предотвратить сканирование?
Пранав Билуркар
Пока местоположение, из которого выбирается AJAX, заблокировано файлом robots.txt.
Стивен Остермиллер
Пожалуйста, проверьте этот webmasters.stackexchange.com/questions/108169/… и предложите, если таковые имеются.
Пранав Билуркар
Пока местоположение, из которого извлекается AJAX, заблокировано robots.txt - пожалуйста, уточните это.
Пранав Билуркар
2
Google наказывает тех, кто скрывает свой javascript от сканирования, чтобы предотвратить злоупотребления. То же самое относится и к iframes?
Джонатан
7

Другое решение - обернуть sig в ​​span или div со стилем, установленным в, display:noneи затем использовать Javascript, чтобы убрать это, чтобы текст отображался для браузеров с включенным Javascript. Поисковые системы знают, что он не будет отображаться, поэтому не должны его индексировать.

Этот бит HTML, CSS и JavaScript должен сделать это:

HTML:

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

CSS:

.sig {
display:none;
}

JavaScript:

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

Вам нужно будет включить библиотеку JQuery .

paulmorriss
источник
4
+1 и я подумал об этом, но разве это не было бы расценено как "маскировка" различными пауками?
WebbyTheWebbor
3
Не от Google: theseonewsblog.com/3383/google-hidden-text
paulmorriss
1
Я думаю, что это довольно опрятно :-)
paulmorriss
В самом строгом смысле это можно считать маскировкой. Однако он мог распечатать всю подпись с помощью JavaScript, используя document.write ("") ;. Google не индексирует что-либо в javascript. support.google.com/customsearch/bin/…
Athoxx
Я считаю, что Google может индексировать такие абзацы, даже если они скрыты с помощью CSS. Самый безопасный вариант - вообще не включать текст в HTML. (Мы можем использовать JavaScript для вставки текста во время выполнения.)
wrygiel
3

У меня была похожая проблема, я решил ее с помощью css, но это можно сделать и с помощью javascript и jquery.

1 - Я создал класс, который назову « disallowed-for-crawlers», и поместил этот класс во все, что я не хотел видеть ботом Google, или поместил его в промежуток с этим классом.

2 - в основном CSS страницы у меня будет что-то вроде

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

3- Создайте файл CSS с именем disallow.css и добавьте его в robots.txt, чтобы запретить его сканирование, чтобы сканеры не обращались к этому файлу, но добавляли его как ссылку на вашу страницу после основного CSS.

4- В disallow.cssя поместил код:

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

Вы можете играть с JavaScript или CSS. Я просто воспользовался запретом и классами CSS. :) надеюсь, это поможет кому-то.

Роландо Ретана
источник
Я не уверен, что это работает из-за того, что сканеры не имеют доступа к файлу .css (это вещь? С каких пор сканеры получают доступ и сканируют определенные CSS-файлы?), А не просто из-за отображения: никто и сканеры, понимающие, что это не будет отображаться, так они не индексируют это. Даже если это так, что вы делаете для отображения контента пользователям?
Σπύρος Γούλας
Содержимое отображается, когда шаг 4 загружен для пользователя-пользователя, поскольку ему разрешено просматривать этот файл (disallow.css). А что касается роботов, загружающих CSS, то, что в настоящее время делают респектабельные поисковые системы, так они определяют, когда веб-сайт является мобильным или нет, сканерам, которые его не уважают, не стоит беспокоиться, основные поисковые системы читают css и javascript для сканирования. страницы, они делали это около ... почти 6 лет? может быть, больше.
Роландо Ретана
Можете ли вы предоставить источники, подтверждающие это утверждение? Пожалуйста, смотрите webmasters.stackexchange.com/questions/71546/… и yoast.com/dont-block-css-and-js-files и, самое главное, здесь webmasters.googleblog.com/2014/10/… где изображено то, что вы описываете как плохая практика.
Σπύρος Γούλας
Это плохая практика, если я хочу, чтобы Google видел мой веб-сайт нормально, и я блокировал весь CSS, и это плохая практика, потому что они интерпретируют CSS, но в этом конкретном случае я блокирую один конкретный файл, а не все CSS, OP спрашивают о запрете Google читать раздел страницы. но я не хочу, чтобы Google сканировал эти разделы, поэтому я блокирую один единственный CSS (не все, только один). И чтобы подтвердить, что вы сказали? тот, который сканеры читают JS и CSS? это так же просто, как перейти к инструментам Google для веб-мастеров и взглянуть на «Получить как робот», вы увидите там, как они читают css и js.
Роландо Ретана
Также добавим, что в моем конкретном случае я не хочу делать что-то нехорошее с Google Crawler, я просто не хочу, чтобы Google читал раздел информации, который может показаться повторяющимся на всех страницах. Например, номера телефонов, адреса, связанные продукты или информация, которая не подходит для сканирования Google.
Роландо Ретана
2

Один из способов сделать это - использовать текстовое изображение, а не простой текст.

Вполне возможно, что Google в конечном итоге будет достаточно умен, чтобы читать текст с изображения, поэтому он может быть не полностью ориентирован на будущее, но с этого момента он должен работать как минимум некоторое время.

У этого подхода есть масса недостатков. Если человек слабовидящий, это плохо. Если вы хотите, чтобы ваш контент адаптировался к мобильным устройствам по сравнению с настольными компьютерами, это плохо. (и так далее)

Но это метод, который в настоящее время (несколько) работает.

Джеймс Фостер
источник
насколько хорошо это работает, если вы правильно используете alt & title tage?
Jayen
Не пробовал, но похоже, что Google будет сканировать их. Это основное ограничение этого подхода.
Джеймс Фостер
1

Это просто.

Перед тем, как вы откроете свою страницу, вам необходимо узнать, относится ли она к боту, компьютеру или телефону. Затем вам необходимо установить содержание соответственно. Это стандартная практика в наше время и основные функциональные возможности некоторых CMS.

В SE есть множество решений для перенаправления на основе ПОЛЬЗОВАТЕЛЬСКОГО АГЕНТА, которые можно добавить в ваш htaccess. Если это подходит для вашего программного обеспечения на форуме, вы можете запускать другой код с одной и той же БД, чтобы доставить то, что нужно Google, без всяких усилий и лишних усилий.

В качестве альтернативы вы можете поместить небольшую строчку в ваш PHP-код, которая гласит: «Если АГЕНТ ПОЛЬЗОВАТЕЛЯ == Googlebot, то не показывать подписи».

Если вы действительно не можете этого сделать, то можете заставить mod_proxy обслуживать бота и использовать его для удаления всего того, что генерирует ваш php-код, который бот не должен видеть.

Технически Google не одобряет, что их поисковой системе показывали страницу, отличную от того, что видит обычный посетитель сайта, однако на сегодняшний день они не исключают BBC и других, которые предоставляют контент для браузера / IP / посетителя, из результатов своей поисковой системы. , У них также есть ограниченные средства, чтобы видеть, был ли их бот «обманут».

Альтернативное решение скрытия контента с помощью CSS для его повторного включения скриптом также является серой областью. Согласно их собственным руководствам по инструментам для веб-мастеров от 6/6/11, это не очень хорошая идея:

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

Это может быть не каменный планшет, но он актуален и от Google.

Уловка скрытия содержимого не будет работать с меньшинство людей, у которых нет javascript, однако это может не вызывать особого беспокойства, однако ожидание загрузки документа и последующее отображение подписей не будут удовлетворительными при просмотре, так как Если страница загружена, то она будет перемещаться по мере появления скрытых подписей, а затем перемещать содержимое вниз по странице. Этот тип загрузки страницы может вызывать раздражение, если у вас низкоуровневая сеть, но может быть незаметным, если у вас быстрый компьютер для разработчиков с быстрым интернет-соединением.

ʍǝɥʇɐɯ
источник
6
@ ʍǝɥʇɐɯ: подача различного контента в зависимости от того, кто обращается к странице, является своего рода неодобрением и, насколько я понимаю, может оштрафовать вас в поисковой системе. Я предпочитаю решение Paulmorris для JavaScript.
WebbyTheWebbor
@ ʍǝɥʇɐɯ: э-э-э, если имя персонифицированного контента - название игры, то и JavaScript. Последний раз, когда я проверял, что веб в целом больше не работает так хорошо без установленного JavaScript (GMail, FaceBook, Google Docs, переполнение стека, Google+ - да, у меня уже есть;) - и т. Д.). Я не вижу необходимости критиковать решение paulmorris, основанное на ложной предпосылке, что недоступность JavaScript будет проблемой.
WebbyTheWebbor
@ ʍǝɥʇɐɯ: Вам может понравиться это от Мэтта Каттса (отвечающего за SEO в Google) на эту самую тему: theseonewsblog.com/3383/google-hidden-text Это был превосходный комментарий от paulmorris, опубликованный в комментарии к его превосходному ответу. Извините, но называть JavaScript "глупостью" на таком форуме близко к троллингу.
WebbyTheWebbor
... и тогда мы получаем этот вопрос: webmasters.stackexchange.com/questions/16398/… - «заполнение ключевыми словами» - глупость. Прости за это.
ʍǝɥʇɐɯ
Я считаю, что это подпадает под "маскировку" и, следовательно, это не очень хорошая практика.
Σπύρος Γούλας
0

Нет, нельзя запретить роботам сканировать части страниц. Это целая страница или ничего.

Фрагменты в результатах поиска Google обычно берутся из мета-описания на странице. Таким образом, вы можете заставить Google показывать определенную часть страницы, поместив ее в мета-тег описания. С пользовательским контентом сложно получить хорошие фрагменты, но, вероятно, сработает первое сообщение в теме.

Единственный другой способ, которым я могу придумать, - это использовать Javascript. Нечто подобное предложенному paulmorriss может сработать, но я думаю, что поисковые системы все равно будут индексировать контент, если он находится в HTML. Вы можете удалить его из HTML, сохранить его в строке Javascript, а затем добавить обратно при загрузке страницы. Это становится немного сложным, хотя.

Наконец, следует помнить одну вещь: если Google показывает подписи пользователей в своих фрагментах, он решил, что эта часть наиболее релевантна запросу пользователя.

DisgruntledGoat
источник
1
проблема не столько в том, что Google показывает подписи пользователя в своих отрывках, сколько в том, что эти конкретные страницы получают высокий рейтинг в Google. Проблема именно в том, что Google может думать, что подписи актуальны, когда на самом деле это не так: я имею в виду, что именно в этом и заключается мой вопрос.
WebbyTheWebbor
@ Вебби, я не понимаю, почему ты не хочешь, чтобы твои страницы высоко ранжировались? У вас есть примеры страниц и запросов, чтобы мы могли видеть, о чем вы говорите? И если Google демонстрирует сиговый в результатах поиска, то есть отношение к этому поисковому запросу, даже если это не имеет отношения к самой странице.
Рассерженная шлюха
1
Я не могу привести примеры , но я действительно хочу , чтобы мой сайт / форум ранга высоко и делает это очень хорошо. Проблема заключается в том, что среди результатов поиска (которые все в основном для моего сайта / форума в любом случае , потому что это в основном сайт на эту тему), что должно быть страницы реального входа затоплены среди подписей. Я имею в виду, я действительно очень хочу делать то , что я спросил в этом вопросе. И картинки или JavaScript это будет.
WebbyTheWebbor
@Webby, ваши ответы были немного запутанными, но вы, похоже, намекаете, что ваши пользовательские подписи являются отдельными страницами (URL) и, таким образом, отображаются как отдельные результаты в выдаче. В этом случае вы можете заблокировать эти страницы через robots.txt. В противном случае попробуйте решение с мета-описанием, которое я разместил выше, потому что это почти наверняка уменьшит проблему.
Рассерженная шлюха
0

Вы можете поместить страницу в PHP, если с «else», что приводит к капче, которая дает ключ для части if.

Мне все равно, потому что если учетные данные пользователя не совпадают на моей странице, они получают пустую страницу или отправляются на страницу входа.

<?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 должен быть хеш текущего дня или что-то, что меняется, поэтому недостаточно добавить значение в сеанс.

Напишите в комментарии, если хотите, чтобы я добавил пример капчи, потому что у меня его сейчас нет.

Альфонс Марклен
источник
Этот ответ предполагает, что веб-сайты используют или разработчик знает PHP, который может быть неверным. Кроме того, это затрудняет доступ к контенту для пользователей, что не очень хорошо.
Джон Конде
Я могу купить, что не каждый знает PHP, но капча может быть "какого цвета трава", даже слепые люди знают это.
Альфонс Марклен
-3

Очевидно, <! - googleoff: all -> и <! - googleon: all -> делают то, что вы хотите.

Подробнее https://www.google.com/support/enterprise/static/gsa/docs/admin/70/gsa_doc_set/admin_crawl/preparing.html#1076243

https://perishablepress.com/tell-google-to-not-index-certain-parts-of-your-page/

Люк Мадханга
источник
4
Нет. Googleoff и Googleon поддерживаются только Google Search Appliance. Робот Googlebot игнорирует их для веб-поиска. Ссылка: Можете ли вы использовать googleon и googleoff comments, чтобы запретить роботам Google индексировать часть страницы? Вы ссылаетесь на документацию Google Search Appliance, и в комментарии к статье, на которую вы ссылаетесь, также говорится, что она не работает для робота Googlebot.
Стивен Остермиллер
@ StefhenOstermiller о, верно! Чёрт
Люк Madhanga