作为负责一个拥有论坛的小型网站的网站站长,我经常收到用户的抱怨,即内部搜索引擎和外部搜索(例如使用Google时)都完全被用户的签名(他们使用了很长时间)签名,这是论坛经验的一部分,因为签名在我的论坛中很有意义。)

所以基本上,到目前为止,我看到了两个选择: />将签名呈现为图片,并在用户单击“签名图片”时将其带到包含真实签名(带有签名中的链接等)的页面,并且该页面被设置为不可抓取由搜寻引擎蜘蛛)。这会消耗一些带宽并需要一些工作(因为我需要一个HTML渲染器来生成图片等),但显然可以解决该问题(存在一些小问题,因为签名不遵守字体的字体/颜色方案)用户,但我的用户无论如何都对他们的签名很有创造力,使用自定义字体/颜色/大小等,因此问题不大。)
将包含签名的网页的每个部分标记为非可爬网。

但是我不确定稍后的内容:这可以做到吗?您可以仅将网页的特定部分标记为不可抓取吗?

#1 楼

这是我在Stack Overflow上为Google的noindex标记提供的答案:

您可以通过将部分内容放入受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.


您可以使用AJAX加载隐藏文件的内容,而不必使用iframe。这是一个使用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)
17年7月27日在9:18

只要要从中获取AJAX的位置都被robots.txt阻止。

–斯蒂芬·奥斯特米勒(Stephen Ostermiller)
17年7月27日在9:49

您能否请检查此webmasters.stackexchange.com/questions/108169/…并提出建议。

–普拉纳夫·毕鲁卡(Pranav Bilurkar)
17年7月27日10:00



只要robots.txt阻止了要从中获取AJAX的位置-请对此进行详细说明。

–普拉纳夫·毕鲁卡(Pranav Bilurkar)
17年7月27日在11:05

Google会对那些隐藏自己的javascript以防止其被抓取的行为进行处罚,以防止滥用。 iframe也一样吗?

–乔纳森
18年1月28日在16:40

#2 楼

另一种解决方案是将sig包裹在样式设置为display:none的span或div中,然后使用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库。

评论


+1,我想了一下,但难道不是各种蜘蛛都将它视为“隐身”的一种形式吗?

– WebbyTheWebbor
2011年7月4日13:55



不是Google提供的:theseonewsblog.com/3383/google-hidden-text

–paulmorriss
2011年7月4日在14:31

我觉得这很整洁:-)

–paulmorriss
2011年7月4日在14:42

在最严格的定义中,这可以被认为是伪装。但是,他可以使用document.write(“”);使用javascript打印所有签名。 Google不会在javascript中建立索引。 support.google.com/customsearch/bin/…

– Athoxx
2013年1月9日15:33

@ Cristol.GdM正确。这个答案不再相关,因为像Google这样的搜索引擎现在在页面上执行JavaScript作为索引过程的一部分。

– Maximillian Laumeister
19年4月8日在23:08

#3 楼

我有一个类似的问题,我用css解决了,但是也可以用javascript和jquery完成。我不希望Google机器人看到该机器人,也不希望将其放置在该类的span中。

2-在页面的主CSS中,我会看到类似

的东西
.disallowed-for-crawlers {
    display:none;
}


3-创建一个名为disallow.css的CSS文件,然后将其添加到robots.txt中以禁止其被抓取,因此抓取工具将无法访问该文件,但之后将其添加为对您页面的引用主要的CSS。

4-在disallowed-for-crawlers中,我放置了代码:

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


您可以使用javascript或css玩。我只是利用了disallow和CSS类。 :)希望对别人有帮助。

评论


我不确定这是由于抓取工具无法访问.css文件(这是问题吗?因为抓取工具何时访问和抓取特定的css文件?),而不仅仅是由于display:none和抓取工具了解它不会被显示,所以我不确定他们没有索引它。即使是这种情况,您如何实际向人类用户显示内容?

–ΣπύροςΓούλας
18-11-30在7:55



在为人类用户加载步骤4时显示内容,因为允许他们查看该文件(disallow.css)。如今,有关机器人如何加载CSS的工作,这是受人尊敬的搜索引擎所采用的方式,这就是它们确定网站是否适合移动设备的方式,不尊重它的爬虫不值得担心,主要的搜索引擎会读取CSS和javascript进行爬虫页,他们已经干了大约...现在快6年了?也许更多。

–罗兰多·雷塔纳(Rolando Retana)
18年11月30日在10:36

您可以提供支持该主张的资源吗?请参阅webmasters.stackexchange.com/questions/71546/…和yoast.com/dont-block-css-and-js-files,最重要的是在这里webmasters.googleblog.com/2014/10/…描述的内容作为坏习惯。

–ΣπύροςΓούλας
18-11-30在11:13

如果我希望Google正常查看我的网站并阻止所有CSS,这是一种不好的做法,并且是不好的做法,因为它们会解释CSS,但在这种情况下,我阻止了一个特定的文件,而不是所有的CSS,OP问关于防止谷歌阅读页面的一部分。但是我不希望Google抓取这些部分,所以我只阻止了一个CSS(不是全部,而是一个)。并支持您所说的说法?爬虫阅读JS和CSS的那个?只需访问Google网站站长工具并查看“以机器人抓取”的方式,您就可以轻松地看到它们如何读取CSS和JS。

–罗兰多·雷塔纳(Rolando Retana)
18年1月1日,0:55

另外要补充一点,在我的特定情况下,并不是我不想对Google Crawler做任何事情,我只是不想让谷歌阅读一段看起来在所有页面中都重复的信息。如电话号码,地址,相关产品或与Google无关的信息。

–罗兰多·雷塔纳(Rolando Retana)
18/12/1在1:10



#4 楼

一种方法是使用文本图像而不是纯文本。

Google最终可能会足够聪明,可以从图像中读取文本,因此它可能并不完全面向未来,但从现在开始至少应该可以使用一段时间。

这种方法有很多缺点。如果一个人有视力障碍,那就很糟糕。如果您希望您的内容适应于移动设备而不是台式机,那就不好了。 (依此类推)

但这是当前(某种程度上)有效的方法。

评论


如果您正确使用alt和title tage,此功能效果如何?

–贾恩
2015年12月26日下午5:26

尚未尝试过,但Google似乎会抓取这些内容。这是此方法的主要限制。

–詹姆斯
16年1月9日,下午4:14

#5 楼

这很容易。

在为您的页面提供服务之前,您需要知道它是机器人,计算机还是电话。然后,您需要相应地设置内容。这是当今的标准做法,也是某些CMS的核心功能。

SE上有很多解决方案,可以根据htaccess中的用户代理进行重定向。如果这适合您的论坛软件,那么您可以在同一个数据库上运行不同的代码,以提供Google所需的内容,而无需花很多功夫。如果USER AGENT == Googlebot,则不显示签名'。该机器人不需要看。可以从搜索引擎结果中提供特定于浏览器/ IP /访客的内容。他们查看自己的漫游器是否被“限制”的手段也很有限。

用CSS隐藏内容以使其可以通过脚本重新启用的替代解决方案也有些灰色。根据他们自己的网站管理员工具指南(2011年6月6日),这不是一个好主意:

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

这可能不是用石头铸成的平板电脑,但它是Google的最新资料。隐藏内容的技巧对没有javascript的少数人不起作用,这可能不是一个大问题,但是,等待文档加载然后显示签名不会像您那样令人满意。认为页面已加载,然后它将随着隐藏签名的出现而跳来跳去,然后将内容推入页面。如果您的网络低端,这种页面加载会很烦人,但是如果您在快速的Internet连接上具有快速的开发人员计算机,则这种页面加载可能不会很明显。

评论


@ʍǝɥʇɐɯ:根据访问者访问页面的方式提供不同的内容有点让人讨厌,据我所知,它可能会在搜索引擎中对您造成伤害。我非常喜欢paulmorris的JavaScript解决方案。

– WebbyTheWebbor
2011年7月4日在15:34

@ʍǝɥʇɐɯ:erf,如果提供个性化内容是游戏的名称,那么JavaScript也是如此。最后,我检查了没有安装JavaScript(GMail,FaceBook,Google Docs,堆栈溢出,Google + -是的,我已经知道了;等等)的情况下,Web整体确实无法正常工作。我认为没有必要基于错误的前提(即JavaScript不可用)来批评paulmorris的解决方案。

– WebbyTheWebbor
2011年7月4日在16:19



@ʍǝɥʇɐɯ:您可能喜欢Matt Cutts(负责Google SEO的主题)的主题:theseonewsblog.com/3383/google-hidden-text这是paulmorris在其出色回答中发表的出色评论。抱歉,在这样的论坛上称JavaScript为“愚蠢”已接近尾声。

– WebbyTheWebbor
2011年7月4日在19:34

...然后我们得到一个问题:webmasters.stackexchange.com/questions/16398/…-“关键字填充”很愚蠢。对于那个很抱歉。

–ʍǝɥʇɐɯ
2011年7月4日在20:17

我认为这属于“伪装”,因此不是一个好习惯。

–ΣπύροςΓούλας
18-11-30在7:51

#6 楼

不,没有办法防止机器人抓取页面的一部分。它是整个页面,什么也没有。

Google搜索结果中的摘录通常取自页面上的元描述。因此,您可以将其放在meta description标记中,以使Google在页面的特定部分显示。使用用户生成的内容很难获得良好的摘要,但是采取线程的第一篇文章可能会起作用。像paulmorriss这样的建议可能有用,但是我认为如果内容在HTML中,搜索引擎仍会对其进行索引。您可以将其从HTML中删除,将其存储在Javascript字符串中,然后在页面加载时重新添加。不过,这要复杂一些。 br />

评论


问题不在于Google在其摘要中显示用户的信号,而是这些特定页面排在Google的首位。此处的问题恰恰是Google可能认为信号实际上无关紧要:我的意思是,这正是我的问题所在。

– WebbyTheWebbor
2011年7月4日15:32



@Webby,我不明白,您为什么不希望自己的页面排名很高?您是否有一些示例页面和查询,以便我们了解您在说什么?而且,如果Google在搜索结果中显示信号,则该信息与该搜索查询相关,即使与该页面本身无关。

–心怀不满的山羊
2011年7月4日在16:05

我无法举一些例子,但是我确实希望我的网站/论坛排名很高,而且做得非常好。问题在于,在搜索结果中(无论是搜索结果还是大部分都在我的站点/论坛中,因为它基本上是主题站点),真正的输入页面应该是签名之间的泛滥。我的意思是,我确实很想做我在问题中问的事情。还有图片或JavaScript。

– WebbyTheWebbor
2011年7月4日在16:24

@Webby,您的回答有些混乱,但是您似乎暗示您的用户签名都是单独的页面(URL),因此在SERP中显示为单独的结果。在这种情况下,您可以通过robots.txt阻止这些页面。否则,请尝试我上面发布的元描述解决方案,因为几乎可以肯定地可以缓解该问题。

–心怀不满的山羊
2011年7月5日在9:42



#7 楼

您可以将页面放入PHP if中,并带有导致其他验证码(如果提供了if部分的密钥)的“ else”。如果匹配在我的页面上,他们会得到空白页或发送到登录页面。不足以将值添加到会话中。

评论


该答案假设网站使用或开发人员知道PHP,但事实并非如此。而且,这使用户难以获得内容,这不是一件好事。

–John Conde♦
17年5月27日晚上11:50

我可以买到不是每个人都知道PHP,但是验证码可以是“草的颜色”,甚至盲人也知道。

– AlfonsMarklén
17年5月27日在13:40



#8 楼

显然,<!-googleoff:全部->和<!-googleon:全部->执行您想要的操作。

阅读更多https://www.google.com/支持/企业/静态/gsa/docs/admin/70/gsa_doc_set/admin_crawl/preparing.html#1076243

https://perishablepress.com/tell-google-to-not-index-certain页面的一部分/

评论


不可以。只有Google Search Appliance支持Googleoff和Googleon。 Googlebot会忽略它们进行网络搜索。参考:您可以使用googleon和googleoff注释来阻止Googlebot将部分页面编入索引吗?您已链接到Google Search Appliance文档,并且对所链接文章的评论也表明它不适用于Googlebot。

–斯蒂芬·奥斯特米勒(Stephen Ostermiller)
16年1月7日在20:42



@StephenOstermiller哦,对了!达恩

–玛丹卡(Luke Madhanga)
16年1月8日,0:29