如何以编程方式检测用户代理是否阻止访问Facebook

本文关键字:是否 访问 Facebook 用户代理 检测 编程 方式 | 更新日期: 2023-09-27 17:53:34

我们正在开发一个web应用程序(http://beta.dammela.it),它使用FB Graph api服务器端,FB Javascript SDK和社交插件。

与FB的集成是深,我们想检测当一个用户访问我们的网站是背后的代理阻止所有流量到Facebook属性(如在一些工作场所)。

如果我们可以检测到他被阻止,我们可以给他/她一些提示,帮助,解释和一些替代方法登录和与应用程序交互。

但是我不知道该怎么做。

我猜,但只是我的猜测,有一种方法可以检测用户访问Facebook是否被阻止检查Javascript SDK中的某些东西,但我没能找出什么和/或如何。

任何想法?

如何以编程方式检测用户代理是否阻止访问Facebook

解释:
我们试着下载facebook的图标。如果它抛出一个错误,那么我们知道facebook被封锁了。
注意:当代理阻止URL时,它会返回一个4xx范围内的错误给客户端。

代码:

var img = new Image();
img.onerror = function () {
 alert("It seems Facebook is blocked!"); 
}
img.src = "http://facebook.com/favicon.ico";

你可以在这里试一下。

更新:用客户端JavaScript替换服务器端c#代码。

我的建议是,既然你正在加载Facebook JS SDK,那就看看使用动态脚本加载功能,这些功能是在网络上的库中(我认为Google的Closure已经内置了),并尝试动态加载SDK。

此时,您应该能够a .从尝试中捕获错误,或者B.询问脚本是否成功加载(通过框架提供的方法或仅仅通过调用SDK操作并检查是否得到某种未定义的错误)。

如果你不能加载SDK,这意味着发生了灾难性的事情。

是否FB移动JS文件的位置或用户被代理和阻止(甚至FB可能会关闭我想)。

让您的程序访问"http://www.facebook.com/",看看是否能得到与当前主页上类似的源代码。如果你可以,那么就没有阻止Facebook,否则它就是!: D

我认为最合适的方法是创建特殊的测试页面,您可以通过fb api输出一些测试数据和两个类似的按钮"我可以看到数据"页面上没有数据"。根据用户的回答,你可以给他/她小费或继续工作

尝试将此插入到您的HTML代码中:

<strong>
<div class="fblikebutton_button" style="float: ; margin-left: 10px;">
   <iframe src="Delphi%20Certification%20Beta%20Program%20_%20Andreano%20Lanusse%20Blog%20_%20Technology%20and%20Software%20Development_files/like_002.htm" allowtransparency="true" style="border: medium none; overflow: hidden; width: 450px; height: 26px;" scrolling="no" frameborder="0"></iframe>
</div>
</strong>

<div class="fblikebutton_button" style="float: ; margin-left: 10px;">
<iframe src="Delphi%20Certification%20Beta%20Program%20_%20Andreano%20Lanusse%20Blog%20_%20Technology%20and%20Software%20Development_files/like_002.htm" allowtransparency="true" style="border: medium none; overflow: hidden; width: 450px; height: 26px;" scrolling="no" frameborder="0"></iframe>
</div>