Интернет

Feedly украл ваш контент — вот история и их код

Feedly крал ваш контент - вот история и их код

На прошлой неделе Feedly представила новую спорную «функцию» — захват ссылок на каналы для кражи трафика у миллионов блоггеров .

Перенаправление общих ссылок с Feedly на собственное представление Feedly статьи вместо самой статьи на оригинальном сайте — это проблема для создателей оригинального контента во многих блогах. Это не только приводит к потере трафика, но и обманчиво для тех, кто следит за определенным блогом.

Вот полная история того, почему люди злятся, и как один блоггер помог исправить ситуацию. Я также углубляюсь в их исходный код, чтобы показать вам, насколько грязны их маленькие хитрости.

Благодарность: Digital Reader был первоначальным источником этой новости — я просто решил немного подробнее изучить и узнать, чем они занимались.

Во-первых, хорошие новости

На момент написания, поведение было несколько исправлено, так что укороченные ссылки Feedly действительно отправлялись на сайт создателей, но быстрая проверка кода состояния HTTP. обнаружил, что перенаправление не выполнялось обычным способом на уровне сервера с перенаправлением 301 или 302 (200, которое отправляет Feedly, означает «да, у нас есть эта страница, удерживайте»; 404 означает «не найдено »; 301 означает« постоянное перенаправление на другой URL; 302 означает «временное перенаправление») .

Это означало, что перенаправление выполнялось в JavaScript, поэтому я хотел узнать больше. Используя инструмент извлечения веб-страниц из командной строки, называемый curl , я смог получить исходный код примера ссылки Feedly на Techmeme.com до того, как произошло перенаправление (поскольку CURL не будет выполнять JavaScript) — и это выявило некоторые неожиданные лакомые кусочки. Вот что я нашел.

(Я загрузил полный исходный код здесь, если вы хотите посмотреть — я только показываю некоторые интересные фрагменты ниже)

Некоторые люди были обеспокоены последствиями 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.

Снимок скриншота содержимого из TheDigitalReader
Снимок скриншота содержимого из TheDigitalReader

Так что, спросите вы? Когда сообщение становится вирусным, оно может принести огромную пользу рассматриваемому сайту — повысить количество просмотров страниц и доходы от рекламы, а также расширить аудиторию. Feedly открыто похитил эту конкретную выгоду с сайта, чтобы расширить собственную базу пользователей. Код Feedly включал проверки мобильных устройств, которые направляли бы пользователей на соответствующую страницу магазина приложений.

 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 = true window.event.stopPropagation(); window.event.preventDefault(); } 

Это было не «просто облегчение просмотра статьи» — это кража трафика, простая и понятная. Это действительно не круто.

Их первое исправление: жестко закодированный список исключений

Когда Digital Reader впервые пожаловался Feedly, их ответом было перекодировать Javascript, чтобы включить список исключений . Они буквально добавили проверку к каждой ссылке в Feedly, чтобы увидеть, был ли это элемент из Digital Reader, и если это так, чтобы обойти угон страницы.

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

Это, конечно, абсолютно нелепый способ сделать это — они планировали добавить в этот список со временем, и все больше блоггеров жаловались?

Нейт из The Digital Reader ответил:

где вы выходите, требуя, чтобы я отказался от вашего угона? Это все равно, что сказать, что мне нужно попросить кого-нибудь прекратить избивать меня кошельком в лицо. И все же вы думаете, что это разумно?

Их второе исправление: быстрый взлом, чтобы обойти весь код

После того, что я могу только предположить, было подавляющее число жалоб, которые последовали, они отрегулировали фильтр угона следующим образом:

 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. 

Если у вас есть опыт программирования, вы узнаете быстрый взлом, который гласит «следующий код всегда будет выполняться», и он обычно используется только при отладке. Если какое-либо из этих 3 условий выполнено (первые два больше не имеют значения), Feedly мгновенно перенаправляет пользователей на исходный сайт.

И вот где он стоит сейчас. Итак, что мы узнали?

По сути, Фидли создавал своего рода упрощенный опыт чтения, но способ, которым они это делали, — переписывание ссылок для распространения своего собственного сервиса через последующие социальные сети было чертовски отвратительным. Это не единственный плохой шаг, который недавно сделал Feedly — в прошлом месяце они начали требовать входа в систему с учетными записями Google+ (увидев, как хорошо работает вход в Google+ для , я думаю), но это тоже было быстро отменено. Урок заключается в том, что вы, возможно, захотите начать поиск альтернативного , если только вы не потратили $ 99 на учетную запись Pro.

Похожие посты
Интернет

Google Store Лучшие предложения

Интернет

Руководство по специальному режиму в сети

Интернет

10 советов по безопасности беспроводной домашней сети

Интернет

САН против НАН