This page has been robot translated, sorry for typos if any. Original content here.

Anti-chat или "nick flooding" ч.2

Anti-chat продолжение, либо Nick Flooding II

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

Пример труда скрипта, код с комментариями приведен ниже

Первый символ: Number Lowercase Uppercase Other
Остальные символы:  Number Lowercase Uppercase Other
Длина ника: Другие символы:
Generated nick:
Рассотрим на образце кода главной страницы чата:

<FORM action=http://www.domen.ru/cgi-bin/chat/chat.cgi method=post name="myform">
<!-- Еще тут может существовать вид для ввода пароля, избрание цвета также т.д. -->
<input type=text name=nick size=20> <!-- Форма в которую вписывается ник при заходе в чат -->
<input type=button value="Generate Nick"><!-- В образце на кнопке написано Generate Nick, в чате может существовать по другому  -->
</form>

А так выглядит этот код со "встроенным" скриптом написанным именно под него (я владею вследствие что в скрипте использованы те бла бла названия форм), хоть он  с виду также большой, разобраться  никак не сложно даже тому кто никак не знает Java-script. Зеленым цветом написаны комментарии, их можно стереть.

<!-- Скрипт, какой генерирует случайный набор символов с заданными параметрами. Там в каком месте указан набор символов, например var lowerChars = "abcdefghijklmnopqrstuvwxyz" английские разрешено поменять на русские -->
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
function getRandomNum(lbound, ubound) {
return (Math.floor(Math.random() * (ubound - lbound)) + lbound);
}
function getRandomChar(number, lower, upper, other, extra) {
var numberChars = "23456789";
var lowerChars = "abcdefghijklmnopqrstuvwxyz";
var upperChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var otherChars = "`!@#$%&*()-_=+[{]}\\|;:'\",<.>/? ";
var charSet = extra;
if (number == true)
charSet += numberChars;
if (lower == true)
charSet += lowerChars;
if (upper == true)
charSet += upperChars;
if (other == true)
charSet += otherChars;
return charSet.charAt(getRandomNum(0, charSet.length));
}
function getnick(length, extraChars, firstNumber, firstLower, firstUpper, firstOther,
latterNumber, latterLower, latterUpper, latterOther) {
var rc = "";
if (length > 0)
rc = rc + getRandomChar(firstNumber, firstLower, firstUpper, firstOther, extraChars);
for (var idx = 1; idx < length; ++idx) {
rc = rc + getRandomChar(latterNumber, latterLower, latterUpper, latterOther, extraChars);
}
return rc;
}

// End -->
</script>



<center> <table width=80% border=0>
<tr align=center> <td>
<FORM action=http://www.domen.ru/cgi-bin/chat/chat.cgi method=post name="myform"><!-- Имя формы можете заменить на свое, только никак не забудьте всюду поменять, далее выделено желтым цветом -->
<table border=0><tr> <td>

First character can be: <!-- Каким вынужден существовать главный символ -->
</td><td>
<input type=checkbox name=firstNumber>Number
<input type=checkbox name=firstLower>Lowercase
<input type=checkbox name=firstUpper checked>Uppercase
<input type=checkbox name=firstOther>Other

</td></tr><tr><td>

Latter characters can be: <!-- Какими должны существовать остальные символы-->
</td><td>
<input type=checkbox name=latterNumber>Number
<input type=checkbox name=latterLower checked>Lowercase
<input type=checkbox name=latterUpper>Uppercase
<input type=checkbox name=latterOther>Other
</td></tr><tr><td>

Длина ника:
</td><td>
<!-- Длина ника, в данном случае указано 8 символов -->
<input type=text name=nickLength size=3 value=8> 


<!-- Ежели требуется использовать какие-то другие символы, то их разрешено вписать сюда -->
<!-- Extra nick characters: --> 

Другие символы: <input type=text name=extraChars size=20>


</td></tr></table>
</td></tr> <tr align=center> <td>

Generated nick: 
<input type=text name=nick size=20> <!-- Форма в которую записывается, сгенерированный ник, именуется nick, никак не забудьте что это имя тут в качестве образца, в разных чатах оно разное: user, username, nick..., поэтому скрипт пишите под название в вашем чате -->

<!-- Функция, выполняемая при нажатии кнопки -->
<input type=button value="Generate Nick" onClick="
document.myform.nick.value =
getnick(document.myform.nickLength.value, document.myform.extraChars.value,
document.myform.firstNumber.checked, document.myform.firstLower.checked,
document.myform.firstUpper.checked, document.myform.firstOther.checked,
document.myform.latterNumber.checked, document.myform.latterLower.checked,
document.myform.latterUpper.checked, document.myform.latterOther.checked);">
</form> <!-- Не забудьте написать закрывающийся тег form -->
</td></tr></table>

Остается только вписать в автозагрузку страницы выполнение этого скрипта также отправку данных на сервак (submit). Так станет выглядеть исток кода:
<HTML><HEAD><TITLE>Chat Flooder</TITLE>

<script Language="JavaScript">
function submit() {
Timer= setTimeout(" (document.myform.submit())",1000);
}
</script>

</HEAD>

<BODY  onload="document.myform.nick.value =
getnick(document.myform.nickLength.value, document.myform.extraChars.value,
document.myform.firstNumber.checked, document.myform.firstLower.checked,
document.myform.firstUpper.checked, document.myform.firstOther.checked,
document.myform.latterNumber.checked, document.myform.latterLower.checked,
document.myform.latterUpper.checked, document.myform.latterOther.checked);

submit()">

Далее самолично код страницы также скрипт...

Рабочие примеры никак не выкладываю специально т.к. их придется все пора апгрейдить, во-вторых, мы мыслю что флудить чаты - плохо :) 

Предыдущая статья