PDA

Просмотр полной версии : Обход "фильтров" в icq [php]


rcc0023
23.05.2009, 20:15
Никак не могу разослать на свой icq ежесекундные сообщения.

Как обойти ограничения/отсылать с таким промежутком?

p.s. такое нужно не только для спама, но и определенной слежке за какими то действиями...

Gifts
23.05.2009, 20:21
rcc0023 Вопрос - так ли уж необходимо слать сообщение ежесекундно? А не пакетами по 5-10 строк в сообщении каждые 5-10 секунд?

На сколько помню - количество и длина сообщений ограничиваются сервером, и это не обойти.

З.Ы. в джаббере таких ограничений нет (хотя зависит от серва)

awdrg
23.05.2009, 20:23
1)Обьеденить события бота в несколько групп
2)Каждой группе присвоить свой UIN
3)Отсылать запрос о событии с определенного UINA
не лучшее решение но пока пришло в голову только это

Zombi ****
23.05.2009, 20:25
1)Обьеденить события бота в несколько групп
2)Каждой группе присвоить свой UIN
3)Отсылать запрос о событии с определенного UINA
не лучшее решение но пока пришло в голову только это
+1

rcc0023
24.05.2009, 11:07
Спасибо за ответы, с частой отправкой проблему решил. Но вот появилась новая... отправляет лишние сообщения...

<?

include('connect.php');
include('table.php');
include('WebIcqLite.class.php');

$key_1=$key_2=0;

//настройка и подключение к icq

$array_acc_icq[0][uin]=7776666;$array_acc_icq[0][pass]='parol_andreya';

$len_array_acc_icq=count($array_acc_icq);

for($row=0;$row<$len_array_acc_icq;$row++){

$icq[$row]=new WebIcqLite();
$icq[$row]->connect($array_acc_icq[$row][uin],$array_acc_icq[$row][pass]);

echo $icq[$row]->error;

if($icq[$row]->error!='')$icq_error=1;

};

while($icq_error!=1 and $test<1){

++$test; //смотрим сколько сообщений будет, если один раз прокрутить

$mysql_query_1=mysql_query('SELECT * FROM '.$table_do.' ORDER BY user ASC'); //загрузка всех переходов

if(mysql_num_rows($mysql_query_1)!=0){

while($g=mysql_fetch_array($mysql_query_1)){

if($befor_user==$g[user]){--$key_1;}else{$array_do[$key_1][massage]='';};

$array_do[$key_1][massage].=date('H:i',$g[date]).' | '.$g[user].' перешел на '.$g[page].'
';

$befor_user=$g[user];

++$key_1;

};

for($row=0;$row<count($array_do);$row++){

if($key_2==$len_array_acc_icq)$key_2=0;

$icq[$key_2]->send_message(373829414,$array_do[$row][massage]);

if($icq[$row]->error!='' and $icq[$row]->error!='Unknown serwer answer'){$icq_error=1;}else{mysql_query('DELETE FROM '.$table_do.' WHERE ..... LIMIT 1');};

++$key_2;

sleep(2);

};
};

sleep(3);

}

?>

Gifts
24.05.2009, 13:40
rcc0023 Что значит лишние?

И код немного странный, зачем $befor_user и $key_1?

Будет как-то так, отсторожно, удаляет строки из таблицы!:
<?

include('connect.php');
include('table.php');
include('WebIcqLite.class.php');
$key_2=0;
//настройка и подключение к icq
$array_acc_icq['0']['uin']=7776666;
$array_acc_icq['0']['pass']='parol_andreya';
$len_array_acc_icq=count($array_acc_icq);

for($row=0;$row<$len_array_acc_icq;$row++)
{
$icq[$row]=new WebIcqLite();
$icq[$row]->connect($array_acc_icq[$row]['uin'],$array_acc_icq[$row]['pass']);
echo $icq[$row]->error;
if($icq[$row]->error!='')$icq_error=1;
}

while($icq_error!=1 and $test<1){
++$test;
$mysql_query_1=mysql_query('SELECT * FROM '.$table_do.' ORDER BY user ASC');
while($g=mysql_fetch_array($mysql_query_1))
{
// Заносим в ассоциативный массив, по имени пользователя
$array_do[$g['user']][]=date('H:i',$g['date']).' | '.$g['user'].' перешел на '.$g['page'];
}
if (!empty($array_do))
foreach($array_do as $name => $val)
{
$icq[$key_2 % $len_array_acc_icq]->send_message(373829414,implode("\n",$val));
if($icq[$key_2 % $len_array_acc_icq]->error!='' and $icq[$key_2 % $len_array_acc_icq]->error!='Unknown serwer answer')
{$icq_error=1;}
else
{
// Удаление из лога всех строк с отправленным пользователем
// Хотя, конечно, лучше так не делать, а проверять по дате последней отправки
mysql_query('DELETE FROM '.$table_do.' WHERE user=\''.mysql_real_escape_string($name).'\'');
}
$key_2++;
sleep(2);
}
// Убираем массив array_do, чтобы не смущал
unset($array_do);
sleep(3);
}
?>