Реклама на сайте Advertise with us

Проверка страницы на скролинг

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

https://views.biz/

С нами с 06.10.08
Сообщения: 1560
Рейтинг: 1601


Передовик Master-X (16.10.2015) Передовик Master-X (01.01.2016) Передовик Master-X (16.01.2016)
Ссылка на сообщениеДобавлено: 27/04/10 в 19:12       Ответить с цитатойцитата 

Возможно ли проверить скролилась ли при посещении страница или нет? Может кто-то видел что-нибудь подобное готовое.

0
 



С нами с 13.08.08
Сообщения: 1538
Рейтинг: 1011

Ссылка на сообщениеДобавлено: 27/04/10 в 19:34       Ответить с цитатойцитата 

Повеситься на onscroll.

3
 



С нами с 13.08.08
Сообщения: 1538
Рейтинг: 1011

Ссылка на сообщениеДобавлено: 27/04/10 в 19:43       Ответить с цитатойцитата 

Тупой пример на коленке на Prototype:

Код:

<html>
<head>
  <script type="text/javascript" src="http://prototypejs.org/assets/2010/4/1/prototype.js"></script>
  <script type="text/javascript">
  Event.observe(window, 'scroll', function(event) {
   alert('You scrolled me!');
  });
  </script>
</head>
<body>
  <p>scroll me</p>
  <p>scroll me</p>
  <p>scroll me</p>
...куча контента...
</body>
</html>

3
 

https://views.biz/

С нами с 06.10.08
Сообщения: 1560
Рейтинг: 1601


Передовик Master-X (16.10.2015) Передовик Master-X (01.01.2016) Передовик Master-X (16.01.2016)
Ссылка на сообщениеДобавлено: 27/04/10 в 23:25       Ответить с цитатойцитата 

remorhaz: Спасибо, то что нужно smail54.gif

0
 



С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134

Ссылка на сообщениеДобавлено: 28/04/10 в 01:07       Ответить с цитатойцитата 

можно на чистом javascript

Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <script type="text/javascript">
//<![CDATA[
    function WhileScroll() {
    alert("i'm scrolled!");
    /**
    Здесь что то делаем...
    */
    }

    function MouseScroll(event) {
    if (!event) event = window.event;
    (event.wheelDelta || event.detail) && (WhileScroll());
    }

    function init() {
    if (window.addEventListener) window.addEventListener('DOMMouseScroll', MouseScroll, false);
    window.onmousewheel = document.onmousewheel = MouseScroll;
    }
    (function (){init();}());
    //]]>
    </script>

    <title>Scroll Handler</title>
    <style type="text/css">
/*<![CDATA[*/
    div.c1 {width: 100%; height: 2000px;}
    /*]]>*/
    </style>
</head>

<body>
    <div class="c1">
        <span>Some content</span>
    </div>
</body>
</html>

3
 

https://views.biz/

С нами с 06.10.08
Сообщения: 1560
Рейтинг: 1601


Передовик Master-X (16.10.2015) Передовик Master-X (01.01.2016) Передовик Master-X (16.01.2016)
Ссылка на сообщениеДобавлено: 28/04/10 в 02:09       Ответить с цитатойцитата 

freeek: Спасибо и в репу smail54.gif А вот если такую проверку делать на сидже для каждого уника как будут обстоять дела с нагрузкой на сервер? не загнется?

0
 



С нами с 01.03.07
Сообщения: 304
Рейтинг: 223

Ссылка на сообщениеДобавлено: 28/04/10 в 08:06       Ответить с цитатойцитата 

так это же на стороне юзера чекается , если вызываешь скрипт который просто пишет параметры то нормально должен отрабатывать

3
 

https://views.biz/

С нами с 06.10.08
Сообщения: 1560
Рейтинг: 1601


Передовик Master-X (16.10.2015) Передовик Master-X (01.01.2016) Передовик Master-X (16.01.2016)
Ссылка на сообщениеДобавлено: 28/04/10 в 20:03       Ответить с цитатойцитата 

leroy_17: Точно, натупил я немного. А как эти данные на сервер передать?

0
 



С нами с 16.02.07
Сообщения: 15
Рейтинг: 21

Ссылка на сообщениеДобавлено: 28/04/10 в 20:46       Ответить с цитатойцитата 

San_Tehnik писал:
leroy_17: Точно, натупил я немного. А как эти данные на сервер передать?

Можно с помощью AJAX, только не увлекаться, чтобы не слалось слишком много данных (не часто). Скорее всего, привязать отправку к событию onMouseUp.
Простая легковесная библиотека - xajax, очень удобно.

AH

3
 



С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134

Ссылка на сообщениеДобавлено: 28/04/10 в 20:47       Ответить с цитатойцитата 

наверное через ajax

3
 

Мотиватор :)

С нами с 06.05.09
Сообщения: 3028
Рейтинг: 607

Ссылка на сообщениеДобавлено: 28/04/10 в 21:29       Ответить с цитатойцитата 

NetSpider писал:

Можно с помощью AJAX, только не увлекаться, чтобы не слалось слишком много данных (не часто). Скорее всего, привязать отправку к событию onMouseUp.


