Форумы Форум www.proxomitron.ru
Все о программе Proxomitron
Главная  • FAQ для форума  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Личные сообщения  •  Вход
 Запись в лог-файл
 Сайт -> Форумы » Фильтры
Следующая тема
Предыдущая тема

Новая тема  Ответить
Автор Сообщение
Витя Малеев
Junior Member
Junior Member


Зарегистрирован: 30.06.2004
Сообщения: 20
Откуда: г. Норильск, Россия

СообщениеДобавлено: Пт, Июл 02 2004 12:34 Цитировать |  |  | 

Кто-нибудь реализовывал фильтр, который ведёт логи блокированных или by-pass адресов? Если не коммерческая тайна, прошу поделиться, желательно с кратким описанием его работы.
К началу Профиль Сообщение ICQ
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2634
Откуда: SPb

СообщениеДобавлено: Пт, Июл 02 2004 13:04 Цитировать |  |  | 

Фильтр я не реализовывал, но краткое описание работы могу процитировать из документации:
Цитата:
$URL(http://\1)
$ADDLST(MyList, $WESC(\1))
К началу Профиль Сообщение
Витя Малеев
Junior Member
Junior Member


Зарегистрирован: 30.06.2004
Сообщения: 20
Откуда: г. Норильск, Россия

СообщениеДобавлено: Вт, Июл 06 2004 10:37 Цитировать |  |  | 

Сделал запись в лог для фильтров заголовков. Например в строку "Текст замены" фильтра URL-killer добавил следующее:
$ADDLST(LogAd, $DTM(E T) Header filter "URL-Killer" \u)
после чего при срабатывании фильтра в лог добавляется строка:
6/7/2004 15:22:43 Header filter "URL-Killer" http://www.kerio.com/kerio.html
Для html-фильтров параметр \u показывает url текущей страницы, а в лог нужно внести вырезаемый элемент. Попробую доработать...
К началу Профиль Сообщение ICQ
Витя Малеев
Junior Member
Junior Member


Зарегистрирован: 30.06.2004
Сообщения: 20
Откуда: г. Норильск, Россия

СообщениеДобавлено: Вт, Июл 06 2004 11:58 Цитировать |  |  | 

С web-фильтрами сложнее, нужно понять, как он работает, чтобы запихнуть переменную в log. Вот дополнительный код к фильтру "Banner Blaster (limit text)":
Код:
$ADDLST(LogAd, $DTM(E T) Web filter "Banner Blaster (limit text)" \u\tВырезано: \1)

В лог записывается строка такого плана:
Код:
6/7/2004 16:48:16 Web filter "Banner Blaster (limit text)" http://www.gismeteo.ru/weather/towns/23078.htm   Вырезано: <a href="http://top100.rambler.ru/top100/Nature/index.shtml.ru">

Выполнение остальных фильтров можно тем же способом в логи писать, причём в разные, если хочется.
К началу Профиль Сообщение ICQ
Витя Малеев
Junior Member
Junior Member


Зарегистрирован: 30.06.2004
Сообщения: 20
Откуда: г. Норильск, Россия

СообщениеДобавлено: Чт, Июл 22 2004 09:02 Цитировать |  |  | 

Оказалось мой фильтр в лог пишет не то что нужно Very Happy
Вот правильный фильтр:
Код:
Name = "Banner Blaster (limit text) (Log)"
Active = TRUE
Bounds = "<a\s[^>]++href=*</a>|<input*>|<ilayer*</ilayer>|<iframe*</iframe>"
Limit = 900
Match = "(<i(layer|frame)*|\1<i(mg|mage|nput)*src=$AV(\4)*>\3)"
        "&(*(href|src)=$AV($LST(AdKeys)*)|"
        "*http://*<i(mg|mage|nput)\s(*>&&"
        "(*width=[#460-480]&*height=[#55-60]*)|"
        "(*width=[#88]&*height=[#31]*)))"
        "&(*alt=$AV((?+{18})\2*|\2)|$SET(2=Ad))"
Replace = "<center>\1<font size=1 color=red>[\2]</font>\3</center>"
          "$ADDLST(LogAd, $DTM(E T) Web filter "Banner Blaster (limit text)" \u\tВырезано: \4)"
Ещё осталось продумать, что сделать, чтобы из вырезанного и записанного в лог url удалять переносы строк (иногда попадаются и такие)
К началу Профиль Сообщение ICQ
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2634
Откуда: SPb

СообщениеДобавлено: Чт, Июл 22 2004 17:37 Цитировать |  |  | 

Какие переносы в URL!? Приведи пример исходного кода, где встречается такое. Вырезать-то оттуда можно всё ;).
К началу Профиль Сообщение
Витя Малеев
Junior Member
Junior Member


Зарегистрирован: 30.06.2004
Сообщения: 20
Откуда: г. Норильск, Россия

СообщениеДобавлено: Пт, Июл 23 2004 06:27 Цитировать |  |  | 

