Как реализовать полную проверку на установку баннера? Чтоб не поставили в скрытый div

12
Progr@mmer\.
На сайте с 14.10.2007
Offline
44
994

Есть сайт, на нём будет предлагаться поставить кнопку (баннер) участника проекта. Нужно реализовать проверку на установку кода на странице. Понятно, что регуляркой/строковой функцией это можно сделать, но вот как проверить не стоит ли эта кнопка в скрытом div'e или вообще не закомментирована ли она? Проверять всё руками очень накладно, нужно автоматизировать процесс.

У кого-нибудь есть идеи?

Вашей девушке не хватает романтики? Черпните её на сайте «Я Люблю Романтику» (http://iloveromantics.ru/). Романтический форум (http://forum.iloveromantics.ru/) для отдыха от нудной работы.
dkameleon
На сайте с 09.12.2005
Offline
386
#1
Progr@mmer.:
Проверять всё руками очень накладно, нужно автоматизировать процесс.

У кого-нибудь есть идеи?

написать свой рендеринговый движок :)))

так как даже абсолютное позиционирование и видимость блока зависит от стиля отображения родительского блока.

А после рендеринга уже проверять координаты баннера на экране, видимость и т.п.

Дизайн интерьера (http://balabukha.com/)
D
На сайте с 16.02.2008
Offline
11
#2

Автоматизировано это невозможно , а то не было бы сейчас такого понятия как дорвей -)

[Удален]
#3

Progr@mmer., как реализован поиск на странице в мозиле? если текст скрыт, то фраза не найдена

Progr@mmer\.
На сайте с 14.10.2007
Offline
44
#4
dkameleon:
рендеринговый движок

Можно поподробнее про это?

burunduk:
Progr@mmer., как реализован поиск на странице в мозиле?

Предлагайте рыть сорцы к мозилле? :)))

[Удален]
#5
Progr@mmer.:
Предлагайте рыть сорцы к мозилле?

ну если есть готовое решение то почему нет?

обратиться программно к мозиле и использовать ее функции я думаю можно

Progr@mmer\.
На сайте с 14.10.2007
Offline
44
#6

burunduk, неет, я не хочу мучать дизассемблеры в поиске решения, которое не реализовать на PHP || Perl :)

[Удален]
#7

используй дом модель браузера ие/лису ну и http://ru2.php.net/com в помощь :)

попробуй создать браузер и выполнить над ним javascript в котором проверишь все :)

всякие там

style.display .. и координаты, ну и вообще посоветовал бы реализовать на .net, ибо там уже есть компонент веббраузер, который может вызывать ява скрипты и тп :)

bearman добавил 05.06.2008 в 03:03

ну либо писать свой рендерный движок =))

посмотри на мс, у них уже 8ая версия такого движка, и все еще не может определять скрыт банер или нет :-D

Коля Дубр
На сайте с 02.03.2005
Offline
153
#8

Progr@mmer., а че тут думать-то? :)

Нафига грузить свой сервак рендерилкой, если куча пользователей уже любезно установили себе разные хорошие браузеры? Давайте используем их мощности :)

Выдаете примерно такой код:


<script type="text/javascript">
document.write('<img src="http://bn.com/banner.php?params..." id="bn_banner" />');
window.onload = function () {
var i_banner = document.getElementById('bn_banner');
try {
var l = 0, t = 0, n = i_banner;
while (n) l += n.offsetLeft, t += n.offsetTop, n = n.offsetParent; // получаем координаты картинки
var v = l > 0 && t > 0 && i_banner.clientHeight > 0 && i_banner.clientWidth > 0 ? 1 : 0;
}catch (e) {
var v = 0; // картинка не нашлась
}
i_counter.src = 'http://bn.com/counter.php?h=' + document.location.host + '&v=' + v; // отправляем результат на сервер
}
</script>

Т.е. подгружаете еще одну картинку (1*1 пиксел), передавая на сервер данные о размере и позиции банера. Надежное кроссбраузерное решение - ищите сами, думаю, если подолбиться полдня, оно-таки найдется. Код можно разбавить всяким мусором, маскируя под настоящий счетчик (ну там, инфа о разрешении и глубине цвета, реферер и т.д.), дабы скрыть свои истинные намерения.

Далее, серверным скриптом counter.php собираем статистику по хостам, откуда приходит нолик, и в случае необходимости смотрим вручную. Кроме того, надо бы с сервера иногда проверять наличие и корректность самого кода-проверяльщика. Его, кстати, можно подгружать и со своего сервера (если конечно веб-мастера не побоятся - я бы побоялся).

В принципе это все можно обойти - при желании и работающей голове. Например, заслонить банер каким-нибудь абсолютно спозиционированным блоком. Позиционирование других эл-тов относительно банера (и их z-index) тоже можно проверять скриптом, но код разрастется.

Если решите делать - поделитесь результатом, интересно.

Разрабатываю общую шину (http://habrahabr.ru/company/floxim/blog/268467/) помаленьку. ...а еще у меня есть бложек (http://www.blogovo.ru/).
edogs software
На сайте с 15.12.2005
Offline
775
#9
Progr@mmer\.:
Есть сайт, на нём будет предлагаться поставить кнопку (баннер) участника проекта. Нужно реализовать проверку на установку кода на странице. Понятно, что регуляркой/строковой функцией это можно сделать, но вот как проверить не стоит ли эта кнопка в скрытом div'e или вообще не закомментирована ли она? Проверять всё руками очень накладно, нужно автоматизировать процесс.

У кого-нибудь есть идеи?

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

Скачиваем страницу, после этого берем обычную скриншотоделалку (для виндов полно хороших, для юникса тоже есть гиморные) и делаем скрин страницы. После этого выдираем из хтмл страницы код баннера (или заменяем его на что-нибудь) и делаем второй скрин уже со страницы без баннера. Вычитаем одно из другого, смотрим на остаток (по размеру "пятна" или по точному соответствию нашему баннеру или еще что-нибудь в таком роде). До кучи можно и позиционирование кнопки (вверху страницы, внизу страницы, etc) отслеживать. Это что касается физической видимости.

С кликабельностью кнопки имхо частично можно через dom разобраться, благо в php нынче вполне душевная поддержка оного.

P.S.: На чистом php это по любому садомазо и не рационально ни разу.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
Коля Дубр
На сайте с 02.03.2005
Offline
153
#10

edogs, а на мой вкус интеллектуальная работа (фактически, поиск) с графикой - жуткий гемор. "Пятно" - вообще не вариант: отсутствие банера может (и должно) рвать верстку. К тому же мало ли какие еще эл-ты могут меняться динамически? Да хоть другие банеры. Значит, надо все файлы выкачивать... По точному вхождению - хороший вариант, надежный. Но медленный.

И все-таки я бы сначала поработал с вариантом на JS. Он ощутимо проще, и обладает некоторыми преимуществами.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий