getz Опубликовано 4 Марта 2006 Жалоба Поделиться Опубликовано 4 Марта 2006 Про спамеров рассказывать не буду. Но пришла вот такая идея: не публиковать сообщение, содержащие URL, если автор не превысил некоторого порога (мне 1 нравится ) публикации сообщений.Файл: class_post.phpНаходим //----------------------------------------- // Do we have a valid post? //-----------------------------------------Вставляемif($this->ipsclass->member['posts'] < $num_posts){ if(stristr($_POST['Post'], 'www')) $this->ipsclass->Error( array( LEVEL => 1, MSG => 'like_spamer') ); if(stristr($_POST['Post'], 'http')) $this->ipsclass->Error( array( LEVEL => 1, MSG => 'like_spamer') ); }$num_posts - количество ссобщений, после которого можно постить URL. Я жестко вбил 1, в принципе можно ввести в настройки.Файл: lang_error.phplike_spamer => "Данное сообщение не может быть опубликовано!", Что скажите, коллеги?-----------------------------------------------------------------------------------------------------------------------------Остается еще одна лазейка <form id='postingform' action='...' method='post' name='REPLIER' onsubmit='return ValidateForm()' Тогда полезу жабускрипт мучать, если PHP не остановит. Appeavame, bredgraimoon, Daziman и 3 других отреагировали на это 6 Ссылка на комментарий Поделиться на других сайтах Прочее
naka Опубликовано 4 Марта 2006 Жалоба Поделиться Опубликовано 4 Марта 2006 Хз, имхо надо поставить ограничение постов 10...Ксати, вы на какой версии тестели? Ссылка на комментарий Поделиться на других сайтах Прочее
getz Опубликовано 4 Марта 2006 Автор Жалоба Поделиться Опубликовано 4 Марта 2006 Хз, имхо надо поставить ограничение постов 10... Поживем-увидим. У меня из всех спамеров только один трижды вернулся (пока). Поэтому лично я пока ограничусь 1.Ксати, вы на какой версии тестели?2.1.3 В доп.полях забито Ссылка на комментарий Поделиться на других сайтах Прочее
getz Опубликовано 4 Марта 2006 Автор Жалоба Поделиться Опубликовано 4 Марта 2006 А для 2.0 как реализовать?) Я, к сожалению, начал сразу 2.1.3 пользовать, поэтому, увы... Думаю, если поискать, можно найти подобную проверку и там. А что, неплохая кажется идея...Я ее тут еще развил, мозги проветрив... Сделать а настройках дополнительный параметр, забить туда www, http, .ru, .com, .net, .biz, etc... Потом explode, do... Но пока это в теории и, думаю, сложностей в реализации не вызовет и будет работать. Можно еще на этот расклад придумать проверку на количество вхождений @ в паре с .ru, .com, .net, .biz, etc... чтобы пропустить e-mail. -----------------------------------------------------------------------------------------------------------------------------Насчет жабы из первого поста: в принципе это лишнее. Перед записью в базу данных мы все равно попадем в этот класс. Вот, если в версии 2.0 нет подобной проверки и геморно ее делать, то там самое оно впомнить жабу вместе с событием onSubmit в <form /> и поиском вышеперечисленных вхождений. Только еще надо будет не забыть, например, <input type='hidden' name='num_posts' value='...'> Если нашлись вхождения: return false, можно еще и alert нарисовать. Ссылка на комментарий Поделиться на других сайтах Прочее
getz Опубликовано 4 Марта 2006 Автор Жалоба Поделиться Опубликовано 4 Марта 2006 В админцентре добавил 2 настройки в Темы, Сообщения и Опросыnum_posts_for_url, значение 1spam_filtr, значение www,http,.ru,.com,.net,.bizВ любой момент можно изменить, неизменяя кода Файл: class_post.phpНаходим //----------------------------------------- // Do we have a valid post? //-----------------------------------------Вставляем после if($this->ipsclass->member['posts'] < $this->ipsclass->vars['num_posts_for_url']){ $spam_filtr = explode(',', $this->ipsclass->vars['spam_filtr']); foreach($spam_filtr as $word){ if(stristr($_POST['Post'], $word)) $this->ipsclass->Error( array( LEVEL => 1, MSG => 'like_spamer') ); break; } } Ссылка на комментарий Поделиться на других сайтах Прочее
d1pro Опубликовано 4 Марта 2006 Жалоба Поделиться Опубликовано 4 Марта 2006 И вся ваша защита будет легко и просто обойдена, если в ссылку добавить пробелы . Ссылка на комментарий Поделиться на других сайтах Прочее
getz Опубликовано 5 Марта 2006 Автор Жалоба Поделиться Опубликовано 5 Марта 2006 И вся ваша защита будет легко и просто обойдена, если в ссылку добавить пробелы .Поподробней можно или пример ссылки? Одна дыра есть, но никак не побелы. Ссылка на комментарий Поделиться на других сайтах Прочее
getz Опубликовано 5 Марта 2006 Автор Жалоба Поделиться Опубликовано 5 Марта 2006 if($this->ipsclass->member['posts'] < $this->ipsclass->vars['num_posts_for_url']){ $spam_filtr = explode(',', $this->ipsclass->vars['spam_filtr']); //убираем все переводы строк (обещанная дыра) $post = str_replace("\n", "", $_POST['Post']); $post = str_replace("\r", "", $post); $post = str_replace(" ", "", $post);//specia for [b]d1pro[/b] :) foreach($spam_filtr as $word){ if(stristr($post, $word)) $this->ipsclass->Error( array( LEVEL => 1, MSG => 'like_spamer') ); // break;//почему-то косячило. как поставил комментарии, сразу все Ок стало. } } Ссылка на комментарий Поделиться на других сайтах Прочее
gimlis Опубликовано 8 Марта 2006 Жалоба Поделиться Опубликовано 8 Марта 2006 А по-моему достаточно поменять циферки для регистрации(на другие) и спамеров как не бывало. По дефолту стоит такое. function show_gif_img($this_number="") { $numbers = array( 0 => 'R0lGODlhCAANAJEAAAAAAP////4BAgAAACH5BAQUAP8ALAAAAAAIAA0AAAIUDH5hiKsOnmqSPjtT1ZdnnjCUqBQAOw==', 1 => 'R0lGODlhCAANAJEAAAAAAP////4BAgAAACH5BAQUAP8ALAAAAAAIAA0AAAIUjAEWyMqoXIprRkjxtZJWrz3iCBQAOw==', 2 => 'R0lGODlhCAANAJEAAAAAAP////4BAgAAACH5BAQUAP8ALAAAAAAIAA0AAAIUDH5hiKubnpPzRQvoVbvyrDHiWAAAOw==', 3 => 'R0lGODlhCAANAJEAAAAAAP////4BAgAAACH5BAQUAP8ALAAAAAAIAA0AAAIVDH5hiKbaHgRyUZtmlPtlfnnMiGUFADs=', 4 => 'R0lGODlhCAANAJEAAAAAAP////4BAgAAACH5BAQUAP8ALAAAAAAIAA0AAAIVjAN5mLDtjFJMRjpj1Rv6v1SHN0IFADs=', 5 => 'R0lGODlhCAANAJEAAAAAAP////4BAgAAACH5BAQUAP8ALAAAAAAIAA0AAAIUhA+Bpxn/DITL1SRjnps63l1M9RQAOw==', 6 => 'R0lGODlhCAANAJEAAAAAAP////4BAgAAACH5BAQUAP8ALAAAAAAIAA0AAAIVjIEYyWwH3lNyrQTbnVh2Tl3N5wQFADs=', 7 => 'R0lGODlhCAANAJEAAAAAAP////4BAgAAACH5BAQUAP8ALAAAAAAIAA0AAAIUhI9pwbztAAwP1napnFnzbYEYWAAAOw==', 8 => 'R0lGODlhCAANAJEAAAAAAP////4BAgAAACH5BAQUAP8ALAAAAAAIAA0AAAIVDH5hiKubHgSPWXoxVUxC33FZZCkFADs=', 9 => 'R0lGODlhCAANAJEAAAAAAP////4BAgAAACH5BAQUAP8ALAAAAAAIAA0AAAIVDA6hyJabnnISnsnybXdS73hcZlUFADs=', ); @header("Content-Type: image/gif"); echo base64_decode($numbers[ $this_number ]); exit(); } Я заменил на такое и спамеров как не бывало. function show_gif_img($this_number="") { $im=ImageCreate(30,50); $osn=imagecolorallocate($im,0,0,0); $fon=imagecolorallocate($im,255,255,255); ImageFill($im,1,1,$fon); ImageString($im,rand(0,10),rand(0,22),rand(0,40),$this_number,$osn); @header("Content-Type: image/gif"); ImageGif($im); ImageDestroy($im); exit(); } Ссылка на комментарий Поделиться на других сайтах Прочее
Spear Опубликовано 16 Марта 2006 Жалоба Поделиться Опубликовано 16 Марта 2006 ботов воде таких нету. Есть проги помогающие это делать, например по нажатию на кнопку заполняют поле текста сообщения и т.п. так что в любом случае это люди. я у себя на форуме сделал так:при парсинге поста проверяю кол-во сообщений на счетчик пользователя. Если оно меньше десяти и в пост содержатся ссылки на внешние ресурсы (то есть все кроме ссылок на мой сайт и форум) - запрещаем писать собщение. Далее идет проверка - если у человека более 10 собщений, но его акаунт был создан менее 1 часа назад - запрещаем писать сообщение. Для извращения можно в куки писать кол-во попыток зарекламить (подяд, конечно), если переваливают за 10 - банить. Короче говоря первых двух вариантов вместе = хватит, 99%. Ссылка на комментарий Поделиться на других сайтах Прочее
Destruction Опубликовано 17 Марта 2006 Жалоба Поделиться Опубликовано 17 Марта 2006 Боты есть и писать их ой как легко. Поставь себе IEHTTPHeaders ну или что-нибудь для своего обозревателя + посмотри http://php.net/fsockopen Дальше достаточно знать основы PHP, чтобы заспамить весь интернет. Ссылка на комментарий Поделиться на других сайтах Прочее
toha Опубликовано 31 Марта 2006 Жалоба Поделиться Опубликовано 31 Марта 2006 для общего развития, насчет ботов и спама:http://exploit.in/forum/index.php?act=ST&f=35&t=2378защититься - имхо, сложновато на данный моментна перле можно без особых проблем все обойти, единственное, мало людей, знающих его на такой уровнена пхп - вообще нет особых проблем Ссылка на комментарий Поделиться на других сайтах Прочее
arts Опубликовано 1 Апреля 2006 Жалоба Поделиться Опубликовано 1 Апреля 2006 Вроде бы все правильно сделал, но все равно новые пользователи, без единого сообщения, могут писать сообщения со ссылками... Где я мог не то сделать?Где конкретно выставляется пороговое значение (например, не менее 5 сообщений)? Извиняюсь за глупый вопрос, я не шибко большой специалист... Ссылка на комментарий Поделиться на других сайтах Прочее
getz Опубликовано 1 Апреля 2006 Автор Жалоба Поделиться Опубликовано 1 Апреля 2006 Название настройки: "num_posts_for_url", значение по умолчанию "1"Название настройки: "spam_filtr", значение по умолчанию "www,http,.ru,.com,.net,.biz"Через админцентр можно менять по ходу дела.num_posts_for_url - количество сообщений, необходимое для публикации ссылокspam_filtr - массив {explode()} слов, характерезующих спамера. Может быть еще одна поправка: $this->ipsclass->input['TopicTitle'] может быть пустым, это значит, что пытаются ответить в тему. Как тут быть, решайте сами. Я, пока, пропускаю эти сообщения. После введения этого фильтра, был только один случай спама, да и тот без ссылок. Ну тут уж... А остальное сыпалось мне на почту, кстати, не очень долго... Оставили меня в покое... Ссылка на комментарий Поделиться на других сайтах Прочее
luch Опубликовано 2 Апреля 2006 Жалоба Поделиться Опубликовано 2 Апреля 2006 ботов воде таких нету. Есть проги помогающие это делать, например по нажатию на кнопку заполняют поле текста сообщения и т.п. так что в любом случае это люди. это явно боты, поскольку тема просто валит автоматом на тысячи форумов. я у себя на форуме сделал так:при парсинге поста проверяю кол-во сообщений на счетчик пользователя. Если оно меньше десяти и в пост содержатся ссылки на внешние ресурсы (то есть все кроме ссылок на мой сайт и форум) - запрещаем писать собщение. Далее идет проверка - если у человека более 10 собщений, но его акаунт был создан менее 1 часа назад - запрещаем писать сообщение. как конкретно эти штуки прописать? Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 3 Апреля 2006 Жалоба Поделиться Опубликовано 3 Апреля 2006 У себя на pharm-forum.ru сделал защиту от автоматических постингов. Теперь при открытом доступе на посты гостям рекламы приходит 5-10 в месяц.Суть в том, что боты (и программы) физически мышкой по кнопке [отправить] не щелкают.На кнопку повешен джава-скрипт, добавляющий к сообщению открывающий-закрывающий теги. Дальше парсер проверяет наличие этих тегов, если ОК - заменяет спанами; если тегов нет, парсер дописывает полсотни смайликов и форум отказывается принять сообщение.Минус - пришлось отключить подписи в ПМ, там парсинг работает на отображение. Второй минус неприятней: при вводе сообщения с цитатой текст и цитата парсятся раздельно; пришлось сделать ввод тегов и для цитат; соответственно при быстром ответе и ответе без цитат происходит нефатальная ошибка скрипта - не найден объект (текстареа для цитируемого текста). В версиях IPB 2.х этой проблемы вроде быть не должно, цитата сразу в квотах выводится в единую текстареу. Ссылка на комментарий Поделиться на других сайтах Прочее
Zambrotta Опубликовано 7 Апреля 2006 Жалоба Поделиться Опубликовано 7 Апреля 2006 А я думаю, что спамеров можно отсеять регистрацией в несколько этапов. "ckb это спамер, то он запарицца регаться и откажеться от регистрации... Ссылка на комментарий Поделиться на других сайтах Прочее
luch Опубликовано 8 Апреля 2006 Жалоба Поделиться Опубликовано 8 Апреля 2006 регю вручную теперь, работает. Вот такая идея возникла - а что если добавать одну строку в регистрации (например, город) и сделать ее обязательной? Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 8 Апреля 2006 Жалоба Поделиться Опубликовано 8 Апреля 2006 регю вручную теперь, работает. Вот такая идея возникла - а что если добавать одну строку в регистрации (например, город) и сделать ее обязательной?Путем усложнения регистрации отрубить спамеров - дурное дело не хитрое.Беда в том, что у меня больше половины завсегдатаев ходят и пишут гостями, и если отрубить гостевую запись - они перестанут ходить. Ссылка на комментарий Поделиться на других сайтах Прочее
luch Опубликовано 8 Апреля 2006 Жалоба Поделиться Опубликовано 8 Апреля 2006 ничего не поделать, у меня боты сами регистрируются, юзерам же можно сказать, что регистрация позволить править свои мессаги\быстро искать новые сообщения итп. В общем, некоторые не согласятся, но если ресурс хороший, то большиество согласятся. Если же чел не умеет регистрироваться, то нахрен вообще такой чел на форуме Ссылка на комментарий Поделиться на других сайтах Прочее
luch Опубликовано 13 Апреля 2006 Жалоба Поделиться Опубликовано 13 Апреля 2006 убрал регистрацию, теперь стали такие темы открываться, циничные Доброго времени сутокСоздал сайт в интернете для продажи своеобразной продукции... Нужен пиар, причем мощный, с широким охватом аудитории. Продукцию продаём востребованную, поэтому готовы хорошо оплатить - но в том случае, если софт будет действительно стоить своих денег. К примеру, слышал о мощной программе для рассылки по форумам - знает множество разных типов форумов, использует и автоматически проверяет прокси, умеет обходить защиту картинками и защиту через авторизацию по емейл... и т.д. и т.п.Кто-нибудь подскажет? Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 13 Апреля 2006 Жалоба Поделиться Опубликовано 13 Апреля 2006 Отпишу защиту от автоспама, сделана и работает на IPB 1.3. В корень кидается файл parser.js следующего содержания: var spam_key='[spam_key]'; spam_keyc=spam_key.split('[').join('[\/'); function rebuild_message(){ document.REPLIER.Post.value = document.REPLIER.Post.value.split(spam_key).join('').split(spam_keyc).join(''); } function verify_URLa(){ rebuild_message(); document.REPLIER.Post.value = spam_key+' ' + document.REPLIER.Post.value + ' '+spam_keyc; document.REPLIER.QPost.value = spam_key+' ' + document.REPLIER.Post.value + ' '+spam_keyc; } Файл прилинковывается к странице. Отдельным файлом сделано на случай использования в форуме нескольких скинов, чтобы при необходимости сменить ключ можно было в одном месте. В скинах ищутся кнопки отправки сообщений и предпросмотра, добавляется обработчик: onclick="java script:verify_URLa()" Там же в скинах ищутся все теги <textarea ... >, и в них добавляется обработчик onfocus="java script:rebuild_message()" В парсере две добавки: в разделе // Start off with the easy stuffдобавляется код: //Антиробот $txt = preg_replace( "#\[spam_key\](.+?)\[/spam_key\]#is", "<span class=veryfedkey>\\1</span>", $txt ); $txt = preg_replace( "#\[spam_key\](.+?)\[/spam_key\]#is", "\\1", $txt ); $txt = preg_replace( "#\[spam_key\](.+?)\[/spam_key\]#is", "\\1", $txt ); $txt = preg_replace( "#\[spam_key\](.+?)\[/spam_key\]#is", "\\1", $txt ); $txt = preg_replace( "#\[spam_key\](.+?)\[/spam_key\]#is", "\\1", $txt ); $txt_body = preg_replace( "#<span class=veryfedkey>(.+?)</span>#is", "\\1", $txt ); if($txt_body==$txt){$txt=";);););););););););););););););););););););););););););););););););););););););););););););););););)";}; $txt = preg_replace( "#\<\;span class=veryfedkey\>\;(.+?)\<\;/span\>\;#is", "\\1", $txt ); В функцию unconvert($txt="", $code=1, $html=0) {добавляются строки: $txt = preg_replace( "#(<span class=veryfedkey>)(.+?)(</span>)#is", "\\2", $txt ); $txt = preg_replace( "#(<span class=veryfedkey>)(.+?)(</span>)#is", "\\2", $txt ); В админцентре выставить максимальное число смайликов в сообщении меньше 50. После этого останется подчистить два глюка: 1. Подписи в ПМ лучше отключить (найти в скинах и закомментировать).2. Все ранее попавшие в БД персональные сообщения перестанут отображаться, вместо них будет выводиться 50 смайликов.Отображение сообщений можно восстановить, отредактировав в БД, добавив в начало ячейки каждого ПМ-сообщения "[spam_key][/spam_key]". Я не большой спец в php, поэтому не смог вынести ключ в глобальную переменную, как это сделал в джаве.Если кто-нибудь упростит парсер - буду признателен. Ссылка на комментарий Поделиться на других сайтах Прочее
igorstr777 Опубликовано 14 Апреля 2006 Жалоба Поделиться Опубликовано 14 Апреля 2006 //-----------------------------------------// Do we have a valid post?//-----------------------------------------После вставляем: $msg = "Spamer: ". $this->ipsclass->member['name']. "<br>Title: ".$this->ipsclass->input['TopicTitle']."<br>Message:<br>".$_POST['Post']."<br><hr>"Данное сообщение не было опубликовано ввиду подозрения на СПАМ"; В этой строчке помоему лищняя кавычка после последнего <hr>"Данное Эта кавычка не нужна (вызывает ошибку, да и нечетное их количество вообще... Ссылка на комментарий Поделиться на других сайтах Прочее
getz Опубликовано 14 Апреля 2006 Автор Жалоба Поделиться Опубликовано 14 Апреля 2006 В этой строчке помоему лишняя кавычка после последнего <hr>"Данное Эта кавычка не нужна (вызывает ошибку, да и нечетное их количество вообще...Лишняя Видимо, ошибся, когда через буфер копировал и чего-то скорректировал У меня в коде кавычки нет Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 22 Апреля 2006 Жалоба Поделиться Опубликовано 22 Апреля 2006 ГМ.. как я такую темку интересную пропустил.. Fat_Cat как-то ты сложно.Навскидку я бы сделал так:в форму отправки ответа (блага она в одном месте формируется) я добавил бы hidden поле со значением 0 по умолчанию.На onclick я вызываю ява-скрипт, который устанавливает там единичку.На тот момент ещё форма не активируется, т.к. там стоит ещё экшен на проверку длины поста.Когда он уже срабатывает в форме уже будет единичка.Далее форма отправляется на сервер, а там простой контроль на это hidden поле. Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения