The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Пишем робота для отправки SMS через web-формы."
Отправлено klyaznik, 31-Авг-04 08:38 
Вот мой скриптик для отправки смс-ок через анонимные прокси (для обхода ограничения на количество смс с одного айпи) на номера МТС московской области, может быть кому пригодится:

cat /usr/local/sbin/sendsms.pl
#!/usr/bin/perl -w

# Директория, где будет лежать файл с адресами прокси
my $dir="/tmp";

# Количество попыток отправить смс
my $tries=5;

use strict;
use LWP::UserAgent;
use HTTP::Request::Common qw(POST);
use IO::Socket;

unless ($ARGV[0]){print "Usage: $0 7916XXXXXXX\n\texample: $0 79161234567\n";sleep 1; exit 0;}
my $ua = LWP::UserAgent->new;

if (!-e "$dir/proxylist.$<"){&getproxy();}

open F, "<$dir/proxylist.$<" or die "Can't read $dir/proxylist.$<: $!\n";
my @proxies=<F>;
close F;

my $text=<STDIN>;
my ($rem,$proxy);

TRY:

if(!$tries){die "Can't send message!";}

if(@proxies < 20){&getproxy();}
my $num=int(rand(@proxies-1));
chomp($proxy=$proxies[$num]);
splice @proxies,$num,1;
$rem = IO::Socket::INET->new(Proto=>"tcp",PeerAddr=>"$proxy",Timeout=>3);
if(!$rem){goto TRY;}
close $rem;

open F, ">$dir/proxylist.$<" or die "Can't write $dir/proxylist.$<: $!\n";
print F @proxies;
close F;

$ua->proxy('http', "http://$proxy");
my $req = POST "http://sms.mts.ru/cgi-bin/cgi.exe",
[function=>'sms_send',To=>$ARGV[0],Msg=>$text,Hour=>15,Min=>34,Day=>20,Mon=>'08',Year=>2005,Lang=>'211:26-16/01' ];

my $res = $ua->request($req);

if($res->is_success){
#  print "Message was sent!\n";
} else {
  $tries--;
  goto TRY;
}

sub getproxy {
  unlink "$dir/proxylist.$<";

  for(my $i=2;$i<=15;$i++){
    if($i<=9){$i="0".$i;}
    my $req = HTTP::Request->new(GET => "http://www.samair.ru/proxy/proxy-$i.htm");
    my $res = $ua->request($req);
    $i=~s/^0//g;

    if ($res->is_success){
      my @lines=split/<BR>|<tr>|\n/,$res->content;
      open F, ">>$dir/proxylist.$<";
      foreach (@lines){
        if(/SSL/){next;}
        if(/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d+)/){print F $1,"\n";}
      }
      close F;
    } else {print "Error getting proxy list $1/1/$i: $1\n";}
  }
}

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру