Zapobieganie robotom indeksowania określonej części strony

28

Jako webmaster odpowiedzialny za małą witrynę, która ma forum, regularnie otrzymuję skargi od użytkowników, że zarówno wewnętrzna wyszukiwarka, jak i zewnętrzne wyszukiwania (np. Podczas korzystania z Google) są całkowicie zanieczyszczone przez podpisy moich użytkowników (używają długich podpisy i jest to część doświadczenia forum, ponieważ podpisy mają dużo sensu na moim forum).

Zasadniczo widzę teraz dwie opcje:

  1. Renderowanie podpisu jako obrazu, a kiedy użytkownik kliknie „zdjęcie podpisu”, zostanie przeniesiony na stronę zawierającą prawdziwy podpis (z linkami w podpisie itp.), A strona ta jest ustawiana jako niemożliwa do przeszukiwania przez wyszukiwanie pająki silnika). Zużyłoby to trochę przepustowości i wymagało trochę pracy (ponieważ potrzebowałbym renderera HTML produkującego obraz itp.), Ale oczywiście rozwiązałoby to problem (istnieją małe błędy, w których podpis nie szanowałby czcionki / schematu kolorów użytkownicy, ale moi użytkownicy i tak są bardzo kreatywni ze swoimi podpisami, używając niestandardowych czcionek / kolorów / rozmiarów itp., więc nie stanowi to większego problemu).

  2. Oznaczanie każdej części strony internetowej, która zawiera podpis, jako niemożliwej do indeksowania.

Jednak nie jestem pewien co do później: czy można to zrobić? Czy możesz po prostu oznaczyć określone części strony jako niemożliwe do indeksowania?

WebbyTheWebbor
źródło

Odpowiedzi:

8

Oto ta sama odpowiedź, którą podałem na tag noindex dla Google w Stack Overflow:

Możesz uniemożliwić Google wyświetlanie części strony, umieszczając te części w elementach iframe, które są blokowane przez plik 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.

Zamiast używać iframe, możesz załadować zawartość ukrytego pliku za pomocą AJAX. Oto przykład, który używa do tego 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>
Stephen Ostermiller
źródło
Czy dodanie / wstrzyknięcie kontroli za pomocą AJAX pomoże uniemożliwić i uniemożliwić indeksowanie tego samego?
Pranav Bilurkar
Tak długo, jak lokalizacja, z której pobierany jest program AJAX, jest blokowana przez plik robots.txt.
Stephen Ostermiller
Czy możesz sprawdzić ten webmasters.stackexchange.com/questions/108169/... i zasugerować, jeśli istnieje.
Pranav Bilurkar
Tak długo, jak lokalizacja, z której pobierany jest program AJAX, jest blokowana przez plik robots.txt - wyjaśnij to.
Pranav Bilurkar
2
Google karze tych, którzy ukrywają swój javascript przed zaindeksowaniem, aby zapobiec nadużyciom. Czy to samo dotyczy iframe?
Jonathan
7

Innym rozwiązaniem jest zawinięcie sig w zakres lub div ze stylem ustawionym na, display:nonea następnie użycie Javascript, aby go zabrać, aby tekst wyświetlał się w przeglądarkach z włączonym Javascript. Wyszukiwarki wiedzą, że nie będą wyświetlane, więc nie należy ich indeksować.

Ten fragment HTML, CSS i javascript powinien to zrobić:

HTML:

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

CSS:

.sig {
display:none;
}

javascript:

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

Musisz dołączyć bibliotekę jquery .

paulmorriss
źródło
4
+1 i pomyślałem o tym, ale czy nie byłoby to uważane za formę „maskowania” przez różne pająki?
WebbyTheWebbor
3
Nie przez Google: theseonewsblog.com/3383/google-hidden-text
paulmorriss
1
Myślę, że jest całkiem fajnie :-)
paulmorriss
W najściślejszej definicji można to uznać za maskowanie. Jednak mógł wydrukować cały podpis za pomocą javascript za pomocą document.write ("") ;. Google nie indeksuje niczego w javascript. support.google.com/customsearch/bin/…
Athoxx
Wierzę, że Google może indeksować takie akapity, nawet jeśli są one ukryte za pomocą CSS. Najbezpieczniejszą opcją jest całkowite pominięcie tekstu w kodzie HTML. (Możemy użyć JavaScript, aby wstrzyknąć tekst w czasie wykonywania.)
wrygiel,
3

