如何阻止DiggBar

上周Digg发布他们称之为DiggBar,既作为一个新的接口Digg和双打作为一个URL缩短服务它的工作方式是,你只需要添加"digg.com/”开始Digg的URL,并创建一个短URL的形式digg.com/1234这里有一个例子DiggBar URL指向google.com:http://digg.com/d1nYVs此外,现在Digg主页链接这些DiggBar url而不是直接链接到其他网站。

但与正常的网址缩短服务,当您加载这些Digg的URL,而不是重定向你原始URL,Digg加载一个页面原来的网站的内容作为一个用户,你所看到的是,在你的浏览器的URL位置字段digg.com/1234,目标站点的内容加载下一个Digg-branded工具栏。

当然,这完全是胡说。

各种各样的网站尝试这种诡计早在90年代中期,当Netscape Navigator 2.0添加支持<框架集>标签没过多久,一个广泛的共识发展框架别人的网站是错误的url是网络的构建块他们告诉用户在哪里他们是他们给你一些书签回去或与他人分享。

DiggBar优惠,我看到没有任何参数,使它更有意义这比支持1996 -风格<框架集>网站嵌入。

所以,宣布后不久,我写代码来阻止它万博manbetx贴吧如果你试图把大多数页面通过DiggBar DF,你会欢迎用一个特殊的消息只是Digg而不是常规的内容页面Digg发送大量的流量的网站首页的顶部,但它是最糟糕的交通:盲目,边缘型文盲好了,真的。


很多人都问,所以我想我应该解释为什么这样做基本的想法是,当一个网页加载在一个框架,它HTTP引用设置的母公司(即框架页面)在正常,non-framing上下文,介绍人告诉当前页面的页面的地址被要求有关。

大多数页面DF是通过PHP,所以我添加了一个短的PHP这样的顶部附近:

<?php
if (preg_match('#http://digg.com/\w{1,8}/*(\?.*)?$#',
                            $_SERVER['HTTP_REFERER']) ) {
    echo "<p>Special message for Digg users here.</p>";
    exit;
}
?>

第一行使用正则表达式检查HTTP引用看起来像一个DiggBar URL,而我的目的,我定义为"digg.com/”其次是完全1 - 8字母或数字和一个可选的末尾斜杠它不会试图阻止所有引用url从Digg,只是那些看起来像DiggBar页面如果模式匹配,它打印一个特殊的Digg用户的消息并调用PHP的标准退出函数,它阻止页面的其余部分被传播。

(更新:我已经调整了正则表达式匹配DiggBar url模式有点,也落后于“/”和/或“?”)。

一些网站使用JavaScriptto completely block framing; I don’t want to do that, and, given DF’s configuration, it was easier for me to use PHP to target Digg specifically.