Deferred RSS: отложенная публикация RSS-фидов
В помощь в борьбе с плагиатом - To help fight plagiarism
Today in the article "Countering Plagiarism RSS" Alex brought up a very hot topic of blogging copyright protection. And while content theft cannot be prevented, there are ways to help make it harder to steal.
Сегодня в статье "Противодействие плагиату RSS" Alex поднял очень актуальную тему защиты авторских прав блоггеров. И, хотя предотвратить кражу контента невозможно, существуют способы, помогающие усложнить процесс воровства.
Реализация двух трёх таких способов представлена в данном плагине.
The implementation of two or three such methods is presented in this plugin.
Первый способ — отложенная публикация фида. Рациональное зерно здесь следующее:
This plugin has recently been tested using multiple articles. The plugin worked for both articles. RSS feeds went out after those articles had been successfully indexed in major search engines.
Этот плагин недавно был протестирован на ComproGear.com с использованием статей о беге в компрессионных носках и компрессионных рукавах для ног. Плагин работал для обеих статей. RSS-каналы исчезли после того, как эти статьи были успешно проиндексированы в основных поисковых системах.
При определении первоисточника материала, поисковые системы руководствуются множеством факторов, среди которых и время появления материала в индексе. Значимого веса время индексации не имеет, но даже это можно и нужно использовать в своем блоге. Когда вы публикуете пост, он моментально появляется в вашем блоге, а спустя несколько минут или часов отправляется по RSS в наши ридеры. Кроме нас, пост получает и вор. Эту разницу можно использовать, так как за время, прошедшее между появлением вашего поста в вашем блоге и появлением его в RSS, поисковый робот может проиндексировать ваш блог, забрать новый материал, и впоследствии поисковой системе будет проще счесть дубликатом материал на сайт вора.
Автор данной методики предлагает вставлять определённый блок кода в файл functions.php
текущей темы. Но, во-первых, это не дружественно по отношению к пользователю (в случае ошибки WordPress выплюнет fatal error), во-вторых, может быть автоматизировано, в-третьих, при смене темы файл придётся заново редактировать и в четвёртых — всё можно сделать проще А в-пятых, всё гораздо сложнее, ибо WordPress умеет отвечать 304 Not Modified
, что усложняет задачу.
Второй способ — добавление своих авторских прав (copyrights) в текст фида. Один из плагинов, который позволяет добавлять уведомление об авторских правах — это Simple Feed Copyright. Его недостатком (который, впрочем, можно рассматривать как достоинство) является "интерфейс в стиле UNIX" (полное отсутствие интерфейса). Кстати, добавление уведомления в фид можно сделать более простым методом, чем у автора SFC (всё дело в волшебных пузырьках фильтрах).
Третий способ заключается в замене русских букв аналогичными английскими:
Буквы русского алфавита заменяются на аналогичные по виду буквы английского алфавита. К примеру: о-o, а-a, Н-H, К-K и так далее. Сегодня поисковики без труда распознают такую подмену, и толку ворам от подобного контента нет, так как даже в индекс попасть у него мало шансов.
Как я уже говорил, плагин реализует все три метода, предоставляет интерфейс для изменения всех настроек и идёт с русским и английским переводом.
Версия 0.2: в плагин добавлена поддержка условных тэгов [is_feed]
и [is_not_feed]
. Первый тэг предназначен для показа текста исключительно в фиде, а второй — его противоположность — везде, кроме фида.
Например:
[is_not_feed]Этот текст не будет виден в фиде[/is_not_feed]
Этот текст не будет виден в фиде
Версия 0.3: плагин "подделывает" дату публикации последнего поста для фид-ридеров. Это сделано для того, чтобы WordPress не возвращал код 304 Not Modified
, если ридер запрашивает фид с заголовками If-Modified-Since
и/или If-None-Match
, соответствующие предыдущему состоянию фида (до публикации последней статьи), так как WordPress "не знает" о том, что публикация статьи в фиде отложена.
Версия 1.0: добавлена поддержка замены русских букв эквивалентными английскими, введён новый синтаксис для тэгов (спасибо, Alex) и усовершенствован механизм подделки даты публикации последнего поста (теперь должно работать с FeedBurner'ом корректно).
О новом синтаксисе тэгов: идея здесь заключается в том, чтобы при деактивации плагина не пришлось редактировать руками все записи. Поэтому теперь тэги очень напоминают комментарии. В частности, пара <!--is_not_feed-->/<!--/is_not_feed-->
при деактивированном плагине будет рассматриваться как комментарий и отображаться не будут. А текст между тэгами будет показан.
С тэгами <!--is_feed>/</is_feed-->
всё аналогично: открывающий тэг служит началом HTML-комментария, а закрывающий — концом. Следовательно, текст внутри этих тэгов отображаться не будет.
Тем не менее, при деактивированном плагине новые тэги работать не будут (что, как мне кажется, очевидно): содержимое is_not_feed
попадёт в фид, содержимое is_feed
тоже попадёт, но в качестве комментария (и отображаться не будет).
<!--is_feed>Этот текст попадёт в фид</is_feed-->
Этот текст не попадёт в фид
Скачать плагин Deferred RSS 1.0.
Обновил ленту, ничего не пришло. Похоже работает у тебя=)
А в плагине же можно совместить несколько вариантов защиты, если новый писать. Отложенная публикация и копирайт это две вещи, можно невидимый рисунок 1х1 со ссылкой на пост вставлять после первого абзаца, и заменять русские буквы английскими. Все в одном получится=) Тот же копирайт, кстати, можно вставлять в разные места - подвал, хедер, середина, после первого абзаца. Иногда воры отрезают последний абзац или регулярные выражения, а копирайт регулярный. Но можно вписать два-три текста копирайта, которые будут заменяться через раз.
Кстати, плагином же можно сделать так, чтобы в фид вставлялось то, чего нет в посте? Копирайт вставляется по такому принципу. Можно большой копирайт, как у меня размещать в подвале фида, а короткие “Алекс - автор поста” со ссылкой на блог в произвольном месте, через спец-код, или, что лучше, после одного-двух абзацев.
Ответить на данный комментарий
Можно
Вся проблема в том, что я работаю над большим проектом, и когда можно убедить заказчика, что какой-либо плагин облегчит ему жизнь и его можно было бы написать, то я совмещаю приятное с полезным и пишу плагин Такой вот я плохой.
Но так как проект иностранный, русские буквы, увы, не актуальны, и доделать это я смогу в свободное время (to do list уже большой).
А разве фид сохраняет layout блога? Мне казалось, что туда только сам контент попадает…
Не совсем: первый раз из-за опечатки в коде в фид попали все записи (черновики, личные и т.п.).
А теперь самое простое не работает — копирайты. Сижу отлаживаю.
А с отложенными фидами есть еще такой нюанс: насколько я понимаю, FeedBurner ходит на сайт раз в полчаса, так что величина задержки публикации на самом деле может оказаться большей.
Ответить на данный комментарий
Теперь всё работает. Ура!
Ссылка для скачивания в статье.
Ответить на данный комментарий
Появилась версия 0.2 (во сне приснилась!), описание в тексте.
Теперь можно
Возможно, это не самое идеальное решение, но оно работает.
Ответить на данный комментарий
У меня глючит. Вставляю в поле кода это
Сохраняю. Перехожу в плагины, возвращаюсь - вижу стандартное заполнение поля, и стандартные значения задержки.
Ответить на данный комментарий
Блин, я при автоформатировании ступил… Амперсанд потерял.
Alex, скачай, пожалуйста, плагин еще раз — всё должно работать.
Ответить на данный комментарий
Теперь сохраняет. Выставил задержку в минуту, обновил в фидбурнере, пока ничего не вижу в ленте. Новый пост пропал, из-за задержки, видимо, старые без изменений.
Теги с показом/непоказом в фиде хорошая задумка=) Только надо сделать так, чтобы при удалении, плагин вычитил теги и содержимое. А то в двадцать постов вставишь такое дело, потом отключишь плагин, и замучаешься редактировать посты.
Ответить на данный комментарий
Так, старые обновились, подпись работает. У тебя ко второй версии первый рисунок странноват. Там такой код и должен быть на нем? Обработанный?
Ответить на данный комментарий
Да, весь HTML преобразовывается, так и должно быть. Фид — это XML, а HTML-тэги уже относятся к другому пространству имён (namespace). Кроме того, XML должен быть валидным, а HTML может не быть валидным. Поэтому все угловые скобки (и, возможно, кавычки) заменяются на entities. Другой вариант — использовать
<![CDATA[...]]>
, но это дело вкуса разработчиков WP.Ответить на данный комментарий
Feed Validator говорит, что всё пушисто.
Ответить на данный комментарий
Нужно Resync делать… Я вчера долго с FB разбирался, как оказалось, повторный пинг не является гарантией того, что FB побежит перечитывать фид.
Нетривиальная задача… Например, такой uninstall побъет блок кода в примере наверху. При отображении всё решается просто: плагин подсветки кода защищает код от изменений, заменяя его некоторым хэшем (фильтр с самым низким приоритетом), а потом восстанавливая код по хэшу (фильтр с высоким приоритетом). При деинсталляции такой фокус, увы, не пройдёт.
Пока писал, придумал идею: использовать не
[is_feed]...[/is_feed]
, а<!--is_feed>...</is_feed-->
и<!--is_not_feed-->...<!--/is_not_feed-->
. Тогда при деактивации плагина код для фида будет комментарием, а код не для фида будет отображаться без изменений (закомментированы будут только тэги). Как такая идея?Ответить на данный комментарий
Да, я ресинхом и делаю. Там написано, что не чаще чем раз в час надо делать ресинхронизацию. Третий час жду последний пост=)
Я еще первый синтаксис не опробовал=) А второй вариант нужно вставлять в режиме редактора или html? Или в обоих случаях вывод будет верным?
Какой код, по сути, не важно. Главное, чтобы работал и был валидным. А то эта функция в определенной степени развязывает руки, можно воров посылать=), и если однажды не сработает, то в блоге появятся интересные тексты=)
А можно вставлять рисунки в <!-is_feed>…<!/is_feed->
Ответить на данный комментарий
Тут вот какая вещь: я написал статью про APC в 20:32 и два раза изменил её (задержку я поставил в 15 минут). После поста и изменений FeedBurner пришел, плагин ему отдал фид (без последнего поста). Потом через какое-то время FeedBurner пришёл опять (21:13). Статья уже “проявилась” в фиде (если запрос прогнать вручную, она видна в ответе MySQL), но WordPress (долгих лет жизни его разработчикам) говорит, что ничего не изменилось (выдаёт код 304 Not Modified).
66.150.96.121 - - [06/Dec/2008:20:34:28 +0200] "GET /feed/atom/ HTTP/1.1" 200 21506 "-" "FeedBurner/1.0 (http://www.FeedBurner.com)"
66.150.96.121 - - [06/Dec/2008:20:40:41 +0200] "GET /feed/atom/ HTTP/1.1" 200 21506 "-" "FeedBurner/1.0 (http://www.FeedBurner.com)"
66.150.96.121 - - [06/Dec/2008:21:13:24 +0200] "GET /feed/atom/ HTTP/1.1" 304 - "-" "FeedBurner/1.0 (http://www.FeedBurner.com)"
Я так понимаю, что WP (по крайней мере, 2.7) смотрит на дату последнего поста, а так как она в прошлом, выдаёт 304. Сижу отлаживаю.
Второй вариант я еще не сделал, просто спросил совет
Но мне кажется, что с TinyMCE второй вариант не пройдёт
Ответить на данный комментарий
Так и есть:
Ответить на данный комментарий
Появилась версия 0.3, устраняющая недоработки с выдачей даты модификации защищаемых статей. Описание и ссылка для скачивания приведены в статье.
Ответить на данный комментарий
Хмм.. Отключил плагин - выдает ошибку 500 при обращении к фидбурнеру. Отключил перенаправление - работает. Т.е. средствами браузера можно подписаться на фид, а с включением фидбурнера - нет. Даже в самом фидбурнере теперь не показывает ленту, вроде как, прочесть ее не смог.
Ответить на данный комментарий
FeedBurner’у сейчас хреново:
Detail: There was a problem retrieving the feed: java.net.SocketTimeoutException: Read timed out
.Кстати, твой сайт у меня очень медленно открывается, я так понимаю, что проблемы на линии.
Судя по трассировке, пакеты в основном теряются здесь: ae-91-91.ebr1.Frankfurt1.Level3.net, ae-71-71.ebr1.Washington1.Level3.net и ae-7.ebr3.Dallas1.Level3.net (по мелочи еще в Атланте).
PS - в FB уже всё OK.
Ответить на данный комментарий
Я кеш отключил на время проблем с Фб, да и у провайдера похоже проблемы.
Сейчас все нормально, поставил 0.3, задержку в 0, будем ждать.
Кстати, а не надо было в deferred-rss.php поставить Version: 0.3?=)
Ответить на данный комментарий
Поправил, спасибо
Ответить на данный комментарий
Alex, появилась 0.4b1. Она сыровата, но есть вкусности (бифштекс с кровью):
<!--is_not_feed-->Not Feed<!--/is_not_feed-->
Эти тэги не будут работать в TinyMCE (для него нужно будет плагин написать).
Версия сыровата, потому что я не успел её протестировать (пора спать, а завтра еще и стоматолог — кошмар!), так что если будет желание попробовать, вот ссылка:
Deferred RSS 0.4b1.
Ответить на данный комментарий
Стомтатологов придумали те же люди, которые придумали ипотеку=)
Скачал, поставил, активировал замену, ресинхронизировал фид. А как понять, что замена уже работает? Буквы же не отличишь=)
То, что теги в визуальном работать не будут - не страшно. Перейти в HTML-режим не сложно. Надо будет блог-клиенты посмотреть, можно ли в них его использовать.
Да, мне емейлы не приходят о новых комментариях.
Ответить на данный комментарий
Я знал, я знал! И ведь опять меня анестезия не взяла
Открываешь фид в FireFox и пытаешься найти, например, слово “Ирина” (Ирина тут предложила рассказать о своих любимых фильмах).
Ммм, твой адрес (который на googlemail) не подписан. И Рамблеровский тоже… Ты точно подписывался? Если да, то я буду менять плагин.
Ответить на данный комментарий
В коде фида это вижу после добавления в пост, и обновления фида. В самом фиде - нет.
Ответить на данный комментарий
Это как?
Ответить на данный комментарий
Да, галочку поставил о подписке.
Ирина не ищется=) Значит, замена произошла.
Про фид - код указывает, что текст в этом коде должен показываться в фиде, т.е. читатели должны его видеть. А в фиде его нет. Но если просмотреть исходный код, то он есть, этот текст. А по задумке, текст должен быть виден в фиде, а не только в исходнике. Тогда можно вывести чего хочешь, хоть копирайты через каждый абзац - и воровать такое будет бессмысленно.
Хотя то, что есть в исходнике тоже хорошо, можно легко доказать авторство.
К замене еще “М” можно добавить. Здорово получилось=) Все, что могу еще придумать - произвольная замена символов в настройках. Скажем, опция в виде галочки: заменять т на m, 1 на один. Ну и т.д. Хотя это уже избыточный функционал.
Надо выводить плагин на мировой уровень=) Если у буржуев тоже воруют, они могут английские заменять русскими.
Ответить на данный комментарий
До меня туго доходит… Если код есть в фиде, значит, он будет отображаться в фиде. Если его там нет, отображаться он не будет.
По крайней мере, к меня работает именно так. Я упускаю что-то очевидное?
feed-in-akregator.png
На третьи сутки дошло. Попробуй скачать эту версию:
Deferred RSS 0.4b2.
Видимо, я что-то изменил в коде (или забыл сохранить перед созданием архива).
Вот смотри. В посте в режиме HTML вставлен следующий код (без код /код):
И посмотри что у меня в ленте.
Ответить на данный комментарий
Алекс, а как насчет лишнего восклицательного знака в закрывающем
is_feed
?Ответить на данный комментарий
Косячок-с…=)
А вроде не добавлял ничего своего, только из твоего поста копировал код. Сейчас все круто!=) Классный у меня копирайтик вышел=)
Это надо толкать в массы. Жаль, воры и декодировать смогут, при большом желании, но большей части это жизнь подпортит.
Сейчас, кстати, фид при ресинхронизации мгновенно обновляется. Тоже из-за плагина?
Ответить на данный комментарий
Ты же говорил, что время задержки нулевое?
Если время публикации плюс время задержки оказываются в прошлом, пост не прячется.
Ответить на данный комментарий
Parse error: parse error, unexpected T_CONST, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’ in /www/tiaurus/www/htdocs/wp-content/plugins/deferred-rss/deferred-rss.php on line 18
Вот что у меня получилось. Ставил Deferred RSS 0.4b2.
Ответить на данный комментарий
Народ, PHP4 даже разработчики PHP не поддерживают, ну обновитесь же вы, пожалуйста, до пятёрки!
Ответить на данный комментарий
Небольшая опечатка:
Replave Russian letters with English - Replace
Ответить на данный комментарий
Поправил, спасибо.
Опережая WordPress 2.7 всего на несколько часов, появилась стабильная версия 1.0 плагина. Ссылка для скачивания и описание в статье.
Ответить на данный комментарий
Скачал, поставил. Сейчас готовлю обзорный пост.
А можно доработать плагин с тем, чтоб он НЕ заменял буквы в анкорах ссылок и НЕ трогал код между
<!--is_feed>/</is_feed-->
?Ответить на данный комментарий
Можно.
В анкорах ссылок — это между тэгами
<a>…</a>
?Ответить на данный комментарий
Ага=) Просто я тут нашел воров (кстати, благодаря плагину) у которых в текстах была сохранена перелинковка и ссылки шли на меня. Было бы лучше, если бы в этих ссылках анкоры не менялись - помогло бы со ссылочным ранжированием. Так как замена букв в ссылках либо нивелирует вес ссылки, либо сильно его уменьшает.
А в коде заменять не стоит потому, что туда можно всунуть копирайт, который лучше бы видеть оригинальным, без замены.
Кстати, по поводу уведомлений на емейл=)
ScreenShot7.png
Ясно… Сношу плагин… Какую альтернативу посоветуешь?
Я сам пользуюсь тем же плагином, а других аналогов не знаю. Спроси у читателей, приходят ли им уведомления, может, я один такой? Мне ни с одного блога, где используются древовидные комменты, уведомления не идут.
Ответить на данный комментарий
Ммм… Не пойму, как отправка происходит. Опубликовал в 12.00 до сих пор нет ни в фидбурнере, ни, естественно, в ридерах. Задержка 0 минут, время вордпресса UTF+3 (москва). Вчерашний тоже пришел часов через 10. У тебя правильно работает отсрочка публикации?
Ответить на данный комментарий
Ну как бы при нулевой задержке ничего не вычитается…
А по логам Апача можно посмотреть, приходил ли FeedBurner и что ему ответил Апач (200 или 304)?
Ответить на данный комментарий
Host: 66.150.96.121
/feed/
Http Code: 304 Date: Dec 11 09:12:54 Http Version: HTTP/1.1 Size in Bytes: 84
Referer: -
Agent: FeedBurner/1.0 (http://www.FeedBurner.com)
Если я смотрел там, где надо, то вот единственная запись о фидбурнере. Я ресинхронизацию не делал, просто опубликовал пост.
Ответить на данный комментарий
Блин, такой облом - поисковики в кеше сохраняют версию с подмененными буквами. Это может привести к бану блога.
Ответить на данный комментарий
А можно сделать версию с подменными словами а не буквами? Некоторое подобие синонимайзера
Ответить на данный комментарий
Теоретически можно, а в чем смысл? Я так понимаю, что Google видит, когда текст один и тот же, но с небольшими изменениями.
А еще будет большая проблема с согласованием падежей.
Ответить на данный комментарий
Владимир, я имел в виду возможность самому либо в коде плагина, либо через интерфейс добавить по теме моего сайта несколько десятков слов или словосочетаний с заменой на аналоги, тем самым слегка изменить текст в кросспосте и расширить перечень ключевиков попадающих в индекс яндекса, без потери смысла фида. Мне кажется в этом есть смысл.
Ответить на данный комментарий