Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Регистрация Liex.ru на perl (https://forum.antichat.xyz/showthread.php?t=154870)

winflip 08.11.2009 13:51

Регистрация Liex.ru на perl
 
Я пишу скрипт реги этого сайта на perle(это не важно). Отпраляю методом POST следующее:
Код:

POST /userAction?action=registerUser HTTP/1.0
Host: www.liex.ru
Referer: http://www.liex.ru/Registration.jsp
User-Agent: liexAPI/0.9
Cookie: Referrer=14834; JSESSIONID=oy5n08f8r1uz;
Content-Type: multipart/form-data; boundary="Asrf456BGe4h"
Content-Length: 751
Connection: keep-alive
Keep-Alive: 300


--Asrf456BGe4h
Content-Disposition: form-data; name="name"

Gena
--Asrf456BGe4h
Content-Disposition: form-data; name="login"

testliex
--Asrf456BGe4h
Content-Disposition: form-data; name="email"

gena@yandex.ru
--Asrf456BGe4h
Content-Disposition: form-data; name="password"

123456543
--Asrf456BGe4h
Content-Disposition: form-data; name="password2"

123456543
--Asrf456BGe4h
Content-Disposition: form-data; name="wmz"

Z123456789012
--Asrf456BGe4h
Content-Disposition: form-data; name="defaultInterface"

1
--Asrf456BGe4h
Content-Disposition: form-data; name="Submit2_x"

12
--Asrf456BGe4h
Content-Disposition: form-data; name="Submit2_y"

5
--Asrf456BGe4h
Content-Disposition: form-data; name="term"

on
--Asrf456BGe4h--

Submit2_x(y) беру randomom, сервер возвращает ошибку(плохой e-mail), хотя при отправке через форму всё тип-топ. Если не сложно посмотрите что не так, и ещё там может какая защита стоит в js файле тоже гляньте)))Заранее благодарю.
http://www.liex.ru/Registration.jsp - регистрация, форма
http://www.liex.ru/js/validate.js - js файл
Кстати я предполагаю, что может быть с e-mailом всё в порядке, а это защита от авторегистраций.

Kaimi 08.11.2009 14:15

Нет там защиты

winflip 08.11.2009 14:26

Я точно не знаю, но там ajax запросы идут с установкой cookie, я плохо в js разбираюсь, поэтому и попросил посмотреть, в любом случае спасибо, только вот что с e-mail делать? Я отсылаю этот запрос, получаю JSESSIONID(идентификатор сессии) и location=Error2.jsp, иду с ним в liex.ru/Error2.jsp, он пишет мол плохой e-mail.

Pashkela 08.11.2009 14:43

email из фалика цепляй или пропиши так:

$email = "123";$email .= "@";$email .= "mail.ru";

@ - зарезервированный символ в perl (для массивов)

winflip 08.11.2009 14:49

Я в курсе, я в одинарные кавычки заключил.
$email = 'gena@yandex.ru';

winflip 08.11.2009 14:52

У меня идёт скрипт print $socket "POST/......";
Я $socket убрал и скопировал сюда, поэтому что в первом скрипте то и отправляется

winflip 08.11.2009 15:38

Что я загадками говорю??))) Вот код:
Код:

package liex::API;

use strict;
use Carp qw(croak carp);
use IO::Socket::INET;
use Encode qw(from_to);

our $VESRION = '0.9';
our @EXPORT = qw();
our @EXPORT_OK = qw();

sub reg {
        my ($class, %cnf) = @_;
        my $page;
        my %self = ('tech' => 0,
                                'cookie' => "");
        Carp::croak("Options to liex::API should be key/value pairs, not hash reference") if ref($_[1]) eq 'HASH';
        my $name = delete $cnf{'name'};
        my $username = delete $cnf{'username'};
        my $password = delete $cnf{'password'};
        my $e_mail = delete $cnf{'e_mail'};
        my $wmz = delete $cnf{'wmz'};
        my $webmaster = delete $cnf{'webmaster'} || 1;
        my $reflink = delete $cnf{'reflink'} || undef;
        $reflink =~ m/http\:\/\/(www\.)?liex\.ru\/([\d\w\_\-\.]+)/i;
        my $link = $2;
    if(!$link){
            $link= "";
    }
    my $socket = IO::Socket::INET->new("www.liex.ru:80");
    print $socket "GET /".$link." HTTP/1.0\n
                              Host: liex.ru\n
                              User-Agent: liexAPI/0.9\n
                              Accept: text/html\n
                                    Connection: close\n\n";
        while(my $get = <$socket>){
                $page .= $get;
        }
        if(is_tech($page)){
                $self{'tech'} = 1;
        } else {
                my %cookies = get_cookies($page);
                $socket = IO::Socket::INET->new("www.liex.ru:80");
                print %cookies;
                my $boundary = "Asrf456BGe4h";
                my $data = "\n";
                $data .= "--$boundary\n";
                $data .= "Content-Disposition: form-data; name=\"name\"\n\n";
                $data .= "$name\n";
                $data .= "--$boundary\n";
                $data .= "Content-Disposition: form-data; name=\"login\"\n\n";
                $data .= "$username\n";
                $data .= "--$boundary\n";
                $data .= "Content-Disposition: form-data; name=\"email\"\n\n";
                $data .= "$e_mail\n";
                $data .= "--$boundary\n";
                $data .= "Content-Disposition: form-data; name=\"password\"\n\n";
                $data .= "$password\n";
                $data .= "--$boundary\n";
                $data .= "Content-Disposition: form-data; name=\"password2\"\n\n";
                $data .= "$password\n";
                $data .= "--$boundary\n";
                $data .= "Content-Disposition: form-data; name=\"wmz\"\n\n";
                $data .= "$wmz\n";
                $data .= "--$boundary\n";
                $data .= "Content-Disposition: form-data; name=\"defaultInterface\"\n\n";
                $data .= "$webmaster\n";
                $data .= "--$boundary\n";
                $data .= "Content-Disposition: form-data; name=\"Submit2_x\"\n\n";
                $data .= int(rand(20)/1)."\n";
                $data .= "--$boundary\n";
                $data .= "Content-Disposition: form-data; name=\"Submit2_y\"\n\n";
                $data .= int(rand(25)/1)."\n";
                $data .= "--$boundary\n";
                $data .= "Content-Disposition: form-data; name=\"term\"\n\n";
                $data .= "on\n";
                $data .= "--$boundary--\n\n";
                $page = "";
                print $socket "POST /userAction?action=registerUser HTTP/1.0\n".
                                          "Host: www.liex.ru\n".
                                          "Referer: http://www.liex.ru/Registration.jsp\n".
                                          "User-Agent: liexAPI/0.9\n".
                                          "Cookie: Referrer=".$cookies{'Referral'}."; JSESSIONID=".$cookies{'JSESSIONID'}.";\n".
                                          "Content-Type: multipart/form-data; boundary=\"".$boundary."\"\n".
                                          "Content-Length: ".length($data)."\n".
                                          "Connection: keep-alive\n".
                                          "Keep-Alive: 300\n\n".$data;
                while(my $get = <$socket>){
                        $page .= $get;
                }
                if(is_tech($page)){
                        $self{'tech'} = 1;
                } else {
                        %cookies = get_cookies($page);
                        my $cookies;
                        foreach my $cookie(keys %cookies){
                                $cookies .= $cookie."=".$cookies{$cookie}."; ";
                        }
                        $self{'cookie'} = $cookies;
                }
        }
        my $self = bless(\%self, $class);
        return $self;
}

sub get_cookies {
        my $_ = $_[0];
        my %list = m/set-cookie:[\s]?([\w]+)=([\w]+)/ig;
        return %list;
}

sub is_tech {
        my $page = $_[0];
    from_to($page, 'cp1251', 'utf8');
    if($page =~ m/технические работы/i){
            return 1;
    } else {
            return 0;
    }
}
1;

И код, использующий этот класс:
Код:

#!/usr/bin/perl
print "Content-Type: text/html\n\n";
use CGI::Carp qw(fatalsToBrowser);
use strict;
use liex::API;
use CGI qw(:standard);
my $object = liex::API->reg(name => "Gena",
                                username => "testliex",
                                password => "123456543",
                                e_mail => 'gena@yandex.ru',
                                wmz => "Z123456789012",
                                webmaster => 1,
                                reflink => "http://liex.ru/winflip.htm");


winflip 08.11.2009 22:03

Что, никто не знает?? Я уже несколько форумов переспрашивал(((

krypt3r 08.11.2009 22:14

Код:

use LWP::UserAgent;

winflip 08.11.2009 22:25

Цитата:

use LWP::UserAgent;
А в чём разница?? В чём смысл???


Время: 07:30