так всё равно ж будет передавать кучу событий, а нам ведь нужно только одно? хотя, это тоже просто:

Код:

<script type="text/javascript>
var scrolled=0;
function onScroll()
{
    if (scrolled==0)
    {
        scrolled=1;
        call_my_ajax_function();
    }
}
</script>


NetSpider писал:

Простая легковесная библиотека - xajax, очень удобно.


странные какие-то у тебя понятия о легковесности smail101.gif

Just a signature.

3
 

Чингачгук, вождь красноглазых

С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824

Ссылка на сообщениеДобавлено: 28/04/10 в 21:44       Ответить с цитатойцитата 

jquery все ж лучше будет, имхо, да и стандартнее чуток

3
 

Мотиватор :)

С нами с 06.05.09
Сообщения: 3028
Рейтинг: 607

Ссылка на сообщениеДобавлено: 28/04/10 в 21:59       Ответить с цитатойцитата 

Вот тебе готовый работающий пример:

index.html (страница, которая посылает событие onscroll php-скрипту, 1 раз независимо от того сколько её таскали туда-сюда):

Код:

<html>
<head>
<title>My page</title>
<script type="text/javascript" src="JsHttpRequest.js"></script>
</head>
<body onscroll="onScroll()">
<input type="hidden" id="scrolled" value="0" />
<script type="text/javascript">
function update_my_php_script()
{
    var req = new JsHttpRequest();
    req.onreadystatechange = function()
    {
        if (req.readyState == 4)
        {
            document.getElementById('debug').innerHTML = req.responseText;
        }
    }
    req.open('GET', 'my_php_script.php', true);
    req.send( { 'url': window.location } );
}

function onScroll()
{
    if (document.getElementById('scrolled').value=="0")
    {
        document.getElementById('scrolled').value="1";
        update_my_php_script();
    }
}
</script>

<div id="debug" style="padding:10px; border:1px dashed red; background-color:lightyellow"></div>

<!--
Здесь много-много контента, чтобы было, собственно, что скроллить =)
-->

</body>
</html>


а это собственно, my_php_script.php скрипт, который делает что-то, когда страницу скроллили, ему в $_GET[url] передаётся адрес страницы, которую скроллили:

Код:

<?php
require_once "JsHttpRequest.php";
$JsHttpRequest =& new JsHttpRequest("utf-8");

$url = $_GET['url'];
echo "the page {$url} was scrolled!";
?>


для этой всей байды использовалась библиотека JsHTTPRequest Дмитрия Котерова (dklab, denwer), всего 2 файла общим объёмом 38кб (без компрессии, с компрессией меньше 20): http://www.dklab.ru/lib/JsHttpRequest/

почему именно эта библиотека? я в своё время перелопатил много чего разного (jQuery, prototype), но ничего компактнее и проще в использовании не нашёл.

Just a signature.

3
 



С нами с 16.02.07
Сообщения: 15
Рейтинг: 21

Ссылка на сообщениеДобавлено: 29/04/10 в 00:39       Ответить с цитатойцитата 

alex.raven писал:
Вот тебе готовый работающий пример:
...
для этой всей байды использовалась библиотека JsHTTPRequest Дмитрия Котерова (dklab, denwer)


JsHTTPRequest - согласен, забыл за нее. =)
xajax использовал потому что она самая простая, по крайней мере раньше была, сейчас ее немного переделали.

Код:
if(document.getElementById('scrolled').value=="0")


а чем плоха 1 булева переменная?
Код:
<script type="text/javascript">
var ScrollReported = false;
function update_my_php_script()
...
if (!ScrollReported)
...
update_my_php_script();
ScrollReported = !ScrollReported;
// или ScrollReported = true;

AH

3
 

Мотиватор :)

С нами с 06.05.09
Сообщения: 3028
Рейтинг: 607

Ссылка на сообщениеДобавлено: 29/04/10 в 00:54       Ответить с цитатойцитата 

NetSpider писал:

а чем плоха 1 булева переменная?


не знаю, где-то протупил, не работало у меня, т.е присваиваю глобальной переменной внутри функции 1, а в результате она всё равно 0 icon_smile.gif

Just a signature.

3
 

programmer

С нами с 08.12.02
Сообщения: 7615
Рейтинг: 5760

Ссылка на сообщениеДобавлено: 29/04/10 в 02:57       Ответить с цитатойцитата 

>почему именно эта библиотека? я в своё время перелопатил много чего разного (jQuery, prototype), но ничего компактнее и проще в использовании не нашёл.
Оффтопик: забавно, единственный плюс ее для меня это грузить файло без флеша и айфреймов, в остальном довольно громоздка

крипта на ByBit

3
 



С нами с 13.08.08
Сообщения: 1538
Рейтинг: 1011

Ссылка на сообщениеДобавлено: 29/04/10 в 21:12       Ответить с цитатойцитата 

ТС, а тебе для чего данные-то передавать, для статистики? Просто, если с GoogleAnalytics работаешь, то там можно прямо через его API данные о скроллинге в статистику добавлять, не мудрствуя лукаво.

