Захист роботів від сканування певної частини сторінки


28

Як веб-майстер, який відповідає за крихітний сайт, на якому є форум, я регулярно отримую скарги від користувачів, що як внутрішня пошукова система, так і зовнішній пошук (наприклад, під час використання Google) повністю забруднені підписами моїх користувачів (вони використовують довго підписи, і це є частиною досвіду форуму, оскільки підписи мають багато сенсу на моєму форумі).

Тому в основному я бачу два варіанти на даний момент:

  1. Надання підпису як зображення, і коли користувач натискає на "зображення підпису", він переходить на сторінку, яка містить реальний підпис (із посиланнями в підписі тощо), і ця сторінка встановлюється як не сканувана пошуком. павуки двигуна). Це вимагало б деякої пропускної здатності та потребує певної роботи (тому що мені потрібен HTML-рендер, що створює зображення тощо), але очевидно, це вирішить проблему (є крихітні ґетчі в тому, що підпис не буде відповідати шрифтовій / колірній схемі користувачі, але мої користувачі дуже творчі зі своїми підписами, все-таки використовують користувальницькі шрифти / кольори / розміри тощо, тому це не так вже й багато питання).

  2. Позначення кожної частини веб-сторінки, яка містить підпис, як такий, що не можна сканувати.

Однак я не впевнений у пізнішому: чи це щось можна зробити? Чи можете ви просто позначити певні частини веб-сторінки як такі, що не можна сканувати?

Відповіді:


8

Ось таку ж відповідь, яку я надав noindex тегу для google у переповнюванні стека

Ви можете заборонити Google бачити частини сторінки, помістивши їх у iframe, які заблоковані 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 заборонити та запобігати скануванню того ж?
Пранів Білулкар

Поки robots.txt заблоковано місцезнаходження, з якого виходить AJAX.
Стівен Остерміллер

Будь ласка, перевірте цей веб-майстрів.stackexchange.com/ questions/ 108169/… та підкажете, чи є такий.
Пранів Білулкар

Поки robots.txt заблоковано місцезнаходження, з якого виходить AJAX - Будь ласка, детальніше поясніть це.
Пранів Білулкар

2
Google карає тих, хто приховує JavaScript від сканування, щоб уникнути зловживань. Чи те саме стосується іфреймів?
Джонатан

7

Іншим рішенням є загортання сига в проміжок або дів із встановленим стилем, 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 .


4
+1, і я подумав про це, але чи не вважати це різними павуками формою "маскування"?
WebbyTheWebbor


1
Я думаю, що це досить акуратно :-)
paulmorriss

Це в найсуворішому визначенні можна вважати маскуванням. Однак він міг роздрукувати весь підпис за допомогою javascript за допомогою документа.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. Я просто скористався програмою disallow та css. :) сподіваюся, що це комусь допоможе.


Я не впевнений, що це працює через те, що сканери не отримують доступ до файлу .css (це річ? З тих пір, коли сканери отримують доступ та сканують певні файли css?), А не просто завдяки дисплею: ​​жоден та сканери, які розуміють його, не відображатимуться так вони не індексують це. Навіть якщо це так, що ви робите, щоб фактично відображати вміст людям?
Σπύρος Γούλας

Вміст відображається під час завантаження кроку 4 для користувача, оскільки їм дозволяється бачити цей файл (disallow.css). А про роботів, що завантажують CSS, це те, що роблять поважні пошукові системи в наші дні, саме так вони визначають, коли веб-сайт зручний для мобільних пристроїв чи ні, про сканери, які не поважають його, не варто турбуватися, про основні пошукові системи читають css та javascript, щоб сканувати. сторінок, вони робили це вже близько ... майже 6 років? можливо більше.
Rolando Retana

Чи можете ви надати джерела, які підтверджують цю претензію? Перегляньте веб-майстрів.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 Гусеником, я просто не хочу, щоб Google читав розділ інформації, який може здаватися повторюваним на всіх сторінках. Як і телефонні номери, адреси, пов’язані продукти чи інформація, яка не стосується Google для сканування.
Роландо Ретана

2

Один із способів зробити це - використовувати зображення тексту, а не звичайний текст.

Цілком можливо, що Google з часом виявиться досить розумним, щоб прочитати текст із зображення, тому це може бути не повністю захищеним від майбутнього, але воно має працювати добре хоча б на деякий час.

У цього підходу є маса недоліків. Якщо людина з вадами зору - це погано. Якщо ви хочете, щоб ваш вміст адаптувався до мобільних пристроїв порівняно з настільними комп'ютерами, це погано. (і так далі)

Але це метод, який наразі (дещо) працює.


як добре це працює, якщо ви правильно використовуєте alt & title tage?
Jayen

Не намагався, але, мабуть, Google сканує їх. Це головне обмеження такого підходу.
Джеймс Фостер

1

Це легко.

Перш ніж обслуговувати свою сторінку, ви повинні знати, чи це для бота, комп’ютера чи телефону. Потім потрібно встановити вміст відповідно. Це стандартна практика в цей день та вік та основна функціональність деяких CMS.

У SE існує безліч рішень для перенаправлення на основі USER AGENT, які можна помістити у ваш htaccess. Якщо це відповідає вашому програмному забезпеченню форуму, ви можете запускати різні коди з однієї БД, щоб доставити те, що потрібно Google, без збитків і обрізки.

Крім того, ви можете поставити невеликий рядок у своєму PHP-коді, який робить "якщо USER AGENT == Googlebot, то не показує підписи".

Якщо ви дійсно не можете цього зробити, ви можете отримати mod_proxy для обслуговування бота і використовувати його, щоб викреслити все, що генерує ваш php-код, що боту не потрібно бачити.

Технічно Google не схвалює, щоб їх пошукова система відображала іншу сторінку, ніж звичайний відвідувач сайту, однак, на сьогоднішній день вони не брали BBC та інших, які надають вміст веб-переглядача / IP / відвідувача з результатів пошуку. . Вони також мають обмежені засоби, щоб перевірити, чи був їх бот 'зведений'.

Альтернативне рішення приховування вмісту за допомогою CSS для його повторного включення за допомогою скрипту - це також трохи сіра область. Відповідно до їхніх власних вказівок щодо інструментів для веб-майстрів від 20.06.2011, це не є хорошою ідеєю:

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

Це може бути не планшет, відлитий з каменю, але це актуально і від Google.

Приховування вмісту не допоможе меншині людей, у яких немає JavaScript, це може не викликати великого занепокоєння, однак, очікування завантаження документа, а потім показ підписів не буде задовільним досвідом перегляду, як ви Подумайте, що сторінка завантажена, тоді вона буде стрибати, коли з’являться приховані підписи, а потім висувати вміст сторінки. Цей тип завантаження сторінки може викликати роздратування, якщо у вас є низька верхня мережа, але це може бути не помітно, якщо у вас є швидка машина розробників на швидкому інтернет-з'єднанні.


6
@ ʍǝɥʇɐɯ: подання різного вмісту залежно від того, хто отримує доступ до сторінки, начебто нахмурився і може покарати вас у пошуковій системі, наскільки я це розумію. Я дуже вважаю за краще рішення JavaScript Paulmorris.
WebbyTheWebbor

@ ʍǝɥʇɐɯ: erf, якщо подання персоналізованого вмісту - це назва гри, тож 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 показує підписи користувачів у своїх фрагментах, вона вирішила, що це частина, найбільш відповідна для запиту користувача.


1
Проблема полягає не стільки в тому, що Google показує знаки користувачів у своїх фрагментах, скільки ці конкретні сторінки, які отримують перше місце в Google. Проблема тут саме , що Google може думати , що SIGs актуальні , коли вони на насправді не так : я маю в виду, що це саме те , що моє запитання все.
WebbyTheWebbor

@ Webby, я не розумію, чому ви не хочете, щоб ваші сторінки були високо оцінені? Чи є у вас кілька прикладних сторінок і запитів, щоб ми могли бачити, про що ви говорите? І якщо Google демонструє Сігов в результатах пошуку, то є відношення до цього пошуковому запиту, навіть якщо це не має відношення до самої сторінці.
НезадоволенняGoat

1
Я не можу навести приклади , але я дійсно хочу , щоб мій сайт / форум рангу високо і робить це дуже добре. Проблема полягає в тому, що серед результатів пошуку (які все в основному для мого сайту / форуму в будь-якому випадку , тому що це в основному сайт на цю тему), що має бути сторінки реального входу затоплені серед підписів. Я маю в виду, я дійсно дуже хочу робити те , що я запитав у цьому питанні. А зображення або JavaScript це буде.
WebbyTheWebbor

@Webby, ваші відповіді були дещо заплутаними, але ви, мабуть, натякаєте на те, що ваші підписи користувачів - це окремі сторінки (URL-адреси) і, таким чином, відображаються як окремі результати у SERP. У такому випадку ви можете заблокувати ці сторінки через robots.txt. В іншому випадку спробуйте рішення з описом мета, яке я розмістив вище, оскільки це майже напевно полегшить проблему.
НевдоволенийGoat

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 має бути хеш поточного дня або щось, що змінюється, тому недостатньо додати значення сеансу.

Напишіть у коментарі, якщо ви хочете, щоб я додав приклад captcha, тому що у мене його зараз немає.


Ця відповідь передбачає використання веб-сайтів або розробник знає 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. Googlebot ігнорує їх для веб-пошуку. Довідка: Чи можете ви використовувати коментарі googleon та googleoff, щоб Googlebot не індексував частину сторінки? Ви зв’язали документацію Google Search Appliance, а коментар до статті, до якої ви пов’язали, також говорить, що це не працює для Googlebot.
Стівен Остерміллер

@StephenOstermiller о так! Чорт
Люк Madhanga
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.