Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Dummy Text Generator 1.6

16.06.2017 | Категория: Мои программы | Автор: ManHunter

Скриншот программы Dummy Text Generator

Любой web-мастер при создании сайта прекрасно знает, какая проблема возникает когда надо добавить на создаваемый сайт несколько тестовых новостей, комментариев, статей и т.д. Казалось бы мелочь, а отвлекает от творческой работы. Можно, конечно, воспользоваться онлайновым сервисом Lorem Ipsum или пройтись по новостным сайтам, но это не всегда бывает удобно, да и не каждый заказчик оценит появление посторонних текстов на своем сайте. Программа Dummy Text Generator создает случайный набор символов, внешне похожий на обычный текст, но не несущий никакой смысловой нагрузки. Для большей наглядности текст может начинаться с классического "Lorem ipsum dolor sit amet...". Готовый текстовый блок можно сразу скопировать в буфер обмена. Только не пытайтесь читать вслух текст из программы, чтобы кого-нибудь случайно не вызвать :)

Читать статью целиком »
Просмотров: 10535 | Комментариев: 37

Google обнулил PageRank сайтов

11.08.2016 | Категория: Web-мастеру и не только | Автор: ManHunter

Google обнулил PageRank сайтов

В апреле этого года Google обнулил показатель PageRank для всех сайтов. Раньше это значение можно было более-менее свободно получить при помощи различных инструментов, а сейчас по любому запросу возвращается нулевое значение. Изначально значение PageRank был введен как основной критерий ранжирования сайтов, он демонстрировал цитируемость сайта, то есть, чем больше авторитетных источников ссылалось на какую-либо страницу, тем выше был ее показатель PR. По словам Google, показатель PageRank будет и дальше использоваться при ранжировании сайтов, но для публичного доступа это значение отныне будет скрыто.

Прекрасно понимаю, что опоздал с этой новостью на несколько месяцев, мастера SEO об этом уже давно знают. Но вот для меня, как для простого сайтовладельца, внезапное обнуление PageRank стало неприятным сюрпризом. Пришлось корректировать пузомерки и скрипты для сбора показателей.

Просмотров: 610 | Комментариев: 3

Определение мобильных браузеров с помощью .htaccess

