Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение и отправка капчи на mail.ru 
:(
    Опции темы
ex3me0
Дата 26.1.2010, 11:02 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 9.8.2009

Репутация: нет
Всего: нет



Имеется следующий код (в перле второй день - ногами не пинайте):

Код

#!c:\\perl\\bin

use strict;
use WWW::Mechanize;
use HTTP::Cookies;
use LWP::Debug qw(+);

my $url = "http://win.mail.ru/cgi-bin/login";

my $login = "my_mail_login";
my $domain = "mail.ru";
my $password = "my_pass";

#авторизуемся на майл.ру

my $mech = WWW::Mechanize->new();
$mech->cookie_jar(HTTP::Cookies->new());
$mech->get($url);
$mech->form_name('Auth');
$mech->field(page => "");
$mech->field(post => "");
$mech->field(login_from => "");
$mech->field(Login => $login);
$mech->field(Domain => $domain);
$mech->field(Password => $password);
$mech->click();

my ($out) = $mech->get("http://win.mail.ru/cgi-bin/editpass")->content(); # получаем страницу с капчей
my ($xregid) = $out =~ /name="captha_frame" frameborder='0' scrolling='no' style='border-width:0px;overflow:hidden;border-width:0px;height:51px;width:151px' src='(.+?)'/i;
my ($xreg) = $out =~ /input type=hidden value="(.+?)" name=x_reg_id/i;
print $xregid."\n";
print $xreg."\n";
$out = $mech->get("http://win.mail.ru/cgi-bin/".$xregid)->content(); 
my ($img_url) = $out =~ /<img src="(.+?)">/i;
my ($c) = &captcha($mech, 'http://win.mail.ru/cgi-bin/'.$img_url);

$mech->post("http://win.mail.ru/cgi-bin/modifypass",
[
'modify'=>'1',
'Username'=>$login,
'browserData'=>'screen--%60top%60%3A%600%60%2C%60height%60%3A%60768%60%2C%60width%60%3A%601366%60%2C%60left%60%3A%600%60%2C%60colorDepth%60%3A%6032%60%2C%60pixelDepth%60%3A%6032%60%2C%60availWidth%60%3A%601366%60%2C%60availHeight%60%3A%60708%60%2C%60availLeft%60%3A%600%60%2C%60availTop%60%3A%600%60%0D%0Anavigator--%60userAgent%60%3A%60Mozilla%2F5.0+%28Windows%3B+U%3B+Windows+NT+5.1%3B+ru%3B+rv%3A1.9.1.5%29+Gecko%2F20091102+MRA+5.6+%28build+03278%29+Firefox%2F3.5.5%60%2C%60appVersion%60%3A%605.0+%28Windows%3B+ru%29%60%2C%60appCodeName%60%3A%60Mozilla%60%2C%60appName%60%3A%60Netscape%60%2C%60language%60%3A%60ru%60%2C%60platform%60%3A%60Win32%60%2C%60oscpu%60%3A%60Windows+NT+5.1%60%2C%60vendor%60%3A%60%60%2C%60vendorSub%60%3A%60%60%2C%60product%60%3A%60Gecko%60%2C%60productSub%60%3A%6020091102%60%2C%60securityPolicy%60%3A%60%60%2C%60cookieEnabled%60%3A%60true%60%2C%60onLine%60%3A%60true%60%2C%60buildID%60%3A%6020091102152451%60%0D%0Aflash--%60version%60%3A%6010.0.32%60%0D%0A',
'oldPswd'=>$password,
'Password'=>'fuck0ff123',
'Password_Verify'=>'fuck0ff123',
'x_reg_id'=>$xreg,
'security_image_word'=>$c
]
)->as_string;


my $outfile = "out.htm";
my $output_page = $mech->content();
open(OUTFILE, '>tmp/'.$outfile);
print OUTFILE $output_page;
close(OUTFILE);



sub get_cap {



}

sub captcha {
    my ($mech, $img_url) = @_;
    my $img_name = rand(9).'.jpg';
    my $imdata = $mech->get($img_url)->content;
         
    open(F,'>tmp/'.$img_name);
    binmode F; print F $imdata;
    close(F);
         
    my ($cap) = 0;
    $cap = &anti_captcha($mech, './tmp/'.$img_name);
    return $cap if ($cap ne '0');
    unlink 'tmp/'.$img_name;
    return 0;
    
}

sub anti_captcha {
     my ($mech, $img) = @_;
     print "  . recognizing captcha (".$img.")..."."\n";
     my $digits   = '';
     M:
         my $response = $mech->post( 'http://antigate.com/in.php',
            Content_Type => 'form-data',
            Content => [
                 file =>
                     [
                         $img,
                         "$img",
                         "Content-Type" => "application/octet-stream"
                     ],
                 method   => "post",
                 key      => "41c93c87c2e360e01065e42d37bd5410"
            ]
         )->as_string;
         if ($response =~ /500 read timeout/i) {
             print '  . 500 read timeout'."\n";
             sleep(10);
             goto M;
         }
         if($response =~ /OK\|(\d+)/i) {
             my $kkey = $1;
             do {
                 print "  . Waiting chinese response... ($kkey)"."\n";
                 $digits = $mech->get(
                     'http://'.'antigate.com'."/res.php?key=41c93c87c2e360e01065e42d37bd5410&action=get&id=$kkey"
                 )->as_string;
                 sleep(5);
             }
             while($digits =~ /CAPCHA_NOT_READY/i);
             $digits =~ /OK\|(.*)/i; $digits = $1;
             print "  + Recorgenized (".$img."): ".$digits."\n";
         }
         elsif ($response =~ /ERROR_NO_SLOT_AVAILABLE/i) {
             sleep(1);
             print "  . Waiting for free slot ..."."\n";
             goto M;
         }
         elsif ($response =~ /ERROR_KEY/i) {
             print " -!- Your anti-captcha key is invalid, please check or remove it"."\n";
             exit(0);
         }
         else {
             if ($response =~ /500 Server closed/is) {
                 print " ?? 500 timeout\n";
                 sleep(5);
                 goto M;
             }
             $response =~ /\n\n(.*)/is;
             print " ?? Something wrong with AC: $1"."\n";
             exit(0) if ($1 =~ /ERROR_ZERO_BALANCE/);
         }
         return $digits;
         
}




Задача состоит в том, чтобы получить капчу, разгадать ее и отправить обратно...

Возникла трудность в том, что капча рисуется в отдельном фрейме и плюс к этому обновляется автоматом каждые N (вроде 30) секунд. 

Пробовал через MECH и через обычный UA делать - одна херня, не получается. 

Помогите кто чем может =\ Код не откомментирован, думаю ничего сверхоригинального я, как новичок, там не намудрил  smile 

 smile 
PM MAIL   Вверх
sir_nuf_nuf
Дата 26.1.2010, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



Не.. ну что это такое - ломать сайты и еще и помощь просить.
 smile 

Это сообщение отредактировал(а) sir_nuf_nuf - 26.1.2010, 12:19


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
ex3me0
Дата 26.1.2010, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 9.8.2009

Репутация: нет
Всего: нет



Где тут хоть намек на взлом?
"ломать сайты" это что? пфф...

Просто делаю автоматический сменщик пароля... я параноик )
PM MAIL   Вверх
shamber
Дата 26.1.2010, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



ex3me0, а мы ведь усе подозрительные smile
и спамеров не любим smile
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0443 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.