Я пишу скрипт реги этого сайта на perle(это не важно). Отпраляю методом POST следующее: Code: 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ом всё в порядке, а это защита от авторегистраций.
Я точно не знаю, но там ajax запросы идут с установкой cookie, я плохо в js разбираюсь, поэтому и попросил посмотреть, в любом случае спасибо, только вот что с e-mail делать? Я отсылаю этот запрос, получаю JSESSIONID(идентификатор сессии) и location=Error2.jsp, иду с ним в liex.ru/Error2.jsp, он пишет мол плохой e-mail.
email из фалика цепляй или пропиши так: $email = "123";$email .= "@";$email .= "mail.ru"; @ - зарезервированный символ в perl (для массивов)
У меня идёт скрипт print $socket "POST/......"; Я $socket убрал и скопировал сюда, поэтому что в первом скрипте то и отправляется
Что я загадками говорю??))) Вот код: Code: 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; И код, использующий этот класс: Code: #!/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");
Code: #!/usr/bin/perl use strict; use warnings; use LWP::UserAgent; $\ = "\n"; my $url = 'http://www.liex.ru/'; my $ua = LWP::UserAgent->new ('agent' => 'Opera'); push @{$ua->requests_redirectable}, 'POST'; my $req = $ua->post ($url . 'userAction?action=registerUser', 'Host' => 'www.liex.ru', 'Referrer' => $url, 'Content_Type' => 'form-data', 'Content' => [ 'name' => 'Cewl K0d3r', 'login' => 'coder', 'email' => 'nick@yandex.ru', 'password' => 'mypassword', 'password2' => 'mypassword', 'wmz' => 'Z-кошель', 'defaultInterface' => 1, 'term' => 'on' ] ); print $req->content;