Miałem podobny problem, rozwiązałem go za pomocą css, ale można to zrobić za pomocą javascript i jquery.

1 - Utworzyłem klasę, którą nazywam „ disallowed-for-crawlers” i umieszczam tę klasę we wszystkim, czego nie chciałbym, aby bot Google widział, lub umieszczam ją w obrębie tej klasy.

2 - W głównym CSS strony będę miał coś takiego

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

3- Utwórz plik CSS o nazwie disallow.css i dodaj go do pliku robots.txt, który ma być niedozwolony do przeszukiwania, aby roboty nie miały dostępu do tego pliku, ale dodawały go jako odniesienie do strony po głównym css.

4- W disallow.cssumieściłem kod:

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

Możesz grać w javascript lub css. Właśnie skorzystałem z klas disallow i css. :) mam nadzieję, że to komuś pomoże.

Rolando Retana
źródło
Nie jestem pewien, czy to działa, ponieważ przeszukiwacze nie uzyskują dostępu do pliku .css (czy to jest to? Od kiedy przeszukiwacze uzyskują dostęp do określonych plików css i przeszukują określone pliki css?), A nie tylko ze względu na wyświetlanie: żaden i przeszukiwacze rozumiejący to nie będą wyświetlane, więc nie indeksują tego. Nawet jeśli tak jest, co robisz, aby wyświetlać treść użytkownikom?
Σπύρος Γούλας
Zawartość jest wyświetlana po załadowaniu kroku 4 dla użytkownika, ponieważ może on zobaczyć ten plik (disallow.css). A o robotach ładujących CSS, które robią obecnie szanowane wyszukiwarki, w ten sposób określają, czy witryna jest przyjazna dla urządzeń mobilnych, czy nie, nie trzeba się przejmować robotami, które tego nie szanują, główne wyszukiwarki czytają css i javascript do indeksowania strony, robili to od około ... prawie 6 lat? może więcej.
Rolando Retana
Czy możesz podać źródła, które potwierdzają to roszczenie? Zobacz webmasters.stackexchange.com/questions/71546/... i yoast.com/dont-block-css-and-js-files, a co najważniejsze tutaj webmasters.googleblog.com/2014/10/…, gdzie opisano to, co opisujesz jako zła praktyka.
Σπύρος Γούλας
Jest to zła praktyka, jeśli chcę, aby Google zobaczyła moją stronę w normalny sposób i blokuję cały CSS, i jest to zła praktyka, ponieważ interpretują CSS, ale w tym konkretnym przypadku blokuję jeden konkretny plik, a nie cały css, OP pytają na temat zapobiegania czytaniu przez Google sekcji strony. ale nie chcę, aby Google indeksował te sekcje, więc blokuję jeden CSS (nie wszystkie, tylko jeden). I na poparcie tego, co powiedziałeś? ten, który przeszukiwacze czytają JS i CSS? wystarczy przejść do Narzędzi Google dla webmasterów i spojrzeć na „Pobierz jako robot”, a zobaczysz, jak czytają css i js.
Rolando Retana
Ponadto, w moim szczególnym przypadku nie chodzi o to, że chcę zrobić coś podejrzanego z robotem Google, po prostu nie chcę, aby Google czytał sekcję informacji, która może wydawać się powtarzalna na wszystkich stronach. Podobnie jak numery telefonów, adresy, powiązane produkty lub informacje, które Google nie może indeksować.
Rolando Retana
2

Jednym ze sposobów jest użycie obrazu tekstu zamiast zwykłego tekstu.

Możliwe, że Google w końcu będzie wystarczająco inteligentny, aby odczytać tekst z obrazu, więc może nie być całkowicie przyszłościowy, ale powinien działać dobrze przynajmniej przez chwilę.

Podejście to ma wiele wad. Jeśli dana osoba jest niedowidząca, to źle. Jeśli chcesz, aby Twoje treści dostosowywały się do urządzeń mobilnych w porównaniu z komputerami stacjonarnymi, jest źle. (i tak dalej)

Ale jest to metoda, która obecnie (nieco) działa.

James Foster
źródło
jak dobrze to działa, jeśli odpowiednio używasz alt & title tage?
Jayen
Nie próbowałem, ale wydaje się prawdopodobne, że Google je zaindeksuje. Jest to główne ograniczenie tego podejścia.
James Foster
1

To jest łatwe.

