【问题标题】:Block facebook from my website从我的网站阻止 facebook
【发布时间】:2012-01-01 23:58:09
【问题描述】:

我正在运行一个安全链接方向服务 (expiringlinks.co)。如果我更改 php 中的标题以重定向我的访问者,那么当用户通过 facebook 相互发送链接时,facebook 能够显示我重定向到的网站的预览。我希望避免这种情况。现在,我正在使用 AJAX 调用来获取 URL 和 javascript 来重定向,但这会给不使用 javascript 的用户带来问题。

以下是我想屏蔽 facebook 的多种方式,但我似乎无法正常工作:

  1. 我尝试阻止 facebook 机器人(facebookexternalhit/1.0 和 facebookexternalhit/1.1),但它不起作用,我认为他们没有将它们用于此功能。

  2. 我正在考虑阻止 facebook IP 地址,但我无法找到所有这些 IP 地址,而且我认为除非我得到所有这些 IP 地址,否则它不会起作用。

    李>
  3. 我曾想过使用验证码甚至按钮,但我无法让自己对我的访问者这样做。更不用说我认为没有人会使用该网站。

  4. 我在 facebook 文档中搜索了可以“选择我退出”的元标记,但没有找到,我怀疑如果我有的话我会相信它。

任何创意或任何想法如何实施上述的?提前非常感谢您!

【问题讨论】:

  • 您是如何得知(facebookexternalhit/1.0 and facebookexternalhit/1.1) 的?是通过他们的文档还是抛弃了访问者用户代理?就个人而言,我会尝试设置所有用户的用户代理的日志,然后创建一个链接,并让 Facebook 为这个链接创建一个预览。如果你找到一个可能适用于 Facebook 的网站,请屏蔽它,看看会发生什么。 Facebook 还使用多个 URL 作为外部内容的代理,例如 http://external.ak.fbcdn.net/safe_image.php
  • 我从他们的文档和其他来源在线了解了这些机器人。我一直在使用 Piwik 进行分析,当我分享链接时无法检测到 Facebook。我不确定我是否理解您所说的作为代理的 URL 是什么意思。
  • 他们使用来自“facebook.com”域以外的域的脚本来加载您的内容。他们还缓存内容,如果再次请求相同的内容(如图像),Facebook 将加载他们的缓存版本而不是您的版本。如果您尝试多次链接到同一个 URL,这也可能在这里发挥作用。

标签: php javascript facebook redirect ip


【解决方案1】:

试试这个 - 它对我有用......

<?php 
$ua = $_SERVER['HTTP_USER_AGENT'];

if (preg_match('/facebookexternalhit/si',$ua)) { 
header('Location: no_fb_page.php'); 
die() ; 
} 

?>

【讨论】:

  • 漂亮!非常感谢!
【解决方案2】:

您可以尝试获取您的网络服务器的日志文件,并在那里搜索不常用的用户代理。 (可能包含脸书) 或者,获取日志并删除所有包含 Internet Explorer/firefox/opera... 那么你最终应该只有机器人用户代理。 然后你可以搜索 facebook 的。

【讨论】:

    【解决方案3】:

    您需要做的就是适当地设置 robots.txt。

    http://www.robotstxt.org/robotstxt.html

    【讨论】:

    • ... 只要 Facebook 确实遵守此规则。是这样吗?
    • @glglgl,我还没有尝试过,但是如果这样一个主要的在线玩家没有遵循像robots.txt 这样基本的东西,如果有任何与索引相关的法律原因的话,我会感到非常震惊和存储来自其他网站的内容。如果您已经尝试过,并且知道其他情况,请发布。
    • 我也不知道,但是虽然robots.txt 很基本,但它根本不是标准,我认为他们不会因为使用它而受到法律指责。由于他们根本不关心隐私,我不确定如果他们只是被robots.txt 告知他们会这样做。如果我错了,我们很幸运......
    【解决方案4】:

    您可以尝试使用元刷新而不是 javascript 重定向。它们适用于所有浏览器,因为页面仍然返回 200 响应,任何爬虫都应该停止在那里解析。

    【讨论】:

    • 我喜欢你的方法,但不禁想到如果 Facebook 链接爬虫检测到重定向 HTTP 标头,为什么不检测 META 重定向?
    • 因为 HTTP 标头是作为响应的一部分发送的,机器人必须理解才能运行,所以元刷新是客户端的,需要机器人解析响应并识别刷新。显然它可以做一些事情,但是如果我正在编写一个机器人来解析 URL,我可能会告诉它在收到 200 响应后停止解析。不过值得一试。
    • 现在,Facebook 也越来越聪明地识别元刷新标签。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 2012-02-22
    • 2017-07-07
    • 2016-11-27
    • 2019-11-21
    • 2022-11-14
    • 2014-04-13
    相关资源
    最近更新 更多