Ещё немного доработал фильтр "Banner blaster..." Wink Необходимо заменить одну строку строку:
Код:
Match = "(<i(layer|frame)\4*|\1<i(mg|mage|nput)*src=$AV(\4)*>\3)"
Теперь в лог записывается "Frame", если он был вырезан, раньше не записывалось ничего.

2 chAlx:
Я пока ковырялся с фильтром, стёр старый лог для удобства. Если снова найду страницы с переносами внутри url, отпишу.
К началу Профиль Сообщение ICQ
Витя Малеев
Junior Member
Junior Member


Зарегистрирован: 30.06.2004
Сообщения: 20
Откуда: г. Норильск, Россия

СообщениеДобавлено: Вт, Июл 27 2004 08:07 Цитировать |  |  | 

Хочу сделать правило, которое записывает в лог сколько раз за страницу выполнился тот или иной фильтр. Создал два фильтра:
Код:
Name = "Rules counter (start)"
Active = FALSE
Limit = 256
Match = "<start>"
Replace = "$SET(JumperOuter=0)"

Name = "Rules counter (end)"
Active = FALSE
Limit = 256
Match = "<end>"
Replace = "$ADDLST(LogAd, $DTM(E T) Web filter "JumperOuter" \u\tВыполнился $GET(JumperOuter) раз)"
Первый обнуляет глобальную переменную в начале страницы, второй выводит её в файл в конце страницы. Оба фильтра работают. Осталось добавить в фильтр "Frame jumper outer" (для примера) команду увеличения переменной на единицу, но я перерыл весь мануал, но так её и не нашёл. Подскажите плз, как инкрементировать переменную, если вообще такое возможно.
К началу Профиль Сообщение ICQ
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2634
Откуда: SPb

СообщениеДобавлено: Вт, Июл 27 2004 12:56 Цитировать |  |  | 

Самое очевидное:
Код:
$SET(JumperOuter=$GET(JumperOuter)+)

Можно плюсики заменить на " и еще раз", чтобы твой текст читался натуральней.

Есть вариант написать фильтр из кучи $TST(), который будет выполнять инкремент контекстной заменой, и вызывать его. Но изврат ведь дикий, и зачем систему нагружать ради красивости? Плюсики и так наглядные, если их меньше сотни ;)
К началу Профиль Сообщение
Витя Малеев
Junior Member
Junior Member


Зарегистрирован: 30.06.2004
Сообщения: 20
Откуда: г. Норильск, Россия

СообщениеДобавлено: Ср, Июл 28 2004 05:15 Цитировать |  |  | 

Я сначала не оценил твой юмор, пока не добавил строку в фильтр Very Happy Плюсики действительно смотрятся красиво :cheesy:
К началу Профиль Сообщение ICQ
c0re
Newbee
Newbee


Зарегистрирован: 05.08.2004
Сообщения: 4
Откуда: Саратов

СообщениеДобавлено: Чт, Авг 05 2004 13:35 Цитировать |  |  | 

сорри за офтопик, но... подскажите плз... где взять более новый (полный хелп), а то я гляжу тут какими-то интересными командами оперируют... у меня в хелпе таких нет.

PS: у меня русский хелп по 4-й версии, но в англ. имхо тоже не видел... Confused
К началу Профиль Сообщение ICQ
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2634
Откуда: SPb

СообщениеДобавлено: Чт, Авг 05 2004 14:43 Цитировать |  |  | 

2c0re:
Как ни странно, http://proxomitron.ru/

ПС: В любой версии Прокса есть хелп, такой же новый, как и сам дистрибутив.


Последний раз редактировалось: chAlx (Пн, Окт 24 2005 17:35), всего редактировалось 1 раз
К началу Профиль Сообщение
c0re
Newbee
Newbee


Зарегистрирован: 05.08.2004
Сообщения: 4
Откуда: Саратов

СообщениеДобавлено: Чт, Авг 05 2004 14:57 Цитировать |  |  | 

пасип, посмотрю Smile)

я свой качал сто лет назад... Cool
у меня 4.5 (2003-6-1)

PS: а новых версий на сколько я знаю вроде как нет....
К началу Профиль Сообщение ICQ
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2634
Откуда: SPb

СообщениеДобавлено: Чт, Авг 05 2004 15:31 Цитировать |  |  | 

Storm, скажи ему :)

Я русским хелпом не пользуюсь, но какой-то завалялся, в нём всё есть:
Цитата:
Специальные команды Proxomitron (URL-команды)

m=совпавшее значение, r=текст замены, b=Булева переменная (0 или 1)

