Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #29, АПРЕЛЬ 2003 г.

ВЕБ-ШПИОНСТВО - добываем инфу о юзере

Леха ББ aka Alexys

Спецвыпуск Xakep, номер #029, стр. 029-034-4


scd = screen.colorDepth;

page = escape(window.location.href);

document.write("<img src=\" http://winfo.org/cgi-bin/stat.pl?",

"ch=" + ch + "&ua=" + ua + "&v=" + v + "&resol=" + resol + "&os=" + os + "&isjava=" + isjava + "&scd=" + scd + "&page=" + page + "\"", width=25 height=15 " + "border=0>");

//

-->

</script>

<noscript>

<img src=" http://winfo.org/cgi-bin/stat.pl?js=nojs"

width=25 height=15 border=0>

</noscript>

</a>

<!--YOUR COUNTER-->

Передача параметров, определенных кодом выше, осуществляется при помощи Java Script'а между тэнами <script>...</script>. Параметры, определенные с помощью JS, передаются CGI-шнику в тэге <img src ...>. Передаваемые параметры отделяются от имени скрипта знаком вопроса (?), а между собой разделяются амперсандом (&). Передаваемые параметры выглядят примерно так:

windows-1251; Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0); 4.0; 1024x768; Windows NT; Yes; 32; file:///D:/Testing/browser.html.

Сведения о разрешении экрана передаются в удобочитаемой форме типа "1024х768". На мой взгляд, лучше всего передавать как один параметр разрешение по горизонтали и вертикали, ибо так просто удобнее их видеть без дальнейшей обработки. Все пробелы, которые встретились в значениях параметров, заменены знаком %. Это надо будет учесть при написании скрипта обработчика.

Если JS не работает (отключен, не установлен), то тогда ничего не будет передано, ибо ничего не определится. А для того чтобы узнать, что у кого-то JS не работает, в тэгах <noscript>...</noscript> скрипту передается соответствующая информация (stat.pl?js=nojs). Кроме того, содержимое тэгов <noscript>...</noscript> позволит заполнить место, которое могло бы быть пустым, картинкой.

JS-код написан. Теперь надо браться за cgi-шник. В папке cgi-bin надо сделать файл stat.pl. В его задачи входит вывод картинки, обработка и запись принятых параметров в файл. Для того чтобы скрипт выводил картинку, по идее надо разбираться с форматом gif или jpeg, но это не самое приятное занятие. Тем более, если делаешь не счетчик, который будет показывать количество уников, хитов и хостов, то этого можно и избежать. Намного проще будет сделать картинку, которую скрипт будет считывать и потом выдавать. Отличие такого скрипта будет в заголовке. Вместо привычного "print "Content-type: text/html;charset=windows-1251\n\n";", который нужен для выдачи в ответе html-страниц, будет строка "print "Content-type: image/gif\n\n";". Этот заголовок будет сообщать броузеру, что результатом работы скрипта является динамический gif-файл. Кроме того, понадобится еще процедура FormInput. Ее исходник и описалово опубликованы в ХАКЕР СПЕЦ 02(27) "ПАГА-РОБОТ". Кроме того, ее можно скачать отсюда: http://winfo.org/down/values.zip. Эта процедура понадобится для обработки полученных параметров и их последующей записи в файл.

Если скрипт будет работать на *nix-системах, то считывание и выдача содержимого файла будет такой же, как и при работе с текстовыми файлами. Под виндами вместе с символом новой строки \n появятся лишние символы возврата каретки \r. Понятно дело, все будет выглядеть не так, как надо. Во избежание таких глюков надо указать, что файл должен считываться как бинарный. Запусти Photoshop (ну или чем ты рисуешь) и нарисуй небольшую картинку. После чего сохрани ее в папке html как p1.gif (имя может быть любое, просто такое используется в примере). Только делай картинку не стандартно используемых счетчиками размера (88х31, 120х60, 100х100), а то некоторые резатели, типа Outpost'а, будут вырезать всю часть кода. А значит, и статистика собираться не будет.

Назад на стр. 029-034-3  Содержание  Вперед на стр. 029-034-5