如何向竞争对手而不是搜索引擎隐藏我的XML Sitemap


10

我想从所有隐藏我的站点地图XML文件,但允许来自搜索引擎的访问。

怎么做呢?

我想向竞争对手隐瞒网站内容的深度。


1
如果该站点及其页面不受用户和密码的保护,则任何人都可以浏览它们,他们只需遵循您自己站点上的链接即可。
PatomaS 2014年

我可以检查Google漫游器的IP,并允许他人拒绝。尽管我们无法获得Googlebot的完整IP列表。
AgA 2014年

Answers:


9

第一步是检测要允许漫游器的用户代理,如果不是要允许的用户代理,则提供另一个文件。

例如,您可能有两个版本的robots.txt,其中一个版本包含一个,而另一个版本中没有引用该站点地图,因此,如果竞争对手在您的内看,他们将找不到该站点地图robots.txt

然后,您可以检测到对站点地图URL的访问,并仅在UA正确时才提供站点地图。如果您另外提供通用404页面,则竞争对手甚至可能不知道您的站点地图存在。

但是,到目前为止,所描述的所有措施都只是模糊不清的安全措施。可以轻易地欺骗用户代理。

因此,Google 建议,要检测真实的GoogleBot,您:

  1. 对声称为GoogleBot的IP地址执行反向DNS查找。
  2. 检查主机是否是的子域googlebot.com.
  3. 对子域执行正常的DNS查找。
  4. 检查子域是否指向抓取您网站的漫游器的IP地址。

把它们加起来:

流程图(显示站点地图时)

Microsoft 建议使用相同的过程来检测其搜寻器。

此技巧适用于Yahoo! 也一样

对于DuckDuckGo,您可以使用 IP地址列表

注意

如果您使用基于DNS查找的蜘蛛检测,则无需使用404错误。

使用404错误页面的目的是掩盖您的站点地图完全存在。但是,如果您使用的不是仅依赖User-Agent标头的更高级的技术,就不可能规避它,因此您可以安全地使用其他错误代码,例如403 Forbidden此处使用的正确错误代码。


6

问题是,如果您(很正确地)希望您的内容被搜索引擎索引,那么执行站点的任何人:在其中一个搜索引擎中搜索将能够看到对哪些URL进行了索引。

如果您想“隐藏”站点地图,可以将其放置在带有“秘密”名称的URL上,因此对于任何正在寻找它的人来说都不是很明显,但是这是将robots.txt中包含站点地图的最佳实践文件,然后将其上传到搜索引擎的网站站长工具配置文件之一,就像其他人所说的那样,很难理解为什么需要这样做。


如果使用Google网站站长工具/搜索控制台,则您甚至都不需要上传它。您只需添加一次隐藏的站点地图网址,它将继续使用它。
Devabc

4

狡猾的解决方案是生成两个站点地图。其中第一个是为了您的竞争对手,第二个是是您首选的搜索引擎。用军事术语来说,第一个站点地图是假的。

“伪装”包含您的基本网站结构,主页,联系我们,关于我们的主要类别。它看起来像是真正的交易,并且在您不需要的晦涩的搜索引擎中将非常有用。这对您的竞争对手也没有用。允许对其进行索引,以便他们找到它,并给它一个明显的名称,例如sitemap.xml。

现在,使用代码创建真实的站点地图。给它起一个诸如“ product-information-sitemap.xml”的名称,这样它是一个明智的名称,但实际上比密码更容易猜测。

在Sitemap文件夹的apache配置中,放置一些内容,以便搜索引擎可以访问第二个站点地图,但不能对其进行索引:

<IfModule mod_rewrite.c>
    <Files product-information-sitemap.xml>
        Header set X-Robots-Tag "noindex"
    </Files>
</IfModule>

现在创建代码以保持更新,请考虑使用第三张图像站点地图。根据需要对它进行降级以创建“伪装”。也要注意时间戳,Google确实要注意那些时间戳,如果您的站点地图很大,这一点很重要。

现在创建一个“ cron”作业,以定期将您的产品站点地图提交给Google。在您的crontab条目中添加如下所示的内容,以每周提交一次您的真实站点地图:

0 0 * * 0 wget www.google.com/webmasters/tools/ping?sitemap=http%3A%2F%2Fwww.example.com%2Fsitemaps%2Fproduct-information-sitemap.xml

请注意,URL是URL编码的。

如果大小有问题,您也可以gzip您的站点地图,尽管您的网络服务器应该启用该gzip压缩文件(如果启用了该功能)。

您的robots.txt不必特别,只要它不禁止进入站点地图就可以了。确实不需要根据用户代理字符串或任何复杂的内容发送不同的robots.txt文件。只需将您的宝贵内容提取到一个非广告的补充文件中,然后通过cron作业将其提交给Google(而不是等待漫游器)。简单。


0

我不明白为什么网站的结构会导致您遇到竞争对手问题?

站点地图的重点是将页面编入索引,以便人们可以更轻松地找到它们,这在一定程度上必须揭示网站的组织方式,例如:

  • /news/ 包含您的新闻文章
  • /forum/ 是所有论坛讨论的地方

这些将是可索引的,以获取更多的流量并显示信息。

您不想索引的文件夹就像

  • 允许网站正常工作的PHP类和函数
  • 网站图像,CSS,JavaScript文件夹
  • 管理小组

然后,如果是这种情况,那么这些内容根本就不会出现在您的站点地图中。另外,您也可以将它们从索引中排除。


0

如果您拥有要允许的漫游器的IP地址,请执行以下操作:

<Limit GET POST PUT>
order deny,allow
deny from all
allow from 192.168.1.1 # IP 1
allow from 192.168.1.2 # IP 3
allow from 192.168.1.3 # IP 2
</LIMIT>

如果您希望基于用户代理字符串:

Order Allow,Deny
allow from env=good_bot_1
allow from env=good_bot_2

Google的完整IP地址列表,必应是机密。他们不会将其透露给全世界,因为这会给网站带来很大的隐瞒风险。
AgA 2014年

那就是为什么我添加了第二种可能性:)在名称上要容易得多,但是想提供一个完整的答案
Martijn

0

您可以尝试的一种方法:在常规的爬网会话中,Google机器人会访问robots.txt,然后转到站点地图文件。为所有robots.txt内容推送Cookie,并仅允许具有Cookie的用户访问站点地图。当Google漫游器不接受Cookie时,就会出现问题。反之亦然。当用户访问robots.txt以外的页面时,推送Cookie,并拒绝使用Cookie的用户访问站点地图。另外,为您的站点地图添加一个混乱的名称,该名称会随着时间的变化而变化,从而使其难以猜测。如果您的竞争对手在其浏览器中启用了Cookie,那么除非他们遵循搜索引擎遵循的确切路径,否则他们将很难访问站点地图。


0

我假设我已正确理解您的要求,因此我有勇气回答。

</html>标记之前给您的站点地图提供图像链接。使用透明的1px gif文件:

<a href="sitemap.xml"><img src="transparent.gif" alt="" height="1" width="1" /></a>

在包含您的站点地图链接的页面中,设置相关的元标记:

<meta name="robots" content="{index or noindex},follow">

当您按Ctrl+ A选择所有页面时,请检查视觉状态。1px链接是否可见,对您来说有风险吗?

如果您说是,则另一种选择是:

  1. 创建指向您的站点地图的链接: <a href="sitemap.xml">&nbsp;</a>
  2. 更改字体颜色与背景颜色相同
  3. 使用CSS技术,将此链接隐藏在图像后面

这样,普通用户就不会注意到您的链接。搜索引擎会意识到这一点。但是请注意,您问题的内在本质涉及不可能。

我说这是不可能的,因为例如,如果用户在Google中搜索此字词,

* site:www.yoursite.com

如果他们不厌倦地单击next链接,那么全世界都会看到您的所有链接。

希望这些对您有所帮助。


当您通常不链接到XML站点地图时,为什么这会阻止用户查找/访问XML站点地图?
MrWhite

我对自己问了同样的问题,但这就是我从问题所有者那里得到的理解。我认为这是他的要求。我不确定:-)
Andre Chenier 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.