Обход "фильтров" в icq [php]

Discussion in 'PHP' started by rcc0023, 23 May 2009.

  1. rcc0023

    rcc0023 Elder - Старейшина

    Joined:
    3 Jul 2008
    Messages:
    100
    Likes Received:
    6
    Reputations:
    0
    Никак не могу разослать на свой icq ежесекундные сообщения.

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

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

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    rcc0023 Вопрос - так ли уж необходимо слать сообщение ежесекундно? А не пакетами по 5-10 строк в сообщении каждые 5-10 секунд?

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

    З.Ы. в джаббере таких ограничений нет (хотя зависит от серва)
     
    _________________________
    1 person likes this.
  3. awdrg

    awdrg Member

    Joined:
    30 Jan 2009
    Messages:
    195
    Likes Received:
    31
    Reputations:
    1
    1)Обьеденить события бота в несколько групп
    2)Каждой группе присвоить свой UIN
    3)Отсылать запрос о событии с определенного UINA
    не лучшее решение но пока пришло в голову только это
     
    1 person likes this.
  4. Zombi ****

    Zombi **** Elder - Старейшина

    Joined:
    4 Apr 2009
    Messages:
    166
    Likes Received:
    183
    Reputations:
    17
    +1
     
    1 person likes this.
  5. rcc0023

    rcc0023 Elder - Старейшина

    Joined:
    3 Jul 2008
    Messages:
    100
    Likes Received:
    6
    Reputations:
    0
    Спасибо за ответы, с частой отправкой проблему решил. Но вот появилась новая... отправляет лишние сообщения...

    PHP:
    <?

    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!=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);

    }

    ?>
     
    #5 rcc0023, 24 May 2009
    Last edited: 24 May 2009
  6. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    rcc0023 Что значит лишние?

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

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

    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!=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);
    }
    ?> 
     
    _________________________
    #6 Gifts, 24 May 2009
    Last edited: 24 May 2009