Przed podaniem strony musisz wiedzieć, czy jest to bot, komputer czy telefon. Następnie musisz odpowiednio ustawić zawartość. Jest to standardowa praktyka w dzisiejszych czasach i podstawowa funkcjonalność niektórych systemów CMS.

Istnieje wiele rozwiązań w SE do przeprowadzania przekierowań w oparciu o USER AGENT, które można umieścić w twoim htaccess. Jeśli odpowiada to Twojemu oprogramowaniu forum, możesz uruchomić inny kod z tego samego DB, aby dostarczyć to, czego potrzebuje Google bez plewy i dodatków.

Alternatywnie możesz wstawić mały wiersz w kodzie PHP, który robi „jeśli USER AGENT == Googlebot to nie pokazuj podpisów”.

Jeśli naprawdę nie możesz tego zrobić, możesz zmusić mod_proxy do obsługi bota i użyć go do usunięcia wszystkiego, co generuje kod php, którego bot nie musi widzieć.

Z technicznego punktu widzenia Google nie akceptuje wyświetlania swojej wyszukiwarki na innej stronie niż to, co widzi zwykły użytkownik witryny, jednak do tej pory nie usunęli BBC i innych, którzy udostępniają treści związane z przeglądarką / adresem IP / odwiedzającymi z ich wyników wyszukiwania . Mają także ograniczone możliwości sprawdzenia, czy ich bot został „oszukany”.

Alternatywnym rozwiązaniem ukrywania zawartości za pomocą CSS w celu ponownego włączenia jej przez skrypt jest również trochę szara strefa. Według własnych wytycznych Narzędzi dla webmasterów z 20.06.11 nie jest to dobry pomysł:

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

To może nie być tablet odlany z kamienia, ale jest aktualny i przez Google.

Sztuczka „ukryj treść” nie będzie działać z mniejszością ludzi, którzy nie mają javascript, może to nie być dużym problemem, jednak czekanie na załadowanie dokumentu, a następnie pokazanie podpisów nie będzie satysfakcjonującym doświadczeniem podczas oglądania sądzę, że strona się załadowała, a potem podskakuje, gdy pojawiają się ukryte podpisy, a następnie przesuwa zawartość w dół strony. Tego rodzaju ładowanie strony może być irytujące, jeśli masz niskobudżetowy net-top, ale może nie być zauważalny, jeśli masz szybką maszynę programistyczną z szybkim połączeniem internetowym.

ʍǝɥʇɐɯ
źródło
6
@ ʍǝɥʇɐɯ: wyświetlanie różnych treści w zależności od tego, kto uzyskuje dostęp do strony, jest nieco niezadowolone i może karać cię w wyszukiwarce, o ile ją rozumiem. Wolę rozwiązanie JavaScript Paulmorrisa.
WebbyTheWebbor
@ ʍǝɥʇɐɯ: erf, jeśli serwowanie spersonalizowanych treści jest nazwą gry, podobnie jak JavaScript. Ostatnio sprawdziłem, że ogólnie Internet nie działa tak dobrze bez zainstalowanego JavaScript (GMail, FaceBook, Dokumenty Google, przepełnienie stosu, Google+ - tak, już go mam;) - itp.). Nie widzę potrzeby krytykowania rozwiązania paulmorris opartego na fałszywym założeniu, że JavaScript jest niedostępny.
WebbyTheWebbor
@ ʍǝɥʇɐɯ: Może ci się podobać Matt Cutts (odpowiedzialny za SEO w Google) na ten właśnie temat: theseonewsblog.com/3383/google-hidden-text To był doskonały komentarz Paulmorrisa opublikowany w komentarzu do jego doskonałej odpowiedzi. Przykro mi, ale nazwanie JavaScript „głupotą” na takim forum jest bliskie trollingu.
WebbyTheWebbor,
... a następnie otrzymujemy to pytanie: webmasters.stackexchange.com/questions/16398/... - „upychanie słów kluczowych” jest głupie. Przepraszam za to.
20:20
Uważam, że należy to do „maskowania” i dlatego nie jest to dobra praktyka.
Σπύρος Γούλας
0

Nie, nie ma sposobu, aby roboty nie indeksowały części stron. To cała strona lub nic.

Fragmenty w wynikach wyszukiwania Google są zwykle pobierane z meta opisu na stronie. Możesz więc sprawić, by Google wyświetlał określoną część strony, umieszczając ją w metatagu opisu. W przypadku treści generowanych przez użytkowników trudno jest uzyskać dobre fragmenty, ale pobranie pierwszego posta wątku prawdopodobnie zadziałałoby.

