Blog. Just Blog

Web-мастеру и не только

Полезные решения для Web-мастеров
Web-мастеру и не только - RSS-канал Web-мастеру и не только - Карта сайта

Парсер REFERER'ов с поисковых систем

04.02.2009 | Категория: Web-мастеру и не только | Автор: ManHunter
Обработка заголовка HTTP referer является одной из важных задач при раскрутке сайта и сборе статистики. По нему можно определить, какие ресурсы ссылаются на ваш сайт. Но особую ценность представляют данные посещений с поисковых систем, так как эта информация позволяет наиболее четко определить, по каким ключевым словам ваш сайт может быть найден, а также проанализировать эффективность поисковой оптимизации вашего ресурса. Если вы пользуетесь сторонними счетчиками посещений, то эту информацию они обычно предоставляют сами. В некоторых случаях такие данные предоставляют серверные системы статистики типа Webalizer. Я принципиально не пользуюсь ни тем, ни другим, обрабатываю все данные самостоятельно. Для этого была написана функция обработки рефереров, которую я использую в своих проектах. Данные поискового запроса обычно передаются методом GET и содержатся в строке браузера, но основная проблема в том, что кодировка этих данных может быть разной даже в пределах одной и той же поисковой системы. Как выяснилось, не везде доступна штатная функция PHP is_unicode(), поэтому для подстраховки пришлось написать свою. Проверка выполняется согласно правилам формирования Юникода.
  1. // Функция проверки является ли переменная строкой в Юникоде 
  2. // Если штатная функция не определена, то применить нашу
  3. if (!function_exists('is_unicode')) {
  4.   function is_unicode($str) {
  5.     for ($i=0$i<strlen($str); $i++) {
  6.       // Если символ с кодом больше 191, то возможно это юникод
  7.       if (ord($str[$i])>191) {
  8.         // Следующий символ должен быть в интервале
  9.         // 10000000b ... 10111111b (128...191)
  10.         if (ord($str[($i+1)])<128 || ord($str[($i+1)])>191) {
  11.           // Условие не выполнено, значит это не юникод
  12.           return false;
  13.         }
  14.         else {
  15.           // Пропускаем один байт, т.к. он является частью символа
  16.           $i++;
  17.         }
  18.       }
  19.     }
  20.     // Проверка пройдена, это юникод
  21.     return true;
  22.   }
  23. }
Теперь, когда мы можем четко определить кодировку строки запроса, нам необходимо выделить ее из строки URL. Для этого достаточно выполнить в интересуемом поисковике любой запрос и посмотреть как формируется ссылка.

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

Обход эвристики Avira AntiVir в JavaScript

08.01.2009 | Категория: Web-мастеру и не только | Автор: ManHunter
Последние несколько дней посетители сайта стали жаловаться, что их антивирус эвристически определяет в HTML-коде страниц сайта вредоносный код. Их объединяло одно: они все пользовались "антивирусом" (в кавычках) под гордым названием Avira AntiVir. После недолгого расследования и тестирования было выяснено, что эта недоделка ругается на скрипт добавления страницы в закладки, а конкретно на его часть, отвечающую за работу в Internet Explorer:
  1. // Internet Explorer
  2. window.external.AddFavorite(urltitle);
Не знаю что надо курить, чтобы додуматься распознавать это действие как опасное, однако факт остается фактом: абсолютно безопасный код распознается этим "антивирусом" как вредоносный. Эвристика ругается на добавление страницы в закладки официально документированными средствами! Отличный пример как НЕ надо писать программы. Чтобы заткнуть Avira достаточно в скрипте чуть-чуть изменить сигнатуру "AddFavorite", а при выполнении привести ее в первоначальный вид:
  1. // Internet Explorer
  2. eval("window.external.AddFa-vorite(url, title)".replace(/-/g,''));
Приношу извинения пользователям за доставленные неудобства. А тупым дрочерам из младших классов, которые писали этот "антивирус", могу только порекомендовать поменьше лазать по порносайтам, тогда и в закладки ничего ставиться не будет. Ну и напоследок: реально вредоносный код на HTML-страницах можно спрятать от Avira AntiVir точно таким же примитивнейшим способом. Выводы о надежности этой поделки, думаю, сделаете сами.

Просмотров: 8824 | Комментариев: 16

Защита от спама на сайтах и форумах

14.12.2008 | Категория: Web-мастеру и не только | Автор: ManHunter
Проблема спама в комментариях, гостевых книгах, сообщениях на форумах в настоящее время стоит очень остро. Раньше даже простенькая капча или подтверждение регистрации на форуме по e-mail были практически непреодолимым препятствием для спамботов и автосабмиттеров. Теперь появились достаточно мощные программы для авторегистрации и рассылки спама, способные реально обходить эти защиты. Никаких названий и ссылок на сайты указывать не буду, чтобы не делать рекламы этим ублюдкам. В описании одного из спамботов его аффтар хвалится:


