问题标签 [search-engine-bots]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1135 浏览

asp.net-mvc-3 - 如何修复不应被 GoogleBot 和其他搜索引擎爬虫抓取的索引页面?

在现有的 .Net MVC3 站点上,我们实现了 URL 类似于 的分页www.mysite.com/someterm/anotherterm/_p/89/10,其中 89 是页码,10 是每页的结果数。

不幸的rel="nofollow"是,大于 3 的页码链接丢失了,并且这些页面也丢失了<meta name="robots" content="noindex,nofollow" />

问题是谷歌和其他一些搜索引擎现在已经索引了这些页面,并且现在尝试非常频繁地抓取所有这些页面,正如我们发现的那样,这开始对 prod db 服务器产生巨大影响。我们不希望抓取所有额外的数千个页面,只抓取前几个。

我将代码恢复为不包含分页的站点版本,这样我们的数据库服务器现在就不会受到如此严重的打击。因此,虽然搜索引擎会为所有这些页面收到 404 错误,但我想知道这是否是最好的做法,因为过一段时间我会再次介绍分页站点?

我可以将以下内容添加到 web.config 以将所有 404 重定向到主页:

但我认为,对于所有具有分页 URL 参数的页面,这样做将被呈现为“重复内容”。

让那些 404 持续一两个星期然后重新引入寻呼站点是最好的主意吗?

另一种选择可能是释放分页站点,并添加一些代码以拒绝超过 3 个页面的爬虫。建议?

有没有更快的方法将这些页面从索引中取出,这样它们就不会被抓取?

谢谢。

0 投票
1 回答
325 浏览

search-engine - Robots.txt 文件的 Disallow 语句中的 * 字符

不同的搜索机器人如何解释 robots.txt 文件的 disallow 语句中的 * 字符?他们都将其视为“无,一个或多个字符”吗?

让我们看下面的例子:

上面的代码是什么意思?这是否意味着任何具有“后端”的目录都不会被索引,即使“后端”这个词后面跟着任何字符集?/ 之后的 * 怎么样?写它是一个好的约定吗?

一般来说,我的问题是关于 disallow 语句中 * 的使用以及是否所有搜索引擎爬虫都以相同的方式对待它。

0 投票
3 回答
734 浏览

php - 告诉搜索引擎该页面不存在

我检查了日志,发现搜索引擎在我的网站上访问了很多虚假 URL。它们很可能是在很多链接被更改之前发生的,即使我进行了 301 重定向,一些链接也以非常奇怪的方式被更改,并且无法被我的 .htaccess 文件识别。

所有请求都由 index.php 处理。如果由于 URL 错误而无法创建响应,则会显示自定义错误页面。简化代码 index.php 看起来像这样

我刚刚意识到这个页面返回一个状态 200 告诉机器人该页面是有效的,即使它不是。

在 catch 语句中添加带有 404 的标头是否足以告诉机器人停止访问该页面?

像这样:

当我测试它时它看起来不错,但我担心 SE 机器人(可能还有用户代理)会感到困惑。

0 投票
2 回答
324 浏览

search - 如何停止所有搜索引擎,机器人抓取一些网址

我想计算广告点击小部件。

我在 robots.txt 文件中使用过:

我还添加nofollow了该小部件中的所有链接。

但是许多机器人仍然遵循该小部件中的网址。我有客户端 ip 来计算 url,我有很多 IP 表单机器人。

0 投票
1 回答
76 浏览

html - 从谷歌搜索隐藏登录字段

背景: 我的网站允许注册用户上传和分享视频。

在主页上有一个“用户名”和“密码”字段,以便注册用户可以根据需要登录。

此外,在每个视频页面上,都有用于选择比特率和 Flash 播放器的文本链接。

(有关两者的示例,请参见http://videoflier.com/http://videoflier.com/movies/1360488842878341996730。)

或在谷歌上搜索“site:videoflier.com”来看看我在说什么。

我的问题: 当谷歌或任何搜索引擎索引它时,他们当然会看到登录文本和设置视频比特率的链接(看起来像“190 234 [698] 1247 kbps | osflv [jwplayer] flowplayer”)

(在谷歌搜索“site:videoflier.com”以查看示例。)

它看起来像这样:

纸板飞机 videoflier.com/movies/1352509017371554759177 纸板飞机 作者 jesseg 190 234 [698] kbps | osflv jwplayer [flowplayer] 这是用纸板和胶带制成的模型飞机。它配备了遥控...

(请注意比特率和播放器选择看起来如何丑陋和浪费空间。)

到目前为止,我尝试以干净整洁的方式解决问题 (以及为什么我不喜欢其中任何一个。)

使用图片代替文字:我希望我的网站快速高效,所以如果我不需要,我不想使用图片作为文字。

有一个单独的设置页面:我希望该站点快速且易于使用。

robots.txt:如果搜索引擎无法读取页面,那么它就不会知道如何找到它们!

使用 CGI 隐藏搜索机器人的东西这是我所拥有的最好的想法 - 但我真的不想做一个肮脏的 hack,而且我的 CGI 似乎没有通用的方法来识别机器人。谷歌自己使用了几个不同的用户代理字符串,实际上没有一个包含“机器人”这个词。大多数包含“Googlebot”但不是全部。谁知道其他搜索引擎使用什么。

当然,我理解(谷歌也做出了这样的声明)为什么他们使用看起来像普通网络浏览器的代理字符串——因为不诚实的人试图向搜索引擎发送完全不同的内容来进行广告欺诈。

但我真的不想必须运行一个不断变化的黑名单来尝试识别所有可能的搜索引擎。听起来太像打击垃圾邮件了。此外,我只是想隐藏登录和比特率列表,以便搜索结果更易于阅读。

javascript: Javascript 会带来自己的问题(浏览器兼容性问题、可访问性等)。当它是完成这项工作的最佳工具时,我会使用它,但当我可以拥有它时,我真的很喜欢纯净的 HTML。

在一个理想的世界里:我希望我有一个类似于 <NOBOT>username:password:</NOBOT> 的 HTML 标签——但据我所知,什么都不存在。理想情况下,这个虚构的标签也会阻止搜索引擎返回基于隐藏项目的结果。将“密码”这个词输入谷歌的人肯定不是试图找到我的网站——然而谷歌可能会仅仅因为它上面有一个登录字段而返回它。

架构.org?我最初对 schema.org 抱有希望,因为它允许在 HTML 的范围内指定数据类型。不幸的是,据我所知,它的所有类别和事物都是针对以下事物的:它似乎没有“忽略”或“管理对象”选项。

也许更全面的答案是将 schema.org 广泛用于其他所有内容,以便搜索引擎已经知道从哪里获取他们的作者、描述和标题文本,然后他们可能会跳过管理控制链接。

非常感谢,

杰西·戈登

0 投票
1 回答
535 浏览

search-engine - 从谷歌动态网址中删除页面 - robots.txt

我在谷歌上有几个链接是domain.com/results.php?name=a&address=b

结果页面/参数现在已重命名,我需要删除 google 等上的现有链接。

我试过了

用户代理:* 禁止:/results.php

在 robots.txt 中,然后在 google webmaster 上添加要删除的 url:

domain.com/results.php

它说它已成功删除,但是当我查看 google 类型 domain.com - 带有参数的现有 url 都仍然存在。

我究竟做错了什么?有很多链接,所以我需要一种方法来一次处理所有链接,而不是一个接一个。

谢谢

0 投票
1 回答
620 浏览

search - 如何构建类似人类的搜索引擎查询?

我正在以编程方式与搜索引擎进行交互,我需要让它认为我是一个进行查询的人,而不是一个机器人。这涉及生成任何普通用户都可以搜索的查询,例如“ncaa 足球赛程表”或“登月是什么时候?” 我每天会进行一千多个这样的查询,并且从字典中搜索随机单词不会减少它,因为这不是一个非常典型的搜索习惯。

到目前为止,我已经想到了几种生成真实查询的方法:

  • 获取当天最热门的 google(或 Yahoo 或 Bing 等)搜索列表
  • 通过从字典中输入一个随机单词,后跟一个空格并抓取推荐的查询,从而利用 Google 的自动完成功能。

后一种方法听起来会涉及大量的逆向工程。使用前一种方法,我无法找到超过 80 个查询的列表——我发现的唯一来源是AOL 趋势(50-100) 和Google 趋势(30)。

我该如何生成大量类似人类的搜索短语?
(对于任何与语言相关的答案:我正在用 Python 编程)

0 投票
1 回答
141 浏览

javascript - 如何限制回访者的内容而不冒愤怒的机器人的风险?

我正在尝试在 website.com 的某些页面上向新访问者展示一些内容(介绍)。如果他们已经看过它,我希望再次“不打扰”用户。

假设用户进入 website.com/cool-article,然后我在顶部向用户显示介绍,然后当用户单击 website.com/useful-article-43 时,该页面现在不应包含介绍。还是我应该保留介绍并在第二页上向下滚动用户?如果用户是回访者,我也不想显示介绍。网站是用 PHP 构建的。

担心的是 - 您会选择哪些解决方案来确保 SE 机器人不会因为内容的变化而发疯?据我了解,机器人永远不会带来任何推荐人信息。

选项:

1) 查找 $_SERVER['HTTP_REFERER'] ($httpReferer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null;)
如果设置为 mywebsite.com 或 NULL
DO A 或 B

