Главная
Форум
Контакты
Купить
Поддержи проект
Поиск
Искать:
Расширенный поиск
[Закрыть]
Правила форума
Войти
Регистрация
Russian
English
HandyCache форум
Главная категория
»
Дополнения, плагины
»
Блокировать внешние ссылки (R-ext) - расширение HC
Имя пользователя:
1 час
1 день
1 неделя
1 месяц
Навсегда
Пароль:
Страниц:
1
[
2
]
3
Все
Вниз
« предыдущая тема
следующая тема »
Отправить эту тему
Печать
Автор
Тема: Блокировать внешние ссылки (R-ext) - расширение HC (Прочитано 47004 раз)
0 Пользователей и 1 Гость смотрят эту тему.
flash
Пользователь
Репутация: +1/-0
Offline
Сообщений: 74
Re: Блокировать внешние ссылки (R-ext) - расширение HC
«
Ответ #20 :
06 июня 2011, 16:40:15 »
Ну с PS можно согласиться наверное, тут важно не столько порнуха сколько понимание ваше как программиста(думаю если вы пишите книги то вы себя таковым счетаете) того, что под свои нужды все равно приходится в итоге самому писать, к тому же вы про фокса тут пишете, а ведь не факт что завтра на нем сидеть будете. Лучше уж сделать универсальный модуль (допустим под handycache). Я вот, к слову, тоже софтинки небольшие пишу, в связи с этим решил изучить вопрос и делать аддоны самостоятельно. Чему же нас тогда учили?
Сообщить модератору
Записан
Dan Claimant
Новичок
Репутация: +0/-0
Offline
Сообщений: 16
Re: Блокировать внешние ссылки (R-ext) - расширение HC
«
Ответ #21 :
09 июля 2012, 13:40:36 »
Подскажите, пожалуйста, есть ли возможность настроить R-ext чтобы он блокировал внешние ссылки только на определённых доменах?
Например, вписываешь mail.ru и все картинки с внешних сайтов блокируются.
Интересует вариант блокировки только на определённых сайтах, чтобы на всех остальных открывалось без проблем.
Спасибо заранее за ответ.
«
Последнее редактирование: 09 июля 2012, 13:45:45 от Dan Claimant
»
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Блокировать внешние ссылки (R-ext) - расширение HC
«
Ответ #22 :
09 июля 2012, 20:31:22 »
Возможность блокировать внешние ссылки только на определенных сайтах есть.
Надо в настройках расширения в поле "
Исключения для рефереров (сайтов)...
" добавить только одну строку вида:
^http://(?![^/]*mail\.ru)
Вместо mail\.ru можно записать группу сайтов в таком формате:
^http://(?![^/]*(mail\.ru|yandex\.net|site\.com))
Но не забудьте, такая строка должна быть только одна в поле исключений.
Сообщить модератору
Записан
Dan Claimant
Новичок
Репутация: +0/-0
Offline
Сообщений: 16
Re: Блокировать внешние ссылки (R-ext) - расширение HC
«
Ответ #23 :
09 июля 2012, 22:15:20 »
Спасибо огромное, весьма эффективно =)
Сообщить модератору
Записан
olDjeka
Постоялец
Репутация: +6/-0
Offline
Сообщений: 117
Re: Блокировать внешние ссылки (R-ext) - расширение HC
«
Ответ #24 :
20 ноября 2012, 15:51:01 »
Цитата: DenZzz от 04 ноября 2009, 16:13:10
[ + ] Опция: Учитывать при блокировании активность "Черного списка" и правила "Белого списка" HC'.
Желательно добавить и список "Переадресации".
Пока заменил
@event
с
RequestHeaderReceived
на
BeforeRequestHeaderSend
,
а то посылает на
httр://www.securitylab.ru.css.1c-bitrix-cdn.ru/bitrix/js/main/core/css/core.css
хотя, как и раньше, файл есть и по адресу
httр://www.securitylab.ru/bitrix/js/main/core/css/core.css
«
Последнее редактирование: 20 ноября 2012, 16:35:16 от olDjeka
»
Сообщить модератору
Записан
Terfe
Постоялец
Репутация: +4/-1
Offline
Сообщений: 126
Re: Блокировать внешние ссылки (R-ext) - расширение HC
«
Ответ #25 :
08 января 2013, 14:41:47 »
Такая проблема. На сайтах выкладывают рисунки, которые находятся на сторонних ресурсах (как правило это спец. хостинги), R-ext их естественно не пропускает. Проблема состоит в том, что браузер на месте не-загруженного рисунка абсолютно ничего не показывает - как будто там и нет ничего. Как мне доработать расширение (или может кто-то добавить такую функцию?), чтоб R-ext при блокировке рисунка возвращал браузеру некий файл? Как это например сделано в самом НС в "Черном списке".
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Блокировать внешние ссылки (R-ext) - расширение HC
«
Ответ #26 :
08 января 2013, 21:43:55 »
Цитата: Terfe от 08 января 2013, 14:41:47
Как мне доработать расширение (или может кто-то добавить такую функцию?), чтоб R-ext при блокировке рисунка возвращал браузеру некий файл? Как это например сделано в самом НС в "Черном списке".
Дорабатывать ничего не надо. При блокировке R-ext использует функционал "Черного списка", т.е. браузеру передается файл, прописанный в настройках "Черного списка".
Сообщить модератору
Записан
Terfe
Постоялец
Репутация: +4/-1
Offline
Сообщений: 126
Re: Блокировать внешние ссылки (R-ext) - расширение HC
«
Ответ #27 :
08 января 2013, 21:54:45 »
Цитата: DenZzz от 08 января 2013, 21:43:55
Дорабатывать ничего не надо. При блокировке R-ext использует функционал "Черного списка", т.е. браузеру передается файл, прописанный в настройках "Черного списка".
А как указать другой файл?
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Блокировать внешние ссылки (R-ext) - расширение HC
«
Ответ #28 :
08 января 2013, 22:15:15 »
В функции Stop() вместо переменной hc.action можно использовать hc.answer_header и hc.answer_body.
Сообщить модератору
Записан
Terfe
Постоялец
Репутация: +4/-1
Offline
Сообщений: 126
Re: Блокировать внешние ссылки (R-ext) - расширение HC
«
Ответ #29 :
09 января 2013, 14:43:29 »
Спасибо. Будем разбираться. Но если вы будете развивать расширение - добавьте пожалуйста такую фичу: что если ссылка соответствует регулярному выражению (например рисунки, видео-вставки), то браузеру возвращается определенный файл. А то ведь в черном списке обычно стоит прозрачная "заглушка", и в случае если попадается рисунок на стороннем ресурсе - пользователь думает что на странице ничего нет.
А в чем вы пишите расширения?
«
Последнее редактирование: 09 января 2013, 15:08:04 от Terfe
»
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Блокировать внешние ссылки (R-ext) - расширение HC
«
Ответ #30 :
09 января 2013, 15:54:45 »
Цитата: Terfe от 09 января 2013, 14:43:29
А то ведь в черном списке обычно стоит прозрачная "заглушка", и в случае если попадается рисунок на стороннем ресурсе - пользователь думает что на странице ничего нет.
Не вижу принципиальной разницы между картинкой, заблокированной "Черным списком" или расширением R-ext. И там, и там бывают ложные срабатывания. В мониторе HC можно посмотреть, что конкретно сработало. Если существует опасность пропустить что-то очень важное, то вероятно не стоит использовать "прозрачные заглушки" или нужно занести это важное в "Белый список" или в исключения расширения R-ext.
Цитировать
А в чем вы пишите расширения?
В LuaTest.exe из комплекта HC.
Сообщить модератору
Записан
olDjeka
Постоялец
Репутация: +6/-0
Offline
Сообщений: 117
Re: Блокировать внешние ссылки (R-ext) - расширение HC
«
Ответ #31 :
06 февраля 2013, 00:01:08 »
Не стал создавать новую тему, надеюсь автор не против.
Представленный ниже вариант расширения позволяет вместо заблокированного ресурса показывать
заданный (в данном случае картинку
R-ext-FF.png
из папки HC
).
Также, пользователи FF v3.6.28 могут раскомментировать строку
Код:
--
if re.find(hc.request_header, [[^Accept: text/html,]]) then return end
Это позволит снять в расширении галочку ограничения времени блокирования. По данной опции пока мало статистики, но та что имеется положительна.
Опция основана на том, что в случае запроса ссылки пользователем (клик, адресная строка), заголовок запроса в строке
Accept
содержит "
text/html
...",
почти
во всех других случаях значение было другое (
запрос или не имел рефера, или был с того же хоста
).
Вероятно другие версии FF и другие браузеры имеют подходящий функционал. Желающие могут проверить и внести нужные коррективы.
Проверялся ещё IE8. Тоже посылает разные строки, но при обновлении страницы - всем одинаковые.
Внесённые в расширение изменения отмечены
[
+
]
eR_Block_external_links-ff.lua
(20.27 Кб - загружено 124 раз.)
R-ext-FF.png
(0.21 Кб, 62x20 - просмотрено 339 раз.)
Сообщить модератору
Записан
olDjeka
Постоялец
Репутация: +6/-0
Offline
Сообщений: 117
Re: Блокировать внешние ссылки (R-ext) - расширение HC
«
Ответ #32 :
06 февраля 2013, 15:21:06 »
Для работы расширения с доменами в puny-коде заменил в
function
GetHost(s)
строку
Код:
s = re.find(s, [[^http://([^/]+\.)?([^/.]+)(\.\w+)(:\d+)?/]])
на
Код:
-- Меняем \w на [^/] для работы с доменами в puny-коде [+]
s = re.find(s, [[^http://([^/]+\.)?([^/.]+)(\.[^/]+)(:\d+)?/]])
Включение в HC опции для декодирования puny-кода меняет
hc.url
Для обхода проблемы использовал Url из заголовка запроса, заменив строки
Код:
-- Выделяем из ссылок домены 2-го уровня
local ref_host = GetHost(ref)
local url_host = GetHost(UnifyURL(hc.url))
на
Код:
-- Выделяем Url из заголовка запроса [+]
local function GetUrl(s)
s = re.find(s, [[^GET *(\S+)]], 1)
if s then s = string.lower(s) end
return s
end
-- Забираем Url из заголовка запроса [+]
local url = UnifyURL(GetUrl(hc.request_header))
-- Выделяем из ссылок домены 2-го уровня
local ref_host = GetHost(ref)
--
local url_host = GetHost(UnifyURL(hc.url)) -- "Отключаем" данную строку,
local url_host = GetHost(url)
-- взамен "подключаем" эту [+]
! После замены в списках исключений для национальных доменов следует использовать:
для Url - язык локали (httр://кто.ты/)
для реферов - puny-код (httр://xn--j1ail.xn--r1as/)
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Блокировать внешние ссылки (R-ext) - расширение HC
«
Ответ #33 :
06 февраля 2013, 15:58:37 »
olDjeka
А смысл лезть в национальные домены? Я не стал этого делать, потому что на этих сайтах куча внутренних элементов подгружается с их латинских зеркал. Естественно, R-ext их все заблокирует, потому что домены не совпадают. Придется все национальные домены забивать в исключения.
Для примера, зайди на президент.рф и посмотри в мониторе HC, откуда там грузятся внутренние элементы. Они грузятся с kremlin.ru . Домены не совпадают, R-ext их все заблокирует!
Только исходя из этого, я не стал править R-ext для работы с кириллическими доменами.
Цитировать
! После замены в списках исключений для национальных доменов следует использовать:
для Url - язык локали (httр://кто.ты/)
для реферов - puny-код (httр://xn--j1ail.xn--r1as/)
Тогда уж и рефереры бы на локаль перевел, это просто сделать...
Сообщить модератору
Записан
olDjeka
Постоялец
Репутация: +6/-0
Offline
Сообщений: 117
Re: Блокировать внешние ссылки (R-ext) - расширение HC
«
Ответ #34 :
06 февраля 2013, 17:51:14 »
Цитировать
зайди на президент.рф
Как раз туда и заходил когда заметил
Поскольку сейчас "бум" нацдоменов госструктур, а им на пятки наступают рекламщики и иже с ними, то
по мне так лучше один раз загрузить в кеш (без добавления в исключения) и забыть (как и сделал с вышеупомянутым).
Цитировать
и рефереры бы на локаль перевел, это просто сделать...
Что-то не соображу куда копать
Добавлено: 06 Февраль 2013, 17:30:46
Хотя конечно неплохо бы иметь возможность включать/отключать данную опцию в настройках, но пока я в этом не очень разобрался и потому не лезу.
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Блокировать внешние ссылки (R-ext) - расширение HC
«
Ответ #35 :
06 февраля 2013, 18:39:30 »
Цитата: olDjeka от 06 февраля 2013, 17:30:46
по мне так лучше один раз загрузить в кеш (без добавления в исключения) и забыть (как и сделал с вышеупомянутым).
Это хорошо, когда таких сайтов 1-2 в день. А когда начнется реальный "бум" и десятки новых в день, будет напрягать. Да и уже закэшированные сайты могут часто менять структуру, на разных страницах могут быть разные элементы, что устанешь постоянно кэширвать их все в ручном режиме. А если у пользователя нет постоянного доступа к HC, то вообще труба...
Цитировать
Что-то не соображу куда копать
Варианта 2:
1. Для пытливых: заюзать функцию hc.recode() - она знает puny-код.
2. Для лентяев
: реферер брать из hc.monitor_parent_url, url - из hc.url и сравнивать их домены на кириллице - и там, и там они уже декодированы (при включенной в HC соответствующей опции).
Добавлено: 06 Февраль 2013, 18:12:55
Еще у тебя в скрипте логическая ошибка:
Код:
hc.answer_body = hc.last_part and '' or Data
'' и Data перепутаны местами.
И вторая ошибка: заголовок ответа HC тоже менять надо. В нем может быть прописан тип не картинка, а HTML и другого размера. Браузер может тебя не понять.
Сообщить модератору
Записан
olDjeka
Постоялец
Репутация: +6/-0
Offline
Сообщений: 117
Re: Блокировать внешние ссылки (R-ext) - расширение HC
«
Ответ #36 :
07 февраля 2013, 02:21:54 »
Цитата: olDjeka
для Url - язык локали
Забыл указать, что это при включённой опции декодирования
puny
в HC, иначе тоже в puny-коде.
Цитировать
то вообще труба
Для отключения возможности работы расширения с puny-кодом достаточно в
function GetHost(s)
заменить последний
[^/]
на
\w
(или поменять обратно указанную в посте строку).
DenZzz
, спасибо
Над ошибками бум работать :
Скорее всего пойду по лёгкому пути "модернизации инноваций", а кто не пользуется соответствующей опцией HC, тот думаю сможет добавить исключения и в puny-коде.
Поскольку не особо интересовался
puny
, то с трудом понял что перед
recode
надо ещё парсить строку
httр://
кто
.
ты
/
httр://xn--
j1ail
.xn--
r1as
/
При использовании
hc.monitor_parent_url
большaя часть работы может делаться самим HC, зачем дважды делать одно и тоже.
Цитировать
Браузер может тебя не понять
Тоже сомневаюсь в верности моего решения. Пока никаких сбоев не заметил, но все браузеры разные.
«
Последнее редактирование: 07 февраля 2013, 02:35:28 от olDjeka
»
Сообщить модератору
Записан
olDjeka
Постоялец
Репутация: +6/-0
Offline
Сообщений: 117
Re: Блокировать внешние ссылки (R-ext) - расширение HC
«
Ответ #37 :
07 февраля 2013, 14:20:36 »
Цитата: DenZzz
Еще у тебя в скрипте логическая ошибка:
Код:
hc.answer_body = hc.last_part and '' or Data
'' и Data перепутаны местами.
Михаил
тоже указывал именно на такое применение, но перед вставкой в расширение посмотрел что отвечает сам HC. А он сначала отдаёт тело, а затем пустую строку, поэтому и решил использовать именно вариант используемый HC.
Сейчас проверил, работают оба варианта. Теперь совсем запутался или что-то упустил
Вот расширение которым снимал показания, а ниже его сообщения.
Код:
--[[ <HCExtension>
@name
### Temp ###
@event
RequestHeaderReceived/T001
</HCExtension> ]]
function body()
hc.put_to_log('#body\r\n'..hc.answer_body)
end
function T001()
hc.action = 'stop'
hc.call_me_for('BeforeAnswerBodySend', 'body')
end
Если в ЧС не задано "Показывать файл"
Код:
07.02.13 13:30:39,168 # 375 -=< MESSAGE FROM EXTENSION >=- D:\HandyCache\Extensions\Temp.lua
#body
<HTML><HEAD><TITLE>Blocked</TITLE></HEAD><BODY><H1>Blocked</H1>
Access to the requested URL <B>http://handycache.ru/</B> was not allowed (request script).
</BODY></HTML>
07.02.13 13:30:39,469 # 375 -=< MESSAGE FROM EXTENSION >=- D:\HandyCache\Extensions\Temp.lua
#body
Если в ЧС задано показывать файл (картинку)
* Вероятно из-за этого браузер у меня понимает что R-ext отдаёт картинку
Код:
07.02.13 13:30:57,705 # 375 -=< MESSAGE FROM EXTENSION >=- D:\HandyCache\Extensions\Temp.lua
#body
‰PNG
07.02.13 13:30:57,715 # 375 -=< MESSAGE FROM EXTENSION >=- D:\HandyCache\Extensions\Temp.lua
#body
Сообщить модератору
Записан
DenZzz
Модератор
Репутация: +179/-11
Offline
Сообщений: 5589
Re: Блокировать внешние ссылки (R-ext) - расширение HC
«
Ответ #38 :
07 февраля 2013, 14:44:47 »
Цитировать
Сейчас проверил, работают оба варианта. Теперь совсем запутался или что-то упустил
Тебе просто повезло, что в этих примерах HC отдает тело только двумя кусками. Если бы куска было 3, то ты бы послал браузеру тело картинки 2 раза.
Сообщить модератору
Записан
olDjeka
Постоялец
Репутация: +6/-0
Offline
Сообщений: 117
Re: Блокировать внешние ссылки (R-ext) - расширение HC
«
Ответ #39 :
08 февраля 2013, 18:25:45 »
Для исключения конфликтов изменены некоторые вновь введённые имена и значения.
Исправил ошибку в
hc.answer_body
.
Для избавления от второй ошибки внёс следующие изменения:
Код:
hc.call_me_for('BeforeAnswerBodySend', 'body')
заменил
Код:
-- Помечаем заблокированное вставкой своей строки в заголовок запроса [+]
hc.request_header = re.replace(hc.request_header, [[\A]], 'HandyCache/R-ext\r\n')
в начало function AnswerSend() добавил
Код:
-- Проверям отметку о блокировке, и если есть, то [+]
if re.find(hc.request_header, 'HandyCache/R-ext') then
-- изменяем заголовок ответа, с указанием типа контента
hc.answer_header = re.replace(hc.answer_header, [[.*]], 'HTTP/1.1 430 lock (R-ext)\r\nConnection: Close\r\nContent-Type: image/png\r\n\r\n')
-- задаём обработчик для подмены тела ответа
hc.call_me_for('BeforeAnswerBodySend', 'BodyExt')
end
Теперь сообщение о сработке расширения выводится в колонку "Ответ", и можно закомментировать соответствующую строку для отключения вывода сообщений в
колонку правила
.
Внёс изменения для возможности работы с доменами в puny-коде:
Код:
-- Забираем Referer из заголовков запроса
local ref = UnifyURL(GetReferer(hc.request_header))
-- Получаем Referer из строки монитора [+]
-- Для работы с доменами в puny-коде следует закомментировать
-- предидущую строку кода и расскоментировать следующую*
--
if hc.monitor_parent_url=='' then return end local ref = UnifyURL(string.lower(hc.monitor_parent_url))
-- * После этого в списках исключений для национальных доменов следует использовать
-- язык локали, если для puny-кода включена соответствующая опция HC,
-- или puny-код, если она выключена
Вставил комментарий по поводу списка переадресации.
p.s. Когда (по ошибке) дважды использовал одно событие стали вываливаться ошибки, типа
Код:
BAHS-SCRIPT "AnswerSend" ERROR:
[string "--[[ <HCExtension>..."]:194: attempt to index field 'Options' (a nil value)
и многие расширения начали чудить. Избавился презагрузкой HC.
Нет ли более гумманого способа? (некоторые соединения разрывать нежелательно)
eR_Block_external_links-ff.lua
(21.81 Кб - загружено 115 раз.)
«
Последнее редактирование: 08 февраля 2013, 18:34:08 от olDjeka
»
Сообщить модератору
Записан
Страниц:
1
[
2
]
3
Все
Вверх
Отправить эту тему
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Главная категория
-----------------------------
=> Общие вопросы
=> Новые предложения
=> Дополнения, плагины
=> Сжатие трафика
=> English forum
=> Indonesian forum
-----------------------------
Гостевая
-----------------------------
=> Гостевая
-----------------------------
Дела домашние
-----------------------------
=> Сайт и форум HandyCache
=> Курилка
© 2006-2014 HandyCache Team. Все права защищены.
Загружается...