[Perl] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. daniel_1024

    daniel_1024 Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    260
    Likes Received:
    227
    Reputations:
    386
    как скачать картинку с сайта и положить её в нужную папку ?
    как это можно реализовать без wget, curl и т.п
     
    #1541 daniel_1024, 3 Jul 2010
    Last edited by a moderator: 4 Jul 2010
  2. slashd

    slashd Elder - Старейшина

    Joined:
    3 Sep 2008
    Messages:
    56
    Likes Received:
    15
    Reputations:
    6
    ищи картинку там где запускал скрипт :)
    Code:
    #!/usr/bin/perl
    use strict;
    use LWP::Simple;
    getstore('http://st.pimg.net/tucs/img/cpan_banner.png', 'cpan_banner.png');
     
    2 people like this.
  3. eLWAux

    eLWAux Elder - Старейшина

    Joined:
    15 Jun 2008
    Messages:
    865
    Likes Received:
    616
    Reputations:
    211
    PHP:
    my $ua = new LWP::UserAgent;
    my $imdata $ua->get('http://site.com/image.jpg')->content;

    open(F,'>'.'./image.jpg');
    binmode F; print F $imdata;
    close(F);
     
    1 person likes this.
  4. maxya

    maxya New Member

    Joined:
    15 Feb 2010
    Messages:
    47
    Likes Received:
    4
    Reputations:
    -1
    Вопрос

    Пытаюсь залогиниться на зайт, в форме такое поле:

    Code:
    <input type='hidden' name='user_key' value="" />
    Выше есть небольшой js
    Code:
    <script type="text/javascript">
    				var user_key = hex_md5('78.35.111.90'+':'+navigator.userAgent+':'+navigator.platform+((typeof(screen)!='undefined') ? ':'+screen.width+'*'+screen.height+'*'+(screen.colorDepth ?	screen.colorDepth : screen.pixelDepth):''));
          </script>
    
    Помогите сделать то же самое на Perl :confused:
     
  5. slashd

    slashd Elder - Старейшина

    Joined:
    3 Sep 2008
    Messages:
    56
    Likes Received:
    15
    Reputations:
    6
    maxya
    Можешь скинуть ссылку на логинку?
     
  6. maxya

    maxya New Member

    Joined:
    15 Feb 2010
    Messages:
    47
    Likes Received:
    4
    Reputations:
    -1
    Да, вот.
    Code:
    http://www.yaplakal.com/act/Login/CODE/00/ 
    :)
     
  7. eLWAux

    eLWAux Elder - Старейшина

    Joined:
    15 Jun 2008
    Messages:
    865
    Likes Received:
    616
    Reputations:
    211
    js:
    Code:
    var user_key = hex_md5('78.35.111.90'+':'+navigator.userAgent+':'  +navigator.platform+((typeof(screen)!='undefined')   ? ':'+screen.width+'*'+screen.height+'*'+(screen.col  orDepth ?	screen.colorDepth : screen.pixelDepth):''));
    perl:
    PHP:
     use Digest::MD5 qw(md5_hex);
    my $user_key md5_hex('78.35.111.90') .':''Mozilla 5.1' .':''Mozilla' .':''undefined' .':';
     
    1 person likes this.
  8. slashd

    slashd Elder - Старейшина

    Joined:
    3 Sep 2008
    Messages:
    56
    Likes Received:
    15
    Reputations:
    6
    берется md5 хеш от строки
    Code:
    IPadd:UserAgent:Platform(н-р Linux x86_64):1280*1024*24(смотря какие настройки)
    Учитывая того, что хеш невостанавливаемый значение user_key может исп-ся как защита от бота, но не более.
     
    1 person likes this.
  9. maxya

    maxya New Member

    Joined:
    15 Feb 2010
    Messages:
    47
    Likes Received:
    4
    Reputations:
    -1
    Всем спасибо ;)
    Да, я догадывался, что это защита от ботов :)
    Вопрос вот еще какой. Если это защита, то по идее, со стороны сервера должен генерироваться точно такой же кей, а потом они должны сравниваться? Или нет, тогда можно вообще тупо лепить рендомный набор символов определенной длины?
    "смотря какие настройки" - скрипт же не передаёт разрешение экрана, т.е. настройки я должен задать вручную?
    В любом случае, намек понял, буду дальше копать ;)

    UPD

    Допилил. Все работает :)
     
    #1549 maxya, 4 Jul 2010
    Last edited: 4 Jul 2010
  10. daniel_1024

    daniel_1024 Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    260
    Likes Received:
    227
    Reputations:
    386
    есть страница на сайте, там форма. передаю пост-запросом данные в форму, всё нормально. но страница отвечает 302 Moved Temporary, и редиректа не происходит. как его осуществить?
     
  11. Fepsis

    Fepsis Elder - Старейшина

    Joined:
    17 Sep 2008
    Messages:
    803
    Likes Received:
    391
    Reputations:
    72
    Смотри в заголовках ответа сервера.. Если всё правильно, то должен быть заголовок Location:, парси его значение и переходи по ссылке...
    Если нет Location, скорее всего запрос сервером блочится, тогда думай, что не нравится серверу..
     
    1 person likes this.
  12. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,508
    Likes Received:
    389
    Reputations:
    101
    Code:
    use LWP::UserAgent;
    my $ua = LWP::UserAgent->new;
    push @{ $ua->requests_redirectable }, 'POST';
    
     
    1 person likes this.
  13. daniel_1024

    daniel_1024 Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    260
    Likes Received:
    227
    Reputations:
    386
    можно ли как-то сделать переменную расшаренной только для нескольких определенных потоков?
     
  14. Tw!m4

    Tw!m4 Elder - Старейшина

    Joined:
    15 Jun 2007
    Messages:
    187
    Likes Received:
    19
    Reputations:
    0
    Всем дорбое утро!

    Такая ситуация: есть csv файл, в котором оч много всего (мыла, директории где мыла хранятся, пароли, имя, фамилия и тд...). Мне нужно отсортировать только мыла, ну и можно ещё пароли в столбик такого типа:

    мыло:пароль
    мыло:пароль
    и тд и тп....

    Сорри, но нету времени просматривать все посты данной темы.

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

    Code:
    #!/usr/bin/perl -w
    use strict;
    
    system("clear");
    print "\t\t:::::Opening Files::::::\n\n";
    
    my $out = "/path/to/accounts.csv";
    my $in = "/path/to/accounts_out.txt";
    
    open (OUT, $out); 
    open (IN, ">>", $in);
    
    	while (my @linesout = <OUT>){
    	my $new =~ m//, @linesout; [COLOR=Red]#вот тут у меня траблы[/COLOR]
    	print IN "$new\n";
    	}
    
    close(OUT);
    
    close(IN);
    
    print "\t\t::::::Files Closed::::::\n\n";
     
  15. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,508
    Likes Received:
    389
    Reputations:
    101
    Code:
    my $new =~ m//, @linesout;
    
    И что вы хотите получить этой строкой?
     
  16. Tw!m4

    Tw!m4 Elder - Старейшина

    Joined:
    15 Jun 2007
    Messages:
    187
    Likes Received:
    19
    Reputations:
    0
    так в том всё и дело, что я не знаю, какие регекспы туда прописать, пробывал разные типа:

    Code:
    my $new =~ m/[a-z0-9]\.[a-z0-9]@[a-z]\.[a-z]/; #пробывал так, но хотя это может быть и полным бредом =\ (пока только мыло)
     
  17. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,508
    Likes Received:
    389
    Reputations:
    101
    Мыло еще выделить из строки надо, для этого юзайте split().
     
  18. Fepsis

    Fepsis Elder - Старейшина

    Joined:
    17 Sep 2008
    Messages:
    803
    Likes Received:
    391
    Reputations:
    72
    Tw!m4, лучше выложи кусок текста из которого нужно вытащить мыльники...
     
  19. Tw!m4

    Tw!m4 Elder - Старейшина

    Joined:
    15 Jun 2007
    Messages:
    187
    Likes Received:
    19
    Reputations:
    0
    вот так вот выглядят строчки файла

    user1@domain.com name.surame domain.com name surname D:\path\to\user1\ p4$$w0rd 0 1 Y 1 1 0 0 0 0 1 0 0 user2.user2@domain.com 25 RFC822 0 0 0 0 0 1 1 0 0 0 (06/22/2010 15:52) Wed Oct 25 09:24:47 2006 22 1470
    user3.user3@domain.com name.surname domain.com name surname D:\path\to\user2\ passw0rd 0 0 Y 1 1 0 0 0 0 1 0 0 25 RFC822 0 0 0 0 0 1 1 0 0 0 (12/01/2009 11:37) Wed Jun 08 17:51:03 2005 728 4311
     
  20. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,508
    Likes Received:
    389
    Reputations:
    101
    Ну типа этого
    Code:
    #!/usr/bin/perl -w
    
    use strict;
    use warnings;
    
    print "\t\t:::::Opening Files::::::\n\n";
    
    my $in = "/path/to/accounts.csv";
    my $out = "/path/to/accounts_out.txt";
    
    open my $IN, '<', $in or die "open() error: $!\n";
    open my $OUT, '>>', $out or die "open() error: $!\n";
    
    while (my $line = <$IN>) {
      chomp $line;
      my ($email, $passwd) = (split /\s+/, $line)[0, 6];
      print $OUT $email, ':', $passwd, "\n";
    }
    	
    close $OUT;
    close $IN;
    
    print "\t\t::::::Files Closed::::::\n\n";
    
     
    1 person likes this.
Loading...
Thread Status:
Not open for further replies.