Forum Webscript.Ru
Программирование => PHP => Тема начата: Сергей Иванов от 27 Июня 2006, 10:52:40
-
Столкнулся я с проблемой, что на мой счётчик (лежит domen.ru/counter.php и обращение к нему идёт через JS счётчик со страниц сайта через
) конкуренты отправляют много-много левых сообщений, портят мне тем самым статистику. Посоветуйте, какую защиту можно прописать в скрипте. Я думал защитить по ипу сайта, но ведь у каждого посетителя в скрипт передаётся ип посетителя, а не ип сайта. рефа тоже не подходит - какая разница откуда пришёл. в общем как блин определить со страницы обращение на счётчик или это конкурент с**а, посмотрел синтаксис обращения к счётчику и обращается напрямую!!!! блин, второй день злость кипит.
-
Сергей Иванов
Сергей Иванов:
не ип сайта
Ни малейшего отличия. Реф-спамеры точно так же имеют свой IP.
-
CGVictor:
Ни малейшего отличия. Реф-спамеры точно так же имеют свой IP.
то есть составляем блэк лист и вперёд, да? %( это для меня так сказать запасной вариант... он вообще для всех запасной :)
а может кто-нибудь знает какоё-нибудь интересное свойство работы
на котором можно "сыграть", т.е. определить со страницы моегосайта на счётчик обращение или просто из командной строки (или из спаммерной машины)?
-
Сергей Иванов
Проверять наличие всех полей в запросе. User-agent, например, или Accept. Понятно, что можно сформировать запрос, полностью идентичный натуральному - но некоторые этим не заморачиваются, их можно отсечь.
Можно написать для блек-листа авто-филл: если встречается в рефе что-то нехорошее - банить сразу.
Можно еще что-то такое сообразить..
mod_rewrite
RewriteCond %{HTTP_REFERER} (weight) [NC,OR]
RewriteCond %{HTTP_REFERER} (drugs) [NC,OR]
RewriteCond %{HTTP_REFERER} (porn) [NC]
RewriteRule .* - [F]
-
CGVictor:
mod_rewrite
RewriteCond %{HTTP_REFERER} (weight) [NC,OR]
RewriteCond %{HTTP_REFERER} (drugs) [NC,OR]
RewriteCond %{HTTP_REFERER} (porn) [NC]
RewriteRule .* - [F]
Виктор, я конечно сорри и всё такое, но я честно сказать не очень "вкурил" на каком это языке. если это на пхп, то блин, что-то сверхновое для меня. может это пхп7 :)
а про философию, я так понял предлагаешь, что-то типа:
if(isset($HTTP_USER_AGENT) && isset($HTTP_ACCEPT))
if(strlen($HTTP_USER_AGENT) && strlen($HTTP_ACCEPT))
{
поехали писать хвост юзера....
}
правильно понял твою идею?
-
может какие-нибудь идеи есть насчёт комбинации времени и разности IP
или например одному IP\'у запретить посещать больше 30 страниц в день...
может ещё идейки будут?....
-
Сергей Иванов
Сергей Иванов:запретить посещать больше 30 страниц
Ерунда
Сергей Иванов:
может это пхп7
Это инструкции mod_rewrite в конфиге Apache. Написано "если в Referer есть указанные слова (перебор слов) - выдать 403 и прекратить обработку".
Сергей Иванов:
что-то типа
Можно и так. А вообще - в поиск по форуму, несколько раз уже на моей памяти обсуждали (правда, всё больше по накруткам..один х).
Если спамеру уж очень сильно захочется испортить статистику запросами - он ее испортит, поверь. Сформировать полностью идентичный запрос - дело нескольких минут.
Выход - blacklist.
-
CGVictor:
Если спамеру уж очень сильно захочется испортить статистику запросами - он ее испортит
Виктор, похоже это самый главный вывод, который я могу сделать из нашего обсуждения. :)
значит основным делаем запасной вариант:
Order Allow,Deny
Allow from all
Deny from ip1 ip2 ip3
CGVictor:
Сергей Иванов:запретить посещать больше 30 страниц -
Ерунда
ерунда-то ерунда, да вот вот только мысля такая стала закрадываться, а если я не могу написать автоматическую защиту счётчика, то как я смогу автоматически понять, т.е. скриптом, что файл статистики искажён спамером. это чё придётся вручную листать все файлы. да дечонки меня за такое порвут. файлов то-много будет, да и они сами большие...
да и сами прикиньте Виктор, Вы просматривая файл как бы определили спаммера? Наверняка - по критерию слишком много кликов за одно посещение, а если спаммер будет спамить так: counter.php?uin_user=случайное_число&title=случайная_страница, то Вы даже на глаз, т.е. вручную не сможете выявить что Вас заспамили. Ведь так?
так что Вывод такой: даже если мы будем использовать блэк лист, то спаммер может так наспаммить, что мы его даже за спаммера признать не сможем и соответсвенно поместить в блэк лист тоже. нафига тогда блэк лист? вот...
а если по-научному, то какой критерий спаммера? у нас его так с Вами и не нашлось, поэтому мы и бессильны создать автоматическую защиту против спаммера.
-
CGVictor:
несколько раз уже на моей памяти обсуждали (правда, всё больше по накруткам..один х).
вообще-то защита от накруток - это более круто, чем сами накрутки, в этом и есть уникальность данной темы
-
Сергей Иванов
Сергей Иванов:
спаммер будет спамить так
Вы определитесь: вам спамеры конкретно чем мешают?
- Спам в реферере? Смотрим реф, баним по IP.
- Посторонние (слишком частые) вызовы страницы? Ок, гоняем аналитику по логам, выявляем IP, баним.
-
CGVictor:
вам спамеры конкретно чем мешают?
конкретно они мешают тем, что когда смотришь статистику посщения сайта: 23 тыс., а реально его посещают 1,5 тыс. Смотрите на статистику, а там всё ок: всё выглядит как обычные посещения: разные IP\'ы, разные страницы. Вы сами подумайте над своими вопросами:
1. Спам в рефёрере - а что такое спам в рефёрере, как вы его определите. Как он для Вас выглядит? допустим 1 тыс. строк domen.ru/shop.php?item=code - для Вас это спам? Как вы по внешнему виду отличите спам это или не спам? Фишка-то в том, что спам фиг отличишь от обычного посещения.
2. Что значит "посторонние" и что значит "слишком частые". Как Вы это определяете глядя глазами на статистику?
Вот в чём вопрос. А конкретных проблем, типа: грузит работу сервера, формирует слишком большой лог, мешает работе другим пользователям - этого нет. сервак всё тянет без проблем. Проблема в том, что я вижу информацию неадекватную реальности и соответсвенно клиент получает от меня неадекватную информацию. Представляете: апрель: 23 тыс, май: 28 тыс., июнь 35 тыс., а июль 1500 тыс. Меня же за такое уволят нахрен! Вопросы ещё есть? Получается что я не могу определить нормально я работаю или что-то делаю не так по продвижению сайта. В этом-то и есть высадка меня конкурентами. Они ведь знают над какими проектами я работаю - вот и гадят. А мне приходится гадить им.
-
Сергей Иванов
Хм.. вопрос переосмыслен, спасибо.
1. Спам в реферере - разновидность обычного спама, с обратным адресом рекламируемого ресурса в рефе: но это не ваш случай.
2. Как вариант - поставить несколько систем статистики (разных) и посмотреть, чем можно отсечь подобные запросы. Может сработать время просмотра страниц, например, или гео-таргет... ( Google Analytics поможет, я верю :) )
[off]Хотя и тут, на месте врагов, можно и изловчиться и подстроиться.
Тогда останется только смириться и использовать поднятый траффик себе во благо :)[/off]
-
CGVictor:
1. Спам в реферере - разновидность обычного спама, с обратным адресом рекламируемого ресурса в рефе: но это не ваш случай.
если не ошибаюсь это основой вид головной боли владельцев топов и рейтингов. Вы правы, я к ним отношения не имею. я веду простые ресурсы, начиная от магазинов и заканчивая информационными сайтами о фирме ("сайт-визитка").
CGVictor:
Хотя и тут, на месте врагов, можно и изловчиться и подстроиться.
Я не знаю какой у Вас опыт кодинга, но в своё время (в студенческие годы) мне приходилось заниматься хакингом и в частности крекингом. По нашей теме в литературе был такой пацан, которого я очень люблю и уважаю, его зовут Крис Касперски. Так вот он тогда дал мне понять, что не существует защиты, которую нельзя было бы взломать и единственным ограничением за взлом защиты является использование чего-то такого, чего не знают и не могут узнать конкуренты. И наоборот, если я что-то не могу сломать, то это означает не то, что это не ломается, а то, что я чего-то ещё пока не знаю.
Применительно к нашей теме, я должен найти такое решение, чтобы оно было не супер-пупер сильное, а чтобы про него просто не знали конкуренты, и до тех пор, пока они не поймут что же именно я сделал, они будут отса****ть. А пока все работают в едином информационном поле каждый может "безнаказанно" гадить друг другу.
Но это лирика.
А сложность моей ситуации как Вы уже наверно догадались (судя по парралельной теме, которую я веду) заключается в том, что часть моих сайтов суть есть много-много html страничек и я вынужден использовать JS счётчик и другие счётчики рамблер, спайлог и пр. В итоге конкуренты действительно очень просто формируют мне пыль в глаза.
Эх, как хочется узнать какое-нибудь свойство-отличие запроса картинки со страницы или просто из строки браузера, да такое отличие, которое не подделать! Господи помоги! :)
-
Сергей Иванов
Сергей Иванов:
которое не подделать
Это - вряд ли.
Из практических рекомендаций - попробуй Google Analytics. Из-за ее многоплановости ее не так-то просто обманывать.
[off]Засим всё.[/off]
-
Я, ребят, не совсем понял конечно в чем спам заключается. спам на счетчик чтоли ? :) вообщем то если подумать-то и никакой black-list не поможет и гугл. Я когда то делал чтото подобное, правда не для спама, это связано с прокси-серверами. Загоняешь к примеру файл со списком прокси, тысяч на 50, понятное дело, там половина не рабочих, ну и что. Открываем сокет с прокси, пытаемся кинуть запрос GET на скрипт, в котором просто строка типа $string = $_SERVER[\'REMOTE_ADDR\']."|".$_SERVER[\'HTTP_VIA\']."|".$_SERVER[\'HTTP_X_FORWARDER_FOR\']."|".$_SERVER[\'HTTP_XROXY_CONNECTION\']...и тп переменные. Если сокет не превысил таймаут, то парсим полученные переменные окружения от прокси, смотрим насколько он анонимный (для того, чтобы ты не понял что это прокси-"чистых" прокси достаточно много), если это elite proxy то уже формируем запрос непосредственно на счетчик или сайт, подделываем хэдеры (браузер, реф,accept и тд) и через опять же fsockopen() уже коннектимся куда надо. Естественно все в цикле на количество прокси :)) И главное что не определишь нефига, человек это или бот. Но работать на PHP будет долго, но за пару часов при хорошей БД прокси можно пару-тройку тысяч накинуть на счетчик :)
-
reLax[0x00]
Да ясно и так это всё.
Другое дело, что GA может блокировать общеизвестные прокси, фильтровать по geopos (что сразу может 50% таких проксей отсечь), прочие вкусности предоставлять. Может помочь, имхо.
-
reLax[0x00]
смотря где запускать скрипт :-) если на выделеном серваке 2-х процессорном да еще и алгоритм на много-пототочность(или как оно правельно, когда несколько процесов одновремено запускаеш :) ) вот тогда и определи бот или клиент в это время зашол :) , а вообще за место конкурента поставил бы примерно 1-5 кликов за 1-5 секунд на твой сайт с рандом, вот тогда и попробую отсей меня :)
-
Да, Братва, от Вашего базара все сомнения нафиг улитучились про защиту. Остаётся старый проверенный, я бы сказал "ментовский" способ. Валить меня просто так от нечего делать вряд ли кому-то захочется. Ну я же не яндекс и завалив меня мне ущерб будет, но это далеко-далеко не катастрофа и кайфа человек со стороны не словит. Следовательно, если меня ломают, то значит, ломает заинтересованный человек, а таких круг узок и можно просто пойти настучать по головке этим доброжелателям.
-
reLax[0x00]:
Загоняешь к примеру файл со списком прокси, тысяч на 50, понятное дело, там половина не рабочих, ну и что. ... Естественно все в цикле на количество прокси )
вопрос может децл ламмерский, но как чёрт побери можно запустить php скрипт на такую сложную обработку на 50 тыс. адресов и уложиться в 30 сек. или ты после каждой операции SetTimeOut вызываешь или у тебя unlimited на время работы скрипта или эта операция вообще без php скрипта делается а отдельным демоном под юникс?
-
Сергей Иванов
Можно любым из способов. set_time_limit на ура справится.