3
 



С нами с 07.12.99
Сообщения: 1484
Рейтинг: 483

Ссылка на сообщениеДобавлено: 29/04/10 в 21:25       Ответить с цитатойцитата 



если для статсов, то очень полезная штука clicktale.com
узнаешь много нового

CuckoldCash - NEW!!! ShockingCash XP HuntersCash - VOYEUR
Бонусные инвайты в асе.

3
 

https://views.biz/

С нами с 06.10.08
Сообщения: 1560
Рейтинг: 1601


Передовик Master-X (16.10.2015) Передовик Master-X (01.01.2016) Передовик Master-X (16.01.2016)
Ссылка на сообщениеДобавлено: 29/04/10 в 22:15       Ответить с цитатойцитата 

remorhaz: Хочется подобную проверку сделать для своих трейдеров. По идее, если скрола страницы небыло, но были клики по тумбам, которые без скролинга не увидеть, то по идее это бот. Вот только, если боты и такой вариант эмулируют, то не имеет смысла все это закручивать.

0
 



С нами с 13.08.08
Сообщения: 1538
Рейтинг: 1011

Ссылка на сообщениеДобавлено: 29/04/10 в 23:51       Ответить с цитатойцитата 

Эмулировать это не проблема, но, думаю, многие боты на этом заморачиваться не будут. Это ж нужно еще догадаться, что у тебя такая проверка происходит. Но внимательный человек догадается, конечно же.

3
 



С нами с 13.08.08
Сообщения: 1538
Рейтинг: 1011

Ссылка на сообщениеДобавлено: 29/04/10 в 23:56       Ответить с цитатойцитата 

Достаточно в общем-то отследить HTTP-поток при помощи, например, Tamper Data - и сразу будет видно, что идут лишние обращения к серверу. Так что это в общем так, от дурачка защита.

3
 

https://views.biz/

С нами с 06.10.08
Сообщения: 1560
Рейтинг: 1601


Передовик Master-X (16.10.2015) Передовик Master-X (01.01.2016) Передовик Master-X (16.01.2016)
Ссылка на сообщениеДобавлено: 01/05/10 в 06:15       Ответить с цитатойцитата 

Действительно, может метод далеко и не лучший, но если боты до сих пор и по скрытым ссылкам кликают и тд. То может худо бедно и поможет такой вариант. Может кто-нибудь разовьет идею дальше?

0
 



С нами с 16.02.07
Сообщения: 15
Рейтинг: 21

Ссылка на сообщениеДобавлено: 01/05/10 в 09:57       Ответить с цитатойцитата 

Где-то читал, что боты не умеют эмулировать событие OnMouseMove, правда/нет - не знаю. Можно и его фиксировать и анализировать статистику.

3
 

Мотиватор :)

С нами с 06.05.09
Сообщения: 3028
Рейтинг: 607

Ссылка на сообщениеДобавлено: 01/05/10 в 15:55       Ответить с цитатойцитата 

Вообще-то, боту нет необходимости скроллить страницу, чтобы добраться до тумбы, которая без прокрутки не видна - т.к бот получает сразу всю страницу, и соответственно, может имитировать клики по любым. В таком случае надо вешать проверку и onscroll и onclick, чтобы проверять что это были клики именно из браузера, а не имитация скриптом.

Just a signature.

3
 



С нами с 19.05.08
Сообщения: 1894
Рейтинг: 3625


Передовик Master-X (16.06.2010) Передовик Master-X (01.07.2010) Передовик Master-X (16.07.2010) Передовик Master-X (16.05.2011) Передовик Master-X (01.07.2012) Ветеран трепа Master-X (16.07.2012)
Ссылка на сообщениеДобавлено: 01/05/10 в 17:30       Ответить с цитатойцитата 

alex.raven: Скажу честно идея хороша и стремление правильное. Но есть пару но: лично я знаю 2 способа как превратить обычный браузер в бота и все события будут и всё остальное. И эти способы никакое не читерство, а просто средства автоматизации действий. А от простых ботов достаточно следующих проверок:
- линки скрытые (впрочем как и невидимые тумбы с линками)
- поддержка JS
- прогрузка всего контента полностью
А развивая твою идею тебе необходима следующая инфа на сервере чтобы сказать что это был бот:
- страница на которой был произведён клик.
- номер тумбы по которой был произведён клик(судя по всему ajax запрос придёться слать по каждому клику что может добавить тормозов юзеру)
- высота клиентской области юзера
- была ли страница проскролена
- желательно бы ещё писать User-Agent
Зная все эти параметры можно почти со стопроцентной вероятностью найти не слишком умного бота. Но возникают проблемы такие: В некоторых браузерах этот скрипт может например не работать или работать не правильно. первое что приходит на ум это например мобильные устройства или экзотика какая-нить ещё.

В общем дерзай. Если какая-то помощь техническая понадобиться стучи.

(!)Внимание Ero Advertising дополнительный Еврики от продажи рекламы. Особенно попандеров и мобилок.

3
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »