从我的网站屏蔽 Facebook

问题描述 投票:0回答:5

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

以下是我想要阻止 Facebook 的多种方法,但我似乎无法开始工作:

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

  2. 我正在考虑屏蔽 Facebook IP 地址,但我无法找到所有这些地址,并且我认为除非我获得所有这些地址,否则这不会起作用。

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

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

有什么创意或想法如何实施上述想法吗?提前非常感谢!

php javascript facebook http-redirect ip
5个回答
2
投票

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

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

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

?>

0
投票

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


0
投票

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


0
投票

可以使用 geoip2 模块在 nginx 中完成。

例如,此块转到配置的 http { 部分

/etc/nginx/conf.d/geoip.conf

geoip2 /usr/share/GeoIP/country_asn.mmdb {
     # if you have some database update script, you can configure auto reload
     # auto_reload 1h;
     $geoip2_asn asn;
     $geoip2_as_name as_name;
     $geoip2_continent continent;
     $geoip2_continent_name continent_name;
     $geoip2_country country;
}

并在指定地点使用它

将其放置在适当的位置

if ($geoip2_asn = "AS32934") {
    return 402;
}

-2
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.