09.09.2012 | Категория: Web-мастеру и не только | Автор: ManHunter
Недавно я разбирался с одним инфицированным сайтом. При заходе на него обычным браузером все было нормально, но при заходе с мобильных устройств, смартфонов и планшетников, пользователя автоматически перебрасывало на говносайт с троянами. Трояны у меня никаких эмоций не вызывают, а вот определение мобильных устройств было сделано очень интересно - через инфицированный файл .htaccess в корневом каталоге сайта. Я уже приводил пример определения мобильных браузеров на PHP, давайте посмотрим, как определение мобильных браузеров сделано в этом случае. В конец файла .htaccess был дописан следующий блок:
  1. <ifModule mod_rewrite.c>
  2. RewriteEngine on
  3. # Проверить строку UserAgent браузера
  4. RewriteCond %{HTTP_USER_AGENTacs [NC,OR]
  5. RewriteCond %{HTTP_USER_AGENTalav [NC,OR]
  6. RewriteCond %{HTTP_USER_AGENTalca [NC,OR]
  7. RewriteCond %{HTTP_USER_AGENTamoi [NC,OR]
  8. RewriteCond %{HTTP_USER_AGENTaudi [NC,OR]
  9. RewriteCond %{HTTP_USER_AGENTaste [NC,OR]
  10. RewriteCond %{HTTP_USER_AGENTavan [NC,OR]
  11. RewriteCond %{HTTP_USER_AGENTbenq [NC,OR]
  12. RewriteCond %{HTTP_USER_AGENTbird [NC,OR]
  13. RewriteCond %{HTTP_USER_AGENTblac [NC,OR]
  14. RewriteCond %{HTTP_USER_AGENTblaz [NC,OR]
  15. RewriteCond %{HTTP_USER_AGENTbrew [NC,OR]
  16. RewriteCond %{HTTP_USER_AGENTcell [NC,OR]
  17. RewriteCond %{HTTP_USER_AGENTcldc [NC,OR]
  18. RewriteCond %{HTTP_USER_AGENTcmd- [NC,OR]
  19. RewriteCond %{HTTP_USER_AGENTdang [NC,OR]
  20. RewriteCond %{HTTP_USER_AGENTdoco [NC,OR]
  21. RewriteCond %{HTTP_USER_AGENTeric [NC,OR]
  22. RewriteCond %{HTTP_USER_AGENThipt [NC,OR]
  23. RewriteCond %{HTTP_USER_AGENTinno [NC,OR]
  24. RewriteCond %{HTTP_USER_AGENTipaq [NC,OR]
  25. RewriteCond %{HTTP_USER_AGENTjava [NC,OR]
  26. RewriteCond %{HTTP_USER_AGENTjigs [NC,OR]
  27. RewriteCond %{HTTP_USER_AGENTkddi [NC,OR]
  28. RewriteCond %{HTTP_USER_AGENTkeji [NC,OR]
  29. RewriteCond %{HTTP_USER_AGENTleno [NC,OR]
  30. RewriteCond %{HTTP_USER_AGENTlg-[NC,OR]
  31. RewriteCond %{HTTP_USER_AGENTlg-[NC,OR]
  32. RewriteCond %{HTTP_USER_AGENTlg-[NC,OR]
  33. RewriteCond %{HTTP_USER_AGENTlge- [NC,OR]
  34. RewriteCond %{HTTP_USER_AGENTmaui [NC,OR]
  35. RewriteCond %{HTTP_USER_AGENTmaxo [NC,OR]
  36. RewriteCond %{HTTP_USER_AGENTmidp [NC,OR]
  37. RewriteCond %{HTTP_USER_AGENTmits [NC,OR]
  38. RewriteCond %{HTTP_USER_AGENTmmef [NC,OR]
  39. RewriteCond %{HTTP_USER_AGENTmobi [NC,OR]
  40. RewriteCond %{HTTP_USER_AGENTmot- [NC,OR]
  41. RewriteCond %{HTTP_USER_AGENTmoto [NC,OR]
  42. RewriteCond %{HTTP_USER_AGENTmwbp [NC,OR]
  43. RewriteCond %{HTTP_USER_AGENTnec- [NC,OR]
  44. RewriteCond %{HTTP_USER_AGENTnewt [NC,OR]
  45. RewriteCond %{HTTP_USER_AGENTnoki [NC,OR]
  46. RewriteCond %{HTTP_USER_AGENTopwv [NC,OR]
  47. RewriteCond %{HTTP_USER_AGENTpalm [NC,OR]
  48. RewriteCond %{HTTP_USER_AGENTpana [NC,OR]
  49. RewriteCond %{HTTP_USER_AGENTpant [NC,OR]
  50. RewriteCond %{HTTP_USER_AGENTpdxg [NC,OR]
  51. RewriteCond %{HTTP_USER_AGENTphil [NC,OR]
  52. RewriteCond %{HTTP_USER_AGENTplay [NC,OR]
  53. RewriteCond %{HTTP_USER_AGENTpluc [NC,OR]
  54. RewriteCond %{HTTP_USER_AGENTport [NC,OR]
  55. RewriteCond %{HTTP_USER_AGENTprox [NC,OR]
  56. RewriteCond %{HTTP_USER_AGENTqtek [NC,OR]
  57. RewriteCond %{HTTP_USER_AGENTqwap [NC,OR]
  58. RewriteCond %{HTTP_USER_AGENTsage [NC,OR]
  59. RewriteCond %{HTTP_USER_AGENTsams [NC,OR]
  60. RewriteCond %{HTTP_USER_AGENTsany [NC,OR]
  61. RewriteCond %{HTTP_USER_AGENTsch- [NC,OR]
  62. RewriteCond %{HTTP_USER_AGENTsec- [NC,OR]
  63. RewriteCond %{HTTP_USER_AGENTsend [NC,OR]
  64. RewriteCond %{HTTP_USER_AGENTseri [NC,OR]
  65. RewriteCond %{HTTP_USER_AGENTsgh- [NC,OR]
  66. RewriteCond %{HTTP_USER_AGENTshar [NC,OR]
  67. RewriteCond %{HTTP_USER_AGENTsie- [NC,OR]
  68. RewriteCond %{HTTP_USER_AGENTsiem [NC,OR]
  69. RewriteCond %{HTTP_USER_AGENTsmal [NC,OR]
  70. RewriteCond %{HTTP_USER_AGENTsmar [NC,OR]
  71. RewriteCond %{HTTP_USER_AGENTsony [NC,OR]
  72. RewriteCond %{HTTP_USER_AGENTsph- [NC,OR]
  73. RewriteCond %{HTTP_USER_AGENTsymb [NC,OR]
  74. RewriteCond %{HTTP_USER_AGENTt-mo [NC,OR]
  75. RewriteCond %{HTTP_USER_AGENTteli [NC,OR]
  76. RewriteCond %{HTTP_USER_AGENTtim- [NC,OR]
  77. RewriteCond %{HTTP_USER_AGENTtosh [NC,OR]
  78. RewriteCond %{HTTP_USER_AGENTtsm- [NC,OR]
  79. RewriteCond %{HTTP_USER_AGENTupg1 [NC,OR]
  80. RewriteCond %{HTTP_USER_AGENTupsi [NC,OR]
  81. RewriteCond %{HTTP_USER_AGENTvk-[NC,OR]
  82. RewriteCond %{HTTP_USER_AGENTvoda [NC,OR]
  83. RewriteCond %{HTTP_USER_AGENTw3cs [NC,OR]
  84. RewriteCond %{HTTP_USER_AGENTwap- [NC,OR]
  85. RewriteCond %{HTTP_USER_AGENTwapa [NC,OR]
  86. RewriteCond %{HTTP_USER_AGENTwapi [NC,OR]
  87. RewriteCond %{HTTP_USER_AGENTwapp [NC,OR]
  88. RewriteCond %{HTTP_USER_AGENTwapr [NC,OR]
  89. RewriteCond %{HTTP_USER_AGENTwebc [NC,OR]
  90. RewriteCond %{HTTP_USER_AGENTwinw [NC,OR]
  91. RewriteCond %{HTTP_USER_AGENTwinw [NC,OR]
  92. RewriteCond %{HTTP_USER_AGENTxda [NC,OR]
  93. RewriteCond %{HTTP_USER_AGENTxda- [NC,OR]
  94. RewriteCond %{HTTP_USER_AGENTup.browser [NC,OR]
  95. RewriteCond %{HTTP_USER_AGENTup.link [NC,OR]
  96. RewriteCond %{HTTP_USER_AGENTwindows.ce [NC,OR]
  97. RewriteCond %{HTTP_USER_AGENTiemobile [NC,OR]
  98. RewriteCond %{HTTP_USER_AGENTmini [NC,OR]
  99. RewriteCond %{HTTP_USER_AGENTmmp [NC,OR]
  100. RewriteCond %{HTTP_USER_AGENTsymbian [NC,OR]
  101. RewriteCond %{HTTP_USER_AGENTmidp [NC,OR]
  102. RewriteCond %{HTTP_USER_AGENTwap [NC,OR]
  103. RewriteCond %{HTTP_USER_AGENTphone [NC,OR]
  104. RewriteCond %{HTTP_USER_AGENTipad [NC,OR]
  105. RewriteCond %{HTTP_USER_AGENTiphone [NC,OR]
  106. RewriteCond %{HTTP_USER_AGENTiPad [NC,OR]
  107. RewriteCond %{HTTP_USER_AGENTiPhone [NC,OR]
  108. RewriteCond %{HTTP_USER_AGENTipod [NC,OR]
  109. RewriteCond %{HTTP_USER_AGENTiPod [NC,OR]
  110. RewriteCond %{HTTP_USER_AGENTpocket [NC,OR]
  111. RewriteCond %{HTTP_USER_AGENTmobile [NC,OR]
  112. RewriteCond %{HTTP_USER_AGENTandroid [NC,OR]
  113. RewriteCond %{HTTP_USER_AGENTAndroid [NC,OR]
  114. RewriteCond %{HTTP_USER_AGENTpda [NC,OR]
  115. RewriteCond %{HTTP_USER_AGENTPPC [NC,OR]
  116. RewriteCond %{HTTP_USER_AGENTSeries60 [NC,OR]
  117. RewriteCond %{HTTP_USER_AGENTOpera.Mini [NC,OR]
  118. RewriteCond %{HTTP_USER_AGENTMoby [NC,OR]
  119. RewriteCond %{HTTP_USER_AGENTMobi [NC,OR]
  120.  
  121. # Проверить служебные заголовки, отсылаемые браузером
  122. RewriteCond %{HTTP_ACCEPT"text/vnd.wap.wml" [NC,OR]
  123. RewriteCond %{HTTP_ACCEPT"application/vnd.wap.xhtml+xml" [NC,OR]
  124.  
  125. # Проверить исключения
  126. RewriteCond %{HTTP_USER_AGENT} !windows.nt [NC]
  127. RewriteCond %{HTTP_USER_AGENT} !bsd [NC]
  128. RewriteCond %{HTTP_USER_AGENT} !x11 [NC]
  129. RewriteCond %{HTTP_USER_AGENT} !unix [NC]
  130. RewriteCond %{HTTP_USER_AGENT} !macos [NC]
  131. RewriteCond %{HTTP_USER_AGENT} !macintosh [NC]
  132. RewriteCond %{HTTP_USER_AGENT} !playstation [NC]
  133. RewriteCond %{HTTP_USER_AGENT} !google [NC]
  134. RewriteCond %{HTTP_USER_AGENT} !yandex [NC]
  135. RewriteCond %{HTTP_USER_AGENT} !bot [NC]
  136. RewriteCond %{HTTP_USER_AGENT} !libwww [NC]
  137. RewriteCond %{HTTP_USER_AGENT} !msn [NC]
  138. RewriteCond %{HTTP_USER_AGENT} !america [NC]
  139. RewriteCond %{HTTP_USER_AGENT} !avant [NC]
  140. RewriteCond %{HTTP_USER_AGENT} !download [NC]
  141. RewriteCond %{HTTP_USER_AGENT} !fdm [NC]
  142. RewriteCond %{HTTP_USER_AGENT} !maui [NC]
  143. RewriteCond %{HTTP_USER_AGENT} !webmoney [NC]
  144. RewriteCond %{HTTP_USER_AGENT} !windows-media-player [NC]
  145.  
  146. # При выполнении условий переадресация на мобильную версию сайта
  147. RewriteRule ^(.*)$ http://mobile.version.of.site.ru [L,R=302]
  148. </ifModule>
Как это все работает? На сервере обязательно должен быть включен модуль mod_rewrite, без него ничего не получится. Так что для надежности весь этот блок обернут в проверку наличия mod_rewrite у сервера Apache (в оригинальном коде этого не было). Дальше в модуле анализируется строка UserAgent браузера посетителя, в ней последовательно проверяется наличие подстроки, характерной для браузеров мобильных устройств. После этого проверяются специфические служебные заголовки, обычно отправляемые мобильными браузерами. Если хоть одно из этих условий выполнено, то следом выполняется дополнительная проверка на различные поисковые боты, а также некоторые другие сигнатуры, присущие стационарным браузерам или автоматическим модулям. Если и эта проверка пройдена удачно, то последней строчкой посетитель перенаправляется на мобильную версию сайта.

Читать статью целиком »
Просмотров: 8789 | Комментариев: 10

Автоматическое получение Яндекс тИЦ для сайтов

13.12.2011 | Категория: Web-мастеру и не только | Автор: ManHunter
Тематический индекс цитирования (тИЦ) используется в поисковой системе Яндекс и определяет "авторитетность" интернет-ресурсов. Этот индекс используется в различных СЕО-инструментах, однако сам Яндекс не предоставляет никаких средств для его легального получения. Но нам на помощь может прийти разработка самого Яндекса - Яндекс.Бар, в котором при серфинге отображается тИЦ открытого сайта. Очевидно, что эти данные Яндекс.Троян получает от самого сервера, осталось отследить любым сниффером, куда идет обращение и в каком формате. В отличие от Google PR, с Яндексом проблем нет. Никаких дополнительных контрольных сумм для ссылки считать не надо, да и тИЦ единый для всего домена. В итоге все ограничивается одним простым запросом типа:

http://bar-navig.yandex.ru/u?ver=2&show=32&url=http://www.manhunter.ru

В качестве значения последнего параметра url передается имя проверяемого домена. В ответ вернется XML-файл, подобный приведенному ниже:
  1. <?xml version="1.0" encoding="windows-1251" ?>
  2. <urlinfo>
  3.     <url domain="www.manhunter.ru"><![CDATA[/]]></url>
  4.     <yaca url="www.manhunter.ru"/>
  5.     <tcy rang="3" value="70"/>
  6.     <topics></topics>
  7.     <textinfo></textinfo>
  8. </urlinfo>
Искомое значение Яндекс тИЦ содержится в теге tcy, вытащить его оттуда можно простейшим парсером. Но злоупотреблять подобными запросами все-таки не надо, можно получить бан по IP. Значение тИЦ пересчитывается примерно раз в неделю, поэтому информацию достаточно загружать раз в час или вообще раз в сутки, а полученные данные кэшировать на своей стороне.

Просмотров: 4936 | Комментариев: 8

Новый алгоритм получения Google PageRank

11.10.2011 | Категория: Web-мастеру и не только | Автор: ManHunter
Буквально на днях Google поменял алгоритм, по которому генерировалась ссылка для получения показателей Google PageRank. В результате этого отвалились многие сервисы, вспомогательные программы, сторонние тулбары, счетчики и еще бессчетное количество сеошного барахла. Мне было бы глубоко фиолетово на их проблемы, но у меня на сайте тоже используется система автоматического съема значений Google PR. Поэтому пришлось быстренько адаптироваться к новым условиям. Я установил себе гугловский тулбар, быстренько выпотрошил его и получил алгоритм генерации ссылки для получения Google PageRank. Вот как он выглядит на JavaScript:
  1. <script type="text/javascript">
  2.  
  3. // Программисты Google явно с юмором :)
  4. var HASH_SEED "Mining PageRank is AGAINST GOOGLE'S TERMS OF SERVICE. "+
  5.                  "Yes, I'm talking to you, scammer.";
  6.  
  7. // Расчет хэша строки запроса
  8. awesomeHash = function(a) {
  9.     var 16909125;
  10.     for (0a.lengthc++) {
  11.         b ^= HASH_SEED.charCodeAt(HASH_SEED.length) ^ a.charCodeAt(c);
  12.         b >>> 23 << 9;
  13.     }    
  14.     return '8'+hexEncodeU32(b);
  15. };
  16.  
  17. // Перевод числа в HEX-значение
  18. hexEncodeU32 = function(a) {
  19.     var toHex8(>>> 24);
  20.     b += toHex8(>>> 16 255);
  21.     b += toHex8(>>> 255);
  22.     return toHex8(255)
  23. };
  24. toHex8 = function(a) {
  25.     return (16 "0""") + a.toString(16)
  26. };
  27.  
  28. // Функция получения ссылки для запроса Google PR
  29. getPageRankLink = function(a) {
  30.     return 'http://toolbarqueries.google.ru/tbr?features=Rank'+
  31.            '&client=navclient-auto-ff&ch='+awesomeHash(a)+'&q=info:'+
  32.            encodeURIComponent(a);
  33. }
  34. </script>
Функция вызывается следующим образом. На входе подается ссылка на страницу, для которой требуется рассчитать Google PageRank, на выходе получаем ссылку, по которой можно узнать результат.
  1. <script type="text/javascript">
  2.  
  3. // Пример использования
  4. st='http://www.manhunter.ru/'
  5. alert(getPageRankLink(st));
  6.  
  7. </script>
Результат запроса к гугловскому серверу возвращается в виде строки, например, "Rank_1:1:2". Последняя цифра и есть искомое значение рейтинга страницы. Алгоритм можно без особого труда перевести на другие языки программирования.

Читать статью целиком »
Просмотров: 5312 | Комментариев: 12

prev 01 02 03 next
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2017
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 3 (0.0193 сек.) / Память: 4.5 Mb
Наверх