Вот решил написать небольшой пост о протоколе IRC. Во-первых, что-то я давно не пополнял свою коллекцию описаний сетевых протоколов, а во-вторых это в тему про ботнеты, о которых недавно шла речь.Вообще-то IRC прекрасно описан в RFC, русском переводе этого RFC и Википедии. Потому я решил не ограничиваться одним его описанием и выложить пример простенького бота. Бот этот заходит на канал и ждет команду: !google [запрос]Получив ее, бот посылает запрос поисковику, кидает первую ссылку из выдачи в чат и ждет следующих команд.#!/usr/bin/perl# Googler IRC Bot
# (c) 2010 Alexandr A Alexeev
# http://eax.me/ use IO::Socket::INET;
use URI::Escape;
use Text::Iconv;
use strict;my ($server, $port, $botnick, $charset) =
qw/irc.dalnet.ru 6667 googler cp1251/;
my $pass = "";
my @channels = qw/googlertest/;my $opt = "--timeout=10 --no-check-certificate --user-agent='Mozilla/5.0 (X11; U; FreeBSD i386; ru-RU; rv:1.9.1.10) Gecko/20100625 Firefox/3.5.10'";
my $conv = Text::Iconv->new($charset, "utf-8"); while(1) {
print "CONNECTING: server = $server, port = $port...\n";
my $irc = IO::Socket::INET->new(
PeerAddr => $server,
PeerPort => $port,
Proto => 'tcp',
Type => SOCK_STREAM,
Timeout => 10
); if(defined $irc) {
print $irc "USER $botnick localhost localhost $botnick\r\n";
print $irc "NICK $botnick\r\n";
print $irc "PASS $pass\r\n" if($pass);
Read more: Записки программиста
# (c) 2010 Alexandr A Alexeev
# http://eax.me/ use IO::Socket::INET;
use URI::Escape;
use Text::Iconv;
use strict;my ($server, $port, $botnick, $charset) =
qw/irc.dalnet.ru 6667 googler cp1251/;
my $pass = "";
my @channels = qw/googlertest/;my $opt = "--timeout=10 --no-check-certificate --user-agent='Mozilla/5.0 (X11; U; FreeBSD i386; ru-RU; rv:1.9.1.10) Gecko/20100625 Firefox/3.5.10'";
my $conv = Text::Iconv->new($charset, "utf-8"); while(1) {
print "CONNECTING: server = $server, port = $port...\n";
my $irc = IO::Socket::INET->new(
PeerAddr => $server,
PeerPort => $port,
Proto => 'tcp',
Type => SOCK_STREAM,
Timeout => 10
); if(defined $irc) {
print $irc "USER $botnick localhost localhost $botnick\r\n";
print $irc "NICK $botnick\r\n";
print $irc "PASS $pass\r\n" if($pass);
Read more: Записки программиста
0 comments:
Post a Comment