Эксклюзивная возможность - программа обходит ЛЮБЫЕ виды защиты от автоматической регистрации и автосабмита! Такие, как:
- Защита при помощи пиктокода (тикетов) типа "Введите число, которое видите".
- Защита при помощи активации по e-mail.
- Защита при помощи некоторых Java-скриптов.
- Возможность распознавания защиты в виде арифметических операций и логических вопросов


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


Изредка на некоторых форумах встречается защита от автосабмита в виде java- или VB-скрипта.
Как показала практика, чтобы научить программу обходить такого рода защиту, совсем необязательно писать полнофункциональный обработчик скрипта. Главное, чтобы такой вид защиты был достаточно распространён: нецелесообразно создавать обработчик, если такая защита используется только на одном-двух форумах.


Значит наш удар будет нанесен в самое слабое место спамботов - невозможность обрабатывать формы, защищенные при помощи скриптов JavaScript. Лично я противник использования на сайтах различных навороченных капчей, которые не то что робот, а и не каждый здоровый человек разберет. После первого же неправильного ввода желание оставлять комментарий, да и вообще посещать подобный ресурс, очень резко уменьшается. Туда же идут всякие "сколько будет 2+3", "что нарисовано на картинке" и прочие лишние телодвижения, не связанные непосредственно с комментированием.

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

Шпаргалки для Web-мастера по HTML, CSS и JavaScript

30.11.2008 | Категория: Web-мастеру и не только | Автор: ManHunter
В свое время преподаватели учили меня: "Не надо всего знать, надо знать где взять". Для больших объемов информации я, конечно, предпочитаю бумажные справочники. А когда надо быстро посмотреть синтаксис какой-нибудь редко используемой функции, параметры тега или код цвета, то очень выручают онлайн-справочники и файлы-шпаргалки. Вот основные сайты и ресурсы для облегчения поиска.

Целые каталоги шпаргалок по различным языкам программирования предлагают сайты TechCheatSheets.com, gotAPI, WhatIs.com и refcards.com. Последний сайт уже давно не обновлялся.

Большой набор файлов-шпаргалок по PHP, Apache, mod_rewrite, CSS, JavaScript, HTML, MySQL, ASP, VBScript и другие можно найти на сайте Added Bytes. Они выполнены в формате PDF и PNG.

Отдельно шпаргалки по JavaScript выложены на сайте JavaScript Reference, использование регулярных выражений в JavaScript можно посмотреть на сайте VisiBone. При желании там же можно за денежку заказать наборы шпаргалок в бумажном виде.

Онлайновый справочник по HTML и CSS на русском языке на сайте htmlbook.ru, а в виде шпаргалок на сайте HTML Tags. Справочники по CSS с примерами здесь и здесь. Справочник по CSS на русском языке выложен на сайте Александра Климова, а на сайте CSSplay вы можете посмотреть интересные примеры верстки с использованием CSS.

Таблицу HTML-цветов можно посмотреть на сайте VisiBone или скачать в формате PDF с сайта Veign.

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

Кроссбраузерное добавление страницы в закладки

25.11.2008 | Категория: Web-мастеру и не только | Автор: ManHunter
Кроссбраузерное добавление страницы в закладки реализуется с использованием JavaScript. Для добавления страницы в Избранное браузеров Internet Explorer и браузеров, работающих на движке IE, вызывается стандартный метод AddFavorite. Однако здесь есть одна важная деталь. Если страница IE открыта как embedded-объект в другом приложении, например в плагинах или при использовании компонентов для работы с html, то объект window.external присутствует, но его метод AddFavorite не срабатывает. Это наиболее частая ошибка разработчиков, которые просто копируют код друг у друга без его понимания и тестирования. Также большой ошибкой будет использование на своем сайте только одного этого способа.

Браузеры на движке Gecko, такие как Firefox, Netscape, K-Meleon и другие, имеют объект window.sidebar и метод для добавления addPanel. Третий параметр метода недокументирован и является необязательным, поэтому в скрипте заменяется просто пустой строкой. Обратите внимание, что по умолчанию ссылка добавляется не совсем в закладки, а в боковую панель браузера. Для добавления страницы в нужную папку закладок выберите ее в выпадающем меню. С версии 23 в Firefox не поддерживается метод addPanel, в этом случае надо использовать метод добавления Opera.

Для браузера Opera ссылка добавления в закладки должна иметь атрибут rel="sidebar". Но если этот атрибут ставить сразу по умолчанию, то некоторые браузеры типа Netscape будут отрабатывать функцию добавления в закладки дважды: первый раз через скрипт и второй раз через атрибут rel. Поэтому придется изменять атрибуты ссылки динамически, предварительно определив браузер проверкой типа объекта opera.

Если ни один из перечисленных способов не сработал, то не надо выдавать сообщение об ошибке или еще хуже, молча завершать выполнение скрипта. Будет гораздо правильнее показать пользователю доступный вариант решения задачи, например предложить вручную нажать комбинацию клавиш Ctrl+D.

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

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2021
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.11 сек. / MySQL: 2 (0.003 сек.) / Память: 4.75 Mb
Наверх