$AV(m) Соответствует значению атрибута, исключая любые кавычки.
$AVQ(m) Соответствует значению атрибута, включая любые кавычки.
$CON(x,y,[z]) Проверяет текущий номер соединения.
$ESC(stuff) Заменяет в URL специальные символы их эскейп-последовательностями, что делает URL безопасными для использования в фильтрах (обратно $UESC).
$FILTER(b) Включает/отключает принудительное фильтрование.
$IHDR(header: m) Совпадение со входящим заголовком.
$INEST(start,[m],end) То же, что и $NEST, но полагает, что начальный тег уже совпал.
$JUMP(url) Перенаправление URL (непрозрачное).
$LST(listname) Включает блок-лист в выражение.
$NEST(start,[m],end) Находит пару вложенных тегов.
$OHDR(header: m) Совпадение со исходящим заголовком.
$RDIR(url) Перенаправление URL (прозрачное).
$SET(0=r) Устанавливает заданное значение в переменную \0-9 или \#.
$SETPROXY Устанавливает определенный прокси для заданного соединения.
STOP() Останавливает работу фильтра до конца страницы.
$TYPE(type value) Проверяет тип обрабатываемой страницы.
$UESC(stuff) Удаляет специальные эскейпы типа "%xx" из URL.
$URL(m) Ищет URL внутри заданного участка страницы.
$USEPROXY(b) Включает/отключает прокси для данного соединения.

Команды, добавленные после выхода релиза 4.0

$KEYCHK() Используется для проверки нажатия комбинаций клавиш в фильтре.
$FILE(filename) Позволяет вставить содержимое любого файла в текст замены любого фильтра.
$RESP(match) Предназначена для захвата кода ответа, возвращаемого web-сервером.
$ASK(AL, DL, Prompt, item [,alt]) Задает вопросы пользователю, должен ли отфильтровываться определенный элемент.
$DTM(format) Вставляет дату, время и информацию о соединении в текст замены.
$LOG() Отправляет сообщение в журнал, если он открыт.
$ALERT() Выдает заданное сообщение.
$CONFIRM() Отображает диалог, где пользователь может выбрать один из вариантов Да/Нет.
$ADDLST(Name, Text) Добавляет элементы в список из фильтра.
$ADDLSTBOX(Name, Title, Text) Аналогичен $ADDLST(), но выдает пользователю стандартный диалог "add to blockfile".
$WESC() Команда "отменяет" все спецсимволы во входной строке.
$LOCK() Используется для синхронизации действия фильтров между одновременно заружающимися страницами.
$UNLOCK() Используется для синхронизации действия фильтров между одновременно заружающимися страницами.

Ну, и так далее.
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2634
Откуда: SPb

СообщениеДобавлено: Пн, Окт 24 2005 15:18 Цитировать |  |  | 

Igor:
Цитата:
Подскажите, возможно ли создание лог файла, в который бы записывалось хотябы сождержимое лог окна, а лучше еще и содержимое полученных данных с указанием айпи и даты запроса?

Можно сделать лог средствами фильтра: с помощью $ADDLST() выводить в отдельный файл дату/время и запрашиваемый/отвечающий хост. Только IP так получить не получится: он на более низком уровне ресолвится. Можно и контент веб-фильтром выводить, если отказаться от остальной фильтрации..

Только это всё изврат: возможностей немного, а неудобства реальные. Лучше отдельный софт для этого использовать.
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2634
Откуда: SPb

СообщениеДобавлено: Пн, Окт 24 2005 17:33 Цитировать |  |  | 

Товарищ igorbasic нашёл ответ здесь:
http://castlecops.com/p13198-How_to_create_a_log_file.html#13198

Там есть готовый заголовочный фильтр для ведения лога.
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2634
Откуда: SPb

СообщениеДобавлено: Чт, Май 07 2009 16:27 Цитировать |  |  | 

Цитата:
Там есть готовый заголовочный фильтр для ведения лога.


Там он был, пока ресурс не накрылся.. :(

bold666 писал(а):
Есть ли способ записывать автоматически заголовки в отдельный лог-файл, нужна статистика и отчетность посещения страниц на компьютере. Нигде в настройках журнала такого не нашел, и в документации к проге ничего не говорится об этом. Может уже написаны модули какие?


Можно сделать фильтр:
Код:
In = TRUE
Out = TRUE
Key = "Log headers [ALX]"
Match = "($RESP(\1) $SET(0=RESP) ($IHDR(Content-Length:\2)|) | $SET(0=ASK) ($OHDR(Referer:\2)|))"
Replace = "$ADDLST(LogHeaders,$DTM(d T)\t\0 $DTM(c)\t\u\t\1\t\2)"


К нему понадобится создать блоклист LogHeaders с файлом в нужном месте -- для этого надо добавить блоклист в меню Config -- Blockfile или вручную записать его в конфиг:

Цитата:
List.LogHeaders = "..\Lists\LogHeaders.txt"


В начало файла стоит поместить строку LOGFILE, чтобы он не загружался весь в память и не закрывался после каждой записи (правда, из-за этого может не всегда быть весь виден -- часть "записанной" информации может оставаться в буфере Винды, пока Прокс работает).
К началу Профиль Сообщение
bold666
Newbee
Newbee


Зарегистрирован: 07.05.2009
Сообщения: 11

СообщениеДобавлено: Чт, Май 07 2009 18:10 Цитировать |  |  | 

благодарю, работает примерно так как нужно :)
К началу Профиль Сообщение
Показать сообщения:      
 
Новая тема  Ответить

 Перейти:   




Следующая тема
Предыдущая тема
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


P o w e r e d b y p h p B B © p h p B B G r o u p :: T h e m e b a s e d o n FI T h e m e :: Часовой пояс: GMT + 3