Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
Россия +7 (495) 139-20-33
10 Января 2007 в 12:00

Как техническими способами защитить авторские права на сайт (контент, дизайн и т.д.)

Россия +7 (495) 139-20-33
0 10233
Подпишитесь на нас в Telegram

1. Введение

Защита информации во все времена была актуальной темой. С появлением Интернета, когда информация стала доступной и оперативной, вопрос о ее защите стал еще более актуальным. Несовершенство правовой базы в нашей стране в сфере защиты интересов обладателей авторских и смежных прав еще более усугубляет эту проблему.

Веб-мастерам и владельцам веб-ресусов приходится самим находить способы защитить авторские права на сайт, и чаще всего прибегают к техническим, нежели юридическим способам. Дело в том, что единственная 100% защита странички от просмотра HTML кода – выключенный сервер, т.к. если страничка доступна хотя бы для одного из браузеров, то у посетителя всегда есть возможность сохранить код этой странички. Поэтому все технические способы защиты HTML кода условно можно поделить на 2 способа: шифрование HTML кода и другие способы (отключение правой кнопки мыши, запрет на сохранение картинок с помощью скриптов, приведение html кода в состояние тяжелое для восприятия и т.д.).

Программно-техническую защиту (подразумевается использование программы, предназначенной для защиты в сети прав и законных интересов авторов электронных публикаций, путем отображения публикаций способом, исключающим их копирование и/или иное несанкционированное размножение или другую модификацию) рассматривать не будем по следующей причине. Как я уже сказал, единственная 100% защита странички от просмотра HTML кода – выключенный сервер, и какими бы хитрыми методами защиты HTML кода вы не пользовались (в том числе и шифрование), возможны два варианта исхода событий:

  1. Пользователь окажется “чайником” и, увидев что его обычные действия (скопировать картинку, текст и т.д.) не приводят к желаемым результатам, бросит это занятие, то ваши авторские права не будут нарушены.
  2. Пользователь окажется “продвинутым”, и, повозившись какое-то время с вашим сайтом, он достанет нужную для него информацию. В этом случае ваши права будут нарушены.

Следует, так же учесть еще один момент – любые попытки защитить техническими способами авторские права на сайт приводят к тому, что:

  • вы усложняете жизнь обычным пользователям, ради которых и создавался этот сайт, ради которых и размещалась ваша информация (возникают различные неудобства при работе с сайтом);
  • вы усложняете жизнь себе.

Таким образом, прежде чем использовать описанные ниже методы, хорошенько подумайте, что вы хотите защитить, зачем и стоит ли это ваших ресурсов (временных, материальных и т.д.), с учетом того, что кому действительно надо нарушить ваши авторские права, тот их действительно нарушат.

Исходя из выше сказанного, существует и несколько способов защиты, они делятся на простые (стандартные) и сложные (шифрование).

2. Стандартные способы технической защиты авторских прав на сайт

1. Блокирование правой кнопки мыши

Самый классический и наиболее распространенный способ - это использование скрипта, который выдает предупреждающую надпись при нажатии правой кнопки мыши:

2. Запрещение выделения объекта мышью

В теге прописывается oncontextmenu="return false".

3. Запрещение копирования

В теге прописывается oncopy="return false".

4. Защита графической информации

4.1 Защита картинки (способ 1)

Создается «слоеная» картинка в таблице. Идея в том, чтобы разрешить посетителю страницы сохранять картинки, только вместо тех, что он видит, оставлять совершенно другие, например, прозрачные. Для изготовления такой картинки понадобится любой HTML-редактор, для не особых знатоков разметки гипертекста лучше всего воспользоваться Dreamweaver. Создаем таблицу с одной ячейкой, по размерам совпадающую с нашей картинкой, и вставляем последнюю в качестве фона таблицы (или ячейки). В эту таблицу вставляем точно такую же еще одну таблицу, а уже в последнюю - прозрачный gif-файл (имя картинки и имя прозрачного gif-файла следует сделать почти одинаковыми на вид). Если этот метод вас устраивает, а создавать таблицы с картинками вручную нет желания, вы можете воспользоваться специальной программой для создания слоев - например, Cool Page.

4.2 Защита картинки (способ 2)

Идея в том, что бы порезать картинку на кусочки. Картинка разрезается на множество сегментов, каждый из которых затем вставляется в таблицу. В этом случае тому, кто захочет эту картинку восстановить, придется сохранять каждый сегмент в виде отдельного файла и потом "сшить" в одном из графических редакторов. При большом числе фрагментов разбиения желание похитить картинку у кого-то может пропасть окончательно. При автоматизации такого способа можно воспользоваться функцией автоматической разрезки изображений, имеющейся в некоторых графических редакторах. В Ulead PhotoImpact можно разрезать картинку на нужное количество частей и сохранить результат в HTML. При этом генерируется таблица, которую можно экспортировать во Dreamweaver, настроить там ее внешний вид, после чего вставить полученный код в свою веб-страницу.

Необходимо обратить внимание на то, что от копирования картинок при помощи кнопки клавиатуры Print Screen описанные способы 4.1 и 4.2 не спасут, поэтому рекомендуется публиковать картинки с приемлемым качеством для комфортного просмотра изображения, но не приемлемым для их коммерческого использования.

5. Открытие защищаемой страницы в отдельном окошке

Идея в том чтобы защищаемая страница открылась в новом окне, в котором не будет возможностей использовать браузер (не будет верхнего меню: файл, правка, вид, избранное, сервис и т.д.) и соответственно пользователь не сможет посмотреть код через Вид – Просмотр HTML-кода (конечно данный пункт необходимо реализовывать совместно с отключением правой кнопки мыши).

Следует ввести в заголовок защищаемой страницы скрипт, определяющий имя окна window.name, в которое пользователь хочет загрузить страницу. Например, это имя WinX:

if(window.name!=null) {isOK2=window.name;} else {isOK2='nameFalse';}

Если имя окна не WinX, то направляем пользователя или на ложную страницу, или на страницу с предупреждением, или на исходную. Можно и просто автоматом закрыть окно без предупреждений.

Например:

if (isOK2!='WinX') { 
window.location.replace('mistake.htm'); // загружаем в окно другую страницу
// window.close(); // или закрываем окно
}

Таким образом, заблокируются любые возможности пользователя открыть вашу страницу в новом окне. Конечно, ссылки на Вашу страницу с других страниц или поисковиков будут попадать на страницу mistake.htm. Это надо всегда иметь в виду.

Допустим, пользователь все-таки очень хочет посмотреть код, и он разобрался, что для загрузки страницы mypage1.htm надо открыть ее в нормальном окне, но с именем WinX. Тогда он делает свою страничку, ставит в ней свой скрипт, аналогичный нашему, и открывает.

Как не дать ему сделать это?

Следует ввести в защищаемую страницу (в ее заголовок) скрипт, определяющий страницу, с которой пользователь запрашивает вашу.

Например:

if (window.document.referrer!=null) {isOK3=window.document.referrer;} 
else {isOK3='refFalse';}
href3 = 'http://www.site.com/page1.htm'; // адрес страницы с которой идет вызов
if (|isOK3!=href3) {
window.location.replace('mistake.htm'); // загружаем в окно другую страницу
// window.close(); // или закрываем окно
}

То есть, достаточно определить, является ли страница, с которой вызывается наша mypage1.htm, страницей, находящейся на нашем сервере, или нет. Тогда попытки ввода страницы в любое окно с правильным именем WinX, но не с той страницы, с которой следует, будут заканчиваться перенаправлениями пользователя на страницу mistake.htm.

Совсем хорошо, если у вас есть возможность использовать PHP-скрипт, в который можно передать IP-адрес посетителя страницы. Тогда можно просто блокировать дальнейшую выдачу любых страниц, если посетитель более трех-пяти раз попытался загрузить вашу страницу не тем способом, который ему разрешен. То есть реализовать нечто типа "черного списка". И для IP-адресов "черного списка" выдавать ошибку 404 - файл не найден. То же самое можно выдавать вместо файла mistake.htm. Психологически действует великолепно.

Подробнее об этом способе на http://1ps.ru/articles/doc/0201120956811/

6. Отключение кэширования страницы

Данный код отключает кэширование на жестком диске в некоторых видах браузеров, что не позволяет пользователю найти на жестком диске сохраненную копию документа.




Photoalbums<br><meta http-equiv="Content-Language" content="ru"><br><META HTTP-EQUIV="Pragma" CONTENT="no-cache"><br><meta name="Author" content="………"><br><STYLE type=text/css><br>........... <br></BODY><br></HTML><br></pre> <h3>7. Вставлять html во flash</h3> <p>В этом случае, конечно код страницы будет доступен, но вот достать его обратно из flash представляет временную проблему, которая для обычного “чайника” может оказаться и не решаемой.</p> <h2>3. Техническая защита авторских прав на сайт шифрованием</h2> <p>Шифрование – задача довольно непростая, полное описание которой займет не одну статью, поэтому ниже обозначены способы, предназначеныые для демонстрации основных принципов, и не являются готовыми к использованию решениями.</p> <h3>1. Использование компилятора perl2exe</h3> <p>Самый простой способ защиты кода это использование компилятора perl2exe (Windows), который создаёт из кода обычный выполняемый файл. Для, пожалуй, одного из самых популярных в Рунете языка сценариев Perl, одним из вариантов сокрытия исходных текстов стала возможность компилирования исходных текстов в исполняемый формат PE-exe для win32, ELF для Linux. Такая утилита для компиляции, и называется <noindex>Perl2Exe</noindex>, предоставляется компанией сторонних разработчиков IndigoStar Software.</p> <p>В этом случае самый элементарный способ (и чаще всего используемый) — зашифровать программу, поместить её в переменную, а в конце поставить расшифровщик. Но, несмотря на то, что авторы утилиты Perl2Exe не предоставляют ее исходных кодов, оказалось возможным найти инженерный пароль в автоматическом режиме, с помощью различного рода хакерских программ. Поэтому говорить о криптографической стойкости подобного шифрования бессмысленно, поскольку ключ к шифру находится рядом с самим шифром. (Что только увеличит размер вашей зашифрованной странички). Такое изменение программы легко обратимо.</p> <h3>2. Удаление синтаксических символов и добавление фрагментов</h3> <p>Самый большой интерес представляют необратимые изменения текста. Частично таковым является удаление всех переводов строк, комментариев, лишних скобок и пробелов из кода - в общем, всего «ненужного», что было там лишь для повышения читабельности. Это необратимо лишь частично, поскольку некоторые редакторы могут автоматически расставить переводы строк и табуляторы. </p> <p>Можно вставлять в код бессмысленные куски, которые ничего не делают (чаще всего этот метод применяется в комбинации с удалением «ненужного»).</p> <p>В идеале эти бессмысленные куски должны быть разнообразными и похожими на окружающий их код, чтобы их было сложнее распознать.</p> <h3>3. Шифрование с использованием source filters</h3> <p>В следующей <noindex><a href="http://infocity.kiev.ua/hack/content/hack146.phtml?id=1872" target="_blank" rel="nofollow">статье</a></noindex> описывается шифрование с использованием source filters.</p> <p>В общем случае, у данного метода остается, как и у многих, пожалуй, методов шифрования, тот же недостаток, что и у Perl2Exe или схожей с ней утилит, а именно – наличие инженерного пароля.</p> <h3>4. Шифрование HTML кода</h3> <p>Последний и, пожалуй, самый простой способ шифрования для веб-мастеров сайтов. </p> <p>Шифрование HTML кода с использованием сервиса http://www.ph4.ru/wm_html2js.ph4, который преобразует все нелатинские символы HTML кода (кроме точки, запятой, знака вопроса и двоеточия) в коды символов UNICODE.</p> <p>Оригинал HTML кода:</p> <pre> <script language="JavaScript1.2"> <br> if (document.all) document.body.onmousedown=new Function("if <br> (event.button==2||event.button==3)alert('Предупреждающий текст')") <br> </script> </pre> <p>В UNICODE выглядит так:</p> <pre><br> %3Cscript%20language%3D%22JavaScript1.2%22%3E%0D%0A%0D%0Aif%20%28documen <br> t.all%29%20document.body.onmousedown%3Dnew%20Function%28%22if%20%28event.butt <br> on%3D%3D2%7C%7Cevent.button%3D%3D3%29alert%28%27%u041F%u0440%u0435%u04 <br> 34%u0443%u043F%u0440%u0435%u0436%u0434%u0430%u044E%u0449%u0438%u0439% <br> 20%u0442%u0435%u043A%u0441%u0442%27%29%22%29%0D%0A%0D%0A%3C/script% <br> 3E <br></pre> <p>Там же сервис выдает окончательный код, который вставляется в вашу страничку:</p> <pre><br> <script> <br> enc = <br> "%3Cscript%20language%3D%22JavaScript1.2%22%3E%0D%0A%0D%0Aif%20%28docume <br> nt.all%29%20document.body.onmousedown%3Dnew%20Function%28%22if%20%28event.but <br> ton%3D%3D2%7C%7Cevent.button%3D%3D3%29alert%28%27%u041F%u0440%u0435%u0 <br> 434%u0443%u043F%u0440%u0435%u0436%u0434%u0430%u044E%u0449%u0438%u0439 <br> %20%u0442%u0435%u043A%u0441%u0442%27%29%22%29%0D%0A%0D%0A%3C/script <br> %3E"; <br> dec = unescape(enc); <br> document.write(dec); <br> </script></pre> <p>PS. Если вся страница закодирована таким образом, она не будет работать, если в браузере пользователя отключен javascript.</p> <h2>4. Заключение</h2> <p>HTML код ни как не предрасположен к своей защите, поэтому его защита является довольно творческим процессом, комбинации как описанных выше способов, так и нахождения новых. При желании можно достичь неплохих по меркам специалистов результатов, которые будут даже на них действовать психологически великолепно.</p> <p>В этом случае 80-85% пользователей, столкнувшихся с вашей защитой, после пары провалов, бросят это безнадежное дело, и ваши авторские права будут защищены, при этом необходимо всегда отдавать себе отчет в том, что абсолютной защиты не существует.</p> </div> </div> </div> <div class="post-controls fc"> <div style="margin-top: -30px;"></div> <div style="display: none;" class="iblock-vote" id="vote_29849"> <script type="text/javascript"> if (!window.voteScript) window.voteScript = { trace_vote: function(div, flag) { var my_div; var r = div.id.match(/^vote_(\d+)_(\d+)$/); for (var i = r[2]; i >= 0; i--) { my_div = document.getElementById('vote_'+r[1]+'_'+i); if (my_div) { if (flag) { if (!my_div.saved_class) my_div.saved_className = my_div.className; if(my_div.className != 'star-active star-over') my_div.className = 'star-active star-over'; } else { if (my_div.saved_className && my_div.className != my_div.saved_className) my_div.className = my_div.saved_className; } } } i = r[2] + 1; while (my_div = document.getElementById('vote_'+r[1]+'_'+i)) { if (my_div.saved_className && my_div.className != my_div.saved_className) my_div.className = my_div.saved_className; i++; } }, do_vote: function(div, parent_id, arParams) { var r = div.id.match(/^vote_(\d+)_(\d+)$/); var vote_id = r[1]; var vote_value = r[2]; function __handler(data) { $('.iblock-vote').replaceWith(data); var obContainer = document.getElementById(parent_id); if (obContainer) { var obResult = document.createElement("DIV"); obResult.innerHTML = data; obContainer.parentNode.replaceChild(obResult.firstChild, obContainer); } } var url = '/bitrix/components/askaron/askaron.ibvote.iblock.vote/component.php'; arParams['vote'] = 'Y'; arParams['vote_id'] = vote_id; arParams['rating'] = vote_value; $.post( url, arParams, function(data){ $('.iblock-vote').replaceWith(data); } ); } } </script> <!--<table border="0" cellspacing="0" cellpadding="0">--> <!-- <tr>--> <!-- --><!-- --><!-- --><!-- --><!-- <td><div id="vote_--><!--_--><!--" class="star-voted" title="--><!--"></div></td>--> <!-- --><!-- <td><div id="vote_--><!--_--><!--" class="star-empty" title="--><!--"></div></td>--> <!-- --><!-- --><!-- --><!-- --><!-- <td><div id="vote_--><!--_--><!--" class="star" title="--><!--"></div></td>--> <!-- --><!-- --><!-- --><!-- --><!-- --><!-- --><!-- <td><div id="vote_--><!--_--><!--" class="star-active star-voted" title="--><!--" onmouseover="voteScript.trace_vote(this, true);" onmouseout="voteScript.trace_vote(this, false)" onclick="--><!--"></div></td>--> <!-- --><!-- <td><div id="vote_--><!--_--><!--" class="star-active star-empty" title="--><!--" onmouseover="voteScript.trace_vote(this, true);" onmouseout="voteScript.trace_vote(this, false)" onclick="--><!--"></div></td>--> <!-- --><!-- --><!-- --><!-- --><!-- <td><div id="vote_--><!--_--><!--" class="star-active star-empty" title="--><!--" onmouseover="voteScript.trace_vote(this, true);" onmouseout="voteScript.trace_vote(this, false)" onclick="--><!--"></div></td>--> <!-- --><!-- --><!-- --><!-- </tr>--> <!-- <tr>--> <!-- <td class="vote-result" id="vote-result---><!--" colspan="--><!--">--> <!-- --><!-- <div id="wait_vote_--><!--">--> <!-- --><!-- </div>--> <!-- --><!-- <div id="wait_vote_--><!--">--> <!-- --><!-- </div>--> <!-- --><!-- </td>--> <!-- </tr>--> <!--</table>--> <style> @media screen and (max-width: 900px){ .hider-mobile{ display: none; } .rewrite-mobile-img{ margin: 28px 0px 3px 0px !important; } .rewrite-mobile-td{ padding-left: 13px !important; } } </style> <table> <tr> <td> <img class="rewrite-mobile-img" src="/upload/1_files/star.png" style="margin: 10px 0px 3px;" alt=""> <img class="hider-mobile" src="/upload/1_files/star.png" style="margin: 10px 0px 3px;" alt=""> <img class="hider-mobile" src="/upload/1_files/star.png" style="margin: 10px 0px 3px;" alt=""> </td> <td class="rewrite-mobile-td" style="text-align: left; padding-left: 30px; font-weight: bold; font-style: italic; line-height: 1.6;"> Друзья, теперь вы можете поддержать SEOnews <a href="https://pay.cloudtips.ru/p/8828f772">https://pay.cloudtips.ru/p/8828f772</a> <br> Ваши донаты помогут нам развивать издание и дальше радовать вас полезным контентом. </td> <td> <img class="hider-mobile" src="/upload/1_files/star.png" style="margin: 10px 0px 3px 20px;" alt=""> <img class="hider-mobile" src="/upload/1_files/star.png" style="margin: 10px 0px 3px;" alt=""> <img class="hider-mobile" src="/upload/1_files/star.png" style="margin: 10px 0px 3px;" alt=""> </td> </tr> </table> </div> </div> <div class="post-tags"> <img src="/local/templates/mobile/images/ico-tag.png" alt="tags" image> Теги: <a href="https://www.seonews.ru/tags/kontent/" >Контент</a><a href="https://www.seonews.ru/tags/vebmasteram/" >Вебмастерам</a><a href="https://www.seonews.ru/tags/klientam/" >Клиентам</a><a href="https://www.seonews.ru/tags/meta-tegi/" >Мета-теги</a> </div> <div class="post-controls fc"> <div class="social-buttons fc social-buttons-down"> <div class="ya-share2" data-services="vkontakte,telegram,odnoklassniki" data-counter="" data-url="https://www.seonews.ru/analytics/kak-tehnicheskimi-sposobami-zaschitit-avtorskie-prava-na-sayt-kontent-dizayn-i-td/"></div> <div class="edit-button" style="display: none"></div> <div style="clear:both;"></div> </div> </div> </div> </div> <a name="comments" style="display: block; position: absolute; margin-top: -50px;"></a> <script> if( typeof(window.xcom) != 'object' ) { window.xcom = {}; } window.xcom.m = "29849"; window.xcom.mib = "17"; window.xcom.u = ""; window.xcom.a = true; </script> <!----------------------> <div class="xcom-wrapper"> <div class="xcom-title">0 комментариев</div> <!-- allaround-form --> <div class="xcom-allaround-form-wrapper"></div> <div class="xcom-nav-line-wrapper"> <div class="xcom-nav-line-controls-wrapper"> <div class="xcom-nav-line-controls-subscribe-wrapper"> <div class="xcom-nav-line-controls-subscribe">Подписаться <span class="xcom-nav-line-ma"></span></div> <div class="xcom-nav-line-controls-subscribe-list"> Подписаться на дискуссию:<br> <div class="xcom-comcounter-subscribe-wrapper"> <div class="xcom-comcounter-subscribe-b"> <div class="xcom-comcounter-subscribe-label">E-mail:</div> <input type="text" name="email" > <div class="xcom-comcounter-subscribe-btn">ОК</div> </div> <div class="xcom-comcounter-subscribe-success">Вы подписаны на комментарии</div> <div class="xcom-comcounter-subscribe-error">Ошибка. Пожалуйста, попробуйте ещё раз.</div> </div> </div> </div> <div class="xcom-nav-line-controls-delim-1"></div> </div> </div> <div class="xcom-main-block"> <a name="xcom-main"></a> <div class="xcom-main-tab-wrapper xcom-act" id="xcom-tab-tree-view"> <div class="xcom-tree-view-wrapper"> <!-- ДЕРЕВО КОММЕНТАРИЕВ --> <ul class="xcom-tree-view-list level-0" data-xcom-tree-level="0" > </ul> </div> </div> <br clear="all"> </div> </div> <!----------------------> <div class="xcom-hidden-iframes-list"></div> <div class="xcom-modest-progress-indicator"></div> <div class="xcom-review-notable-plate"> <div class="xcom-review-notable-plate-inner xcom-active">Отправьте отзыв!</div> </div></div> <div style="clear:both;"></div> <footer> <div class="footer-inner"> <div class="soclinks"> <a href="https://vk.com/seonews_ru" target="_blank" class="h-soclink h-soclink-vk"><img src="/local/templates/mobile/images/vk.png" alt="SeoNews"></a> <!-- <a href="https://twitter.com/SEOnewsru" target="_blank" class="h-soclink h-soclink-tw"><img src="/images/tw.png" alt="SeoNews"></a> --> <a href="https://t.me/digital_bar" target="_blank" class="h-soclink h-soclink-tw"> <svg fill="none" height="60" width="60" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500"><path d="M250 500c138.071 0 250-111.929 250-250S388.071 0 250 0 0 111.929 0 250s111.929 250 250 250z" fill="#34aadf"/><path d="M104.047 247.832s125-51.3 168.352-69.364c16.619-7.225 72.977-30.347 72.977-30.347s26.012-10.115 23.844 14.451c-.723 10.116-6.503 45.52-12.283 83.815-8.671 54.191-18.064 113.439-18.064 113.439s-1.445 16.619-13.728 19.509-32.515-10.115-36.127-13.006c-2.891-2.167-54.191-34.682-72.977-50.578-5.058-4.335-10.838-13.005.722-23.121 26.012-23.844 57.081-53.468 75.867-72.254 8.671-8.671 17.341-28.902-18.786-4.336-51.3 35.405-101.878 68.642-101.878 68.642s-11.561 7.225-33.237.722c-21.677-6.502-46.966-15.173-46.966-15.173s-17.34-10.838 12.284-22.399z" fill="#fff"/></svg> </a> </div> <div class="main-link"><a class="white" href="https://www.seonews.ru/masterclasses/kak-tehnicheskimi-sposobami-zaschitit-avtorskie-prava-na-sayt-kontent-dizayn-i-td/">Перейти на полную версию</a></div> <div class="copyright">© SEOnews.ru Все права защищены. 2024</div> </div> </footer> <div class="xcom-hidden-iframes-list"></div> <div class="xcom-modest-progress-indicator"></div> <div class="xcom-review-notable-plate"> <div class="xcom-review-notable-plate-inner xcom-active"></div> </div> <script type="text/javascript" src="/js/jquery.fancybox.js"></script> <script type="text/javascript" src="/js/jquery.jcarousel.min.js"></script> <script type="text/javascript" src="/js/jquery.maskedinput.min.js"></script> <script type="text/javascript" src="/js/jquery.all.js"></script> <script type="text/javascript" src="/js/jquery.icheck.min.js"></script> <script type="text/javascript" src="/js/xcom-ui.js"></script> <script type="text/javascript" src="/js/owlcarousel/owl.carousel.min.js"></script> <script type="text/javascript" src="/js/magic-tables.min.js"></script> <script type="text/javascript" src="/local/templates/mobile/js/script.js?v=0.4"></script> <script src="https://www.google.com/recaptcha/api.js?render=6LefpqggAAAAAFhlRSremqZObPaX9g_Nc59X4V80"></script> <script type="text/javascript" src="/js/carousel.js"></script> <script> window.onReadyState = (e, t) => { const a = ["loading", "interactive", "complete"], o = a.slice(a.indexOf(e)), n = () => o.includes(document.readyState); n() ? t() : document.addEventListener("readystatechange", (() => n() && t())) } window.onReadyState("complete", function () { setTimeout(function () { s = document.createElement('script'); s.src = "//www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit"; s.async = true; document.body.appendChild(s); s = document.createElement('script'); s.src = "//cdn.jsdelivr.net/npm/yandex-share2/share.js"; s.async = true; s["charset"] = 'UTF-8'; document.body.appendChild(s); (function (d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/ru_RU/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); (function (d, w, c) { (w[c] = w[c] || []).push(function () { try { w.yaCounter25391549 = new Ya.Metrika2({ id: 25391549, clickmap: true, trackLinks: true, accurateTrackBounce: true, webvisor: true, ut: "noindex" }); } catch (e) { } }); var n = d.getElementsByTagName("script")[0], s = d.createElement("script"), f = function () { n.parentNode.insertBefore(s, n); }; s.type = "text/javascript"; s.async = true; s.src = "https://cdn.jsdelivr.net/npm/yandex-metrica-watch/tag.js"; if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); } })(document, window, "yandex_metrika_callbacks2"); (function (i, s, o, g, r, a, m) { i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () { (i[r].q = i[r].q || []).push(arguments) }, i[r].l = 1 * new Date(); a = s.createElement(o), m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m) })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga'); ga('create', 'UA-49851957-1', 'seonews.ru'); ga('send', 'pageview'); }, 1500) }) </script> </body> </html>