Jedynym innym sposobem, jaki mogę wymyślić, jest użycie Javascript. Coś takiego jak sugerowana paulmorriss może działać, ale myślę, że wyszukiwarki nadal indeksowałyby zawartość, jeśli jest w HTML. Możesz go usunąć z kodu HTML, zapisać w ciągu JavaScript, a następnie dodać z powrotem przy ładowaniu strony. To jednak staje się nieco skomplikowane.

Na koniec należy pamiętać o jednej rzeczy: jeśli Google pokazuje podpisy użytkownika we fragmentach, zdecydował, że jest to część najbardziej odpowiednia dla zapytania użytkownika.

DisgruntledGoat
źródło
1
problem polega nie tyle na tym, że Google pokazuje sigpety użytkownika, ile na tych konkretnych stronach, które zajmują wysoką pozycję w Google. Problem polega właśnie na tym , że Google może uważać, że sig są istotne, kiedy tak naprawdę nie są: mam na myśli, właśnie o to chodzi w moim pytaniu.
WebbyTheWebbor
@ Webby, nie rozumiem, dlaczego nie chcesz, aby Twoje strony zajmowały wysokie pozycje? Czy masz jakieś przykładowe strony i zapytania, abyśmy mogli zobaczyć, o czym mówisz? A jeśli Google pokazuje sig w wynikach wyszukiwania, to ma znaczenie dla tego zapytania, nawet jeśli nie dotyczy samej strony.
DisgruntledGoat
1
Nie mogę podać przykładów, ale chcę , aby moja strona / forum zajmowało wysokie pozycje i robi to bardzo dobrze. Problemem jest to, że wśród wyników wyszukiwania (które są głównie na mojej stronie / forum i tak, bo to w zasadzie strona na ten temat), co powinno być realne strony wejścia są zalane wśród podpisów. To znaczy, czy naprawdę chcesz robić co prosiłem w pytaniu. I będą to zdjęcia lub JavaScript.
WebbyTheWebbor
@Webby, twoje odpowiedzi były trochę mylące, ale wydaje się, że sugerujesz, że wszystkie podpisy użytkownika są osobnymi stronami (adresami URL), a zatem pojawiają się jako oddzielne wyniki w SERP. W takim przypadku możesz zablokować te strony za pomocą pliku robots.txt. W przeciwnym razie wypróbuj rozwiązanie z opisem meta, które zamieściłem powyżej, ponieważ prawie na pewno złagodzi problem.
Disgruntled Goo
0

Możesz umieścić stronę w PHP, jeśli zawiera „else”, co prowadzi do captcha, który daje klucz do części if.

Nie obchodzi mnie to, ponieważ jeśli poświadczenia użytkownika nie pasują do mojej strony, otrzymują pustą stronę lub są wysyłane na stronę logowania.

<?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 powinien być skrótem bieżącego dnia lub czymś, co się zmienia, więc nie wystarczy dodać wartości do sesji.

Napisz w komentarzu, jeśli chcesz, żebym dodał przykładową captcha, ponieważ nie mam jej teraz na sobie.

Alfons Marklén
źródło
Ta odpowiedź zakłada, że ​​strony internetowe korzystają lub programista zna PHP, co może nie być prawdą. Utrudnia to użytkownikom dostęp do treści, co nie jest dobrą rzeczą.
John Conde
Mogę kupić, że nie każdy zna PHP, ale captcha może być „jaki jest kolor trawy”, nawet ślepy pepole o tym wie.
Alfons Marklén
-3

Najwyraźniej <! - googleoff: all -> i <! - googleon: all -> rób to, co chcesz.

Czytaj więcej 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/

Luke Madhanga
źródło
4
Nie. Googleoff i Googleon są obsługiwane tylko przez Google Search Appliance. Googlebot ignoruje je podczas wyszukiwania w sieci. Odniesienie: Czy możesz używać komentarzy Google i Googleoff, aby uniemożliwić Googlebotowi indeksowanie części strony? Połączyłeś się z dokumentacją Modułu Wyszukiwania Google, a komentarz do artykułu, do którego prowadzisz link, mówi również, że nie działa on dla Googlebota.
Stephen Ostermiller
@StephenOstermiller o racja! Darn
Luke Madhanga