2) 存储并检查用户访问页面时设置的 cookie。session_start(); if !$_SESSION['intro']
DO A 或 B
$_SESSION['intro']='introSeen';

3) 通过 JS/localStorage?
(不必要的内容加载?)

你会怎么做?

(A&B)

A)根本不加载页面介绍

  • +当用户点击保存的链接到达页面时,加载时间更短,用户也一样。
  • - 混乱的风险
  • - 页面看起来不一样。

B)将用户向下滚动到文章,将介绍放在顶部。

  • +如果用户向上滚动页面看起来和以前一样。
  • +网站始终为所有用户和机器人提供相同的内容。
  • - 不必要的内容加载
0 投票
2 回答
404 浏览

asp.net - 如何在搜索引擎结果中隐藏 Robots.txt?

我不想在搜索结果列表中看到Robots.txt。我正在做一个asp.net项目。

我发现了一些失败的解决方案,其中之一如下:

  • 在标题中使用“X-Robots-Tag”。

但我想隐藏一个 txt 文件,因此其中没有“标题”部分。

感谢帮助。

0 投票
2 回答
1393 浏览

asp.net - 搜索机器人按下我的按钮...?我可以防止吗?

我有一个内容可以被“点赞”的网站。不为此使用任何 api,它是一个自定义的类似按钮,只是增加内容的“喜欢”统计信息。

现在,我在每个页面加载时都有一个视图计数器,还有一个点赞按钮。按下点赞按钮后,该页面生命周期内的任何连续点赞都会被禁用。

我遇到了一个问题,我的喜好超过了我的观点……理论上这不应该发生。从那以后,我实现了一些 java 代码来取消按钮的连接(基本上隐藏元素),并且我还为忽略 java 的机器人添加了一些服务器端代码。

在服务器端按钮按下时,我设置了一个会话变量,如果为该页面实例设置了此会话变量,则退出任何引发的连续事件。

当我快速单击按钮返回时,我已经将其减少到最多两个或 3 个事件。只有在第 2 次/第 3 次运行有足够的时间来识别会话变量之后,才会忽略事件代码。在我的会话 var 技巧之前,您可以快速单击该按钮 10 次,它会在页面最终回发并禁用该按钮之前增加 10 个喜欢。

所以,减少到 2 或 3 也不错,但我一直获得的点赞数多于对某些内容的看法。

  • 我的观点计算得很好,我仔细检查了。
  • 我的喜欢肯定只会在几个不需要的事件触发后捕获第一个禁用/会话 var 触发器/事件......(快速点击)
  • 我怀疑它的搜索引擎可能会跟随链接......?

补充信息:jquery 按钮禁用:

有任何想法吗?