防止网页被嵌入框架的代码

作者: 阮一峰

日期: 2008年10月12日

最近,国内开始流行另一种流氓行为:使用框架(Frame),将你的网页嵌入它的网页中。

比如,有一家网站号称自己是"口碑聚合门户",提供全国各个网上论坛的精华内容。但是,其实它就是用框架抓取他人的网页,然后在上面加上自己的广告和站标,这同盗版书商有何不同?!

不明内情的访问者,只看到地址栏是该门户的URL,不知道真正内容部分的网页,其实来自另一个网站。

为什么我反对这种做法?

  1)它故意屏蔽了被嵌入网页的网址,侵犯了原作者的著作权,以及访问者的知情权;

  2)大量业者使用的是不可见框架,使得框架网页与被嵌入的网页视觉上完全相同,欺骗性极高;

  3)不良业者在被嵌入网页的上方或周围附加广告(甚至病毒和木马),不仅破坏原作者的设计意图和形象,而且属于侵权利用他人资源的谋利行为;

  4)如果访问者在框架内部,从一个网页点击到另一个网页,浏览器的地址栏是不变的,这是很差的用户体验,并且访问者会将这种体验归咎于原网页的作者。

如果确有必要,将他人的网页嵌入自己的框架,那么应该同时满足以下三个条件:

  A. 在框架网页的醒目位置,清楚地说明该网页使用了框架技术,并明确列出原网页的URL网址。

  B. 在框架网页的醒目位置,向访问者提供"移除框架"的功能。

  C. 不得附加任何广告或恶意代码。

如果你经常使用Google的图片搜索,你就会知道,Google就是这样做的。

当然,流氓业者不会理睬你的正当要求。所以,我写了一段很简单的javascript代码,大家只要将它放入网页源码的头部,那些流氓就没有办法使用你的网页了。

<script type="text/javascript">

if (window!=top) // 判断当前的window对象是否是top对象

top.location.href =window.location.href; // 如果不是,将top对象的网址自动导向被嵌入网页的网址

</script>

UPDATE

2010.8.15

发布升级版代码,使得除了本地域名以外,其他域名一律无法将你的网页嵌入框架。

(完)

留言(32条)

补充下,以前大旗甚至把豆瓣小组的讨论抓过去,再给每个发言人设一个新用户。。。。搞得和真的一样,太囧了

抱歉我上面的留言好像把大旗和另一个网站搞混了,可以删了>

是啊,鲜果很无耻。我看不到实际地址,我不可能收藏鲜果的地址啊。我肯定收藏别人的实际地址。

问题是,如果这段代码放在网页头部,如果他们不是嵌入整个网页,而是将Feed嵌入到框架里,那这段代码就等于无用了。

多谢提醒并分享解决办法。

引用Jason Ng的发言:

问题是,如果这段代码放在网页头部,如果他们不是嵌入整个网页,而是将Feed嵌入到框架里,那这段代码就等于无用了。

这个没办法,除非你的Feed不提供全文。

这种将访问全部建立在别人网站上,却打着自己提供的内容的样子

消耗别人资源为自己谋利益的行为和盗链有什么区别,和讯雷有什么区别。和一些什么资源站,全部都是链别人资源有什么区别。


这是无耻的行为。

不是未经许可,而是未经书面许可

不然人家说得到衍生许可或者间接许可,从别人那复制或者引用

恩 把首页导入比较好 这样不读图片的话 可以节省流量 还可以自我宣传

每天4w的点击是如何产生的?

强烈支持,国内就是太多这种流氓,连基本的作者和出处都不注明。就连很多大的媒体和网站都是如此,令人恶心

强烈支持

我们这社会下,产生任何怪胎、丑恶都已经不足为奇

觉得鲜果这类的网站应该更像导航站,比如http://www.xianguo.com/go.php?fi=381979378,从他网站的某处点了之后完全应该是最后跳转到blog的实际网址,这样对blog才是公平的。可惜国内网站流氓惯了……

真的不作恶,挺难的。谢谢分享解决方法

鲜果离死不远了,诅咒它!

个个都视道德如粪土啊...

一而再,再而三地侵犯别人的著作权..

什么时候有明文法规限制一下呢?

嗯 iframe的问题要值得重视
最近clickjacking的出现 iframe有更加可怕的应用(相比隐藏地址)
你那段js最好加到所有的网页当中……

博主的网页使用这段代码了吗?

鲜果这样的一个做法,还照成,我用手机拨号上网时,无法通过嵌套的框架查看页面

可恶,是说这个鲜果怎么回事,老看不到网页的实际地址,已经将其从收藏夹只删除了,现在我用抓虾。

引用ibokii的发言:

博主的网页使用这段代码了吗?

暂时还没用,因为一用的话,本文中那个举例的网址就不会有效果了。

鼎力支持一峰的观点!
我现在看你的blog是以Google Reader阅读为主,有不错的还是喜欢来这里看这个淡黄色的背景。

咋对付20ju呢?

用上了,谢谢

生效了,谢谢

将近5年过去了,框架倒是用的少了,但流氓行为依然猖獗。

貌似用百度搜视频一直是这样诶

对阮兄钦慕已久,看过无数次你的blog,今天也表示一下支持!

<meta http-equiv="Widow-target" Content="_top">
这样好像也可以防止别人在框架里调用你的页面~
不过是写在标签里的~

这几年Html5突然兴起,正好毕业随着大流进军到H5的培训当中 马上要毕业了。心里好虚。其实我对于H5还是挺有兴趣的。培训了4个月了 可是上面的那段代码还是看不太理解。像你们这种大牛是如何的练成的?给我们培训的老师每一个都强烈推荐来看你的文章。以后每天尽量啃一篇阮老师的文章。

有条留言没看懂:

Jason Ng 说:

问题是,如果这段代码放在网页头部,如果他们不是嵌入整个网页,而是将Feed嵌入到框架里,那这段代码就等于无用了。

-----------------------

请问将Feed嵌入到框架里是指什么?Feed是什么?

我要发表看法

«-必填

«-必填,不公开

«-我信任你,不会填写广告链接