Feedly正在窃取您的内容-这是故事及其代码

上周,Feedly推出了一个有争议的新“功能" — 劫持feed链接以窃取数百万博客作者的流量

将与Feedly共享的链接重定向到Feedly自己的观点对于许多博客的原始内容创建者来说,文章的标题而不是原始网站上的文章本身是值得关注的。这不仅会导致流量下降,而且还会吸引那些关注特定博客的人。

这是人们为何生气的完整故事,以及一个博客如何帮助纠正这种情况。我还研究了他们的源代码,向您展示了他们的小技巧有多肮脏。

应归功于:数字阅读器是该新闻的原始出处,我只是决定

首先,好消息

在撰写本文时,此行为已得到部分纠正,因此缩短了Feedly链接确实已发送到发起者站点,但是对HTTP状态代码的快速检查显示,重定向不是通过典型的服务器级别方式通过301或302重定向(200,Feedly正在发送)完成的, “是的,我们拥有该页面,请稍候"; 404表示“未找到"; 301表示“永久重定向到另一个URL;而302表示“临时重定向")

这意味着重定向是在JavaScript中执行的,因此我想了解更多信息。使用名为curl的命令行网页获取工具,在重定向发生之前(因为CURL无法执行JavaScript),我能够获取到Techmeme.com的示例Feedly链接的源代码-并且它揭示了一些令人惊讶的花哨的技巧。这就是我找到的东西。

(如果您想看一下,我已经在这里上传了完整的源代码-我在下面仅提供了一些有趣的摘要)

一些人担心SEO的含义是,其内容基本上被盗并在其他地方重新发布;好消息是Feedly正确设置了 rel =“ canonical" 元标记,以指示Google所有链接值都应传递到原始网站上。但是,无法确定是在投诉开始之后还是从一开始就添加了此代码。

		<link rel="canonical" href="http://www.techmeme.com/131202/p30#a131202p30" />

他们正在剥离广告

在复制广告内容时可能会被误导易读性功能将页面精简到其核心要素,Feedly去除了可能已嵌入原始供稿项中的所有广告,跟踪和社交共享按钮。以下是被剥夺的全部内容:

var visualExcludePatterns = [ "feedproxy","feedburner","/~","feeds.wordpress.com","stats.wordpress.com","googleadservices.com","feedads","tweet-this", "fmpub","-ads","_ads","pheedo","zemanta","u.npr.org/iserver","openx.org","slashdot-it","smilies","/ico-","commindo-media.de","creatives.commindo-media","doubleclick.net","i.techcrunch","adview","/feed.gif",".ads.","/avw.php”,"wp-digg-this","feed-injector","/plugins/","tweetmeme.com","_icon_","/ad-","share-buttons","feedsportal.com","buysellads","holstee","musictapp","/ad_","/button/","donate.png","/sponsors/","googlesyndication.com","/pagead","/adx","assets/feed-fb","assets/feed-tw","feedburner.com/~ff","gstatic.com","feedsportal.com"];

出于某种原因,拿出“捐赠"按钮似乎特别令人讨厌。

它们正在劫持链接

在这里,我们到了最严重的地步,因为Feedly不仅从您的网站上抓取了内容,而且还剥去了所有原始的社交按钮并重写了元数据。这意味着,当某人随后共享该项目时,实际上他们将共享Feedly链接而不是原始帖子。任何点击该链接的人都会直接进入Feedly。

那您可能会问什么呢?当帖子广为传播时,它可以为所涉及的网站带来巨大的好处-提高页面浏览量和广告收入,并扩大受众。 Feedly完全从网站上窃取了特定利益,以扩大自己的用户群。 Feedly代码包含对移动设备的检查,这些移动设备会将用户定向到相关的appstore页面。

function action( where ){var actionName = "follow";var url = "http://feedly.com/#" + encodeURIComponent( "subscription/" + feedInfo.id );if( /iPhone|iPad/i.test( navigator.userAgent ) ){actionName = "install";url = "http://itunes.apple.com/us/app/feedly/id396069556";}else if( /android/i.test( navigator.userAgent ) ){actionName = "install";url = "market://details?id=com.devhd.feedly";}        _gaq.push( [ '_trackEvent', bucket(), actionName + "." + where, feedInfo.id ] );        window.setTimeout( function() { document.location.href = url;},  20 );window.event.cancelBubble = truewindow.event.stopPropagation();window.event.preventDefault();}

这并不是“只是使文章更易于查看",而是在窃取流量,简单明了。

最初的解决方法:硬编码的排除列表

当数字阅读器首次向Feedly投诉时,他们的回应是重新编码Javascript以包含排除列表。他们从字面上向每个Feedly链接添加了一个检查,以查看它是否是The Digital Reader中的一项,如果是,则绕过页面劫持。

var siteExcludePatterns = [ "/TheDigitalReader/" ];function shouldExcludeSite( url )

这当然是一种绝对荒谬的做法,他们打算随着时间的流逝添加到该列表中,并且有更多的博客抱怨吗?

数字阅读器的内特回答:

您在哪里下车要求我退出你的劫持?这就像是在说我应该要求某人停止用脸钱包撞我。但是,您认为这是合理的吗?

他们的第二个解决方法:绕过所有代码的快速技巧

在我只能认为随后出现的投诉数量巨大之后,他们进行了调整劫持过滤器如下:

if( kind == "partial" || shouldExcludeSite( "http://www.techmeme.com/131202/p30#a131202p30" ) || true ){document.body.innerHTML = "";document.location.href = "http://www.techmeme.com/131202/p30#a131202p30";}

“部分"是指所抓取的内容是全部还是部分提要-劫持提要根本只发布摘录是没有意义的。大概,此功能是在选择是否将用户发送到原始站点时发生的唯一检查。您可以在此之后看到第一个修复程序,该调用程序将调用该函数以检查此站点是否在已选择退出的站点列表中;但是随后我们可以看到他们的最终解决方案–

|| true.

如果您有任何编程经验,您会发现快速的技巧说“以下代码将始终运行",并且通常仅用于调试。如果这三个条件中的任何一个都成立(前两个条件不再重要),则Feedly会立即将用户重定向到原始站点。

现在就这样。那么,我们学到了什么?

基本上,Feedly致力于创造一种瘦身的阅读体验,但是他们的追求方式-重写链接以通过随后的社交分享来传播自己的服务实在是令人恶心。 。这并不是Feedly最近所做的唯一坏举-上个月,他们开始要求使用Google+帐户登录(已经知道Google+登录在YouTube上的运行情况如何,除非您已经为99美元的Pro帐户付费了。

标签: 提要阅读器 提要阅读器