eLWAux
23.11.2008, 15:10
решил для себя написать (т.е. попрактиковаться) загрузку фотки вконтакте.
тут http://vkontakte.ru/profileEdit.php?page=photo изменил картинку, перехватил запрос
POST http://cs383.vkontakte.ru/upload.php?act=profile&mid=мой_ід&hash=мой_хеш&rhash=мой_хеш2
Host: cs383.vkontakte.ru
User-Agent: Mozilla/5.0
Keep-Alive: 300
Connection: keep-alive
Referer: http://vkontakte.ru/profileEdit.php?page=photo
Cookie: remixlang=0; remixchk=5; remixmid=мой_ід; remixemail=мило; remixpass=пасс; remixsid=сид
Content-Type: multipart/form-data; boundary=---------------------------241791819029657
Content-Length: 26635
и то что єсть в самом пост запросе:
-----------------------------241791819029657
Content-Disposition: form-data; name="subm"
1
-----------------------------241791819029657
Content-Disposition: form-data; name="photo"; filename="pic.gif"
Content-Type: image/gif
GIF89ad
я грузик картинку pic.gif и в конце поста, я так понимаю, должна бить єта картика, тоесть вместо GIF89ad должен бить послин бин.текст картинки
написал код:
use IO::Socket;
system('cls');
sub readFile {
#open myFILE, "<$_[0]" or die $!;
#while (<myFILE>) { chomp; $res.=$_; }
#return $res;
#close myFILE;
binmode FH;
binmode STDOUT;
open FH, $_[0];
return <FH>;
close FH;
}
$sock = IO::Socket::INET->new(Proto => "tcp",
PeerAddr => "cs383.vkontakte.ru",
PeerPort => "80",
Timeout=> 10) || die "$socket";
print 'conect!';
my $data =
"-----------------------------12052273501150\n".
"Content-Disposition: form-data; name=\"subm\"\n\n".
"1\n".
"-----------------------------12052273501150\n".
"Content-Disposition: form-data; name=\"photo\"; filename=\"0000zwx9.gif\"\n".
"Content-Type: image/gif\n".
readFile("0000zwx9.gif")."\n".
"-----------------------------12052273501150--";
my $re =
"POST http://cs383.vkontakte.ru/upload.php?act=profile&mid=ід&hash=хеш&rhash=хеш2 HTTP/1.1\n".
"Host: cs383.vkontakte.ru\n".
"User-Agent: Mozilla/4.0\n".
"Referer: http://vkontakte.ru/profileEdit.php?page=photo&m=2\n".
"Cookie: remixlang=0; remixchk=5; remixmid=ід; remixemail=мило; remixpass=пас; remixsid=сид\n".
"Connection: keep-alive\n".
"Content-Type: multipart/form-data; boundary=---------------------------12052273501150\n".
"Content-Length: ".length($data)."\n\n".$data;
print $sock $re; print 'send!';
read($sock,my $answ,100);
close($sock);
ответ принимает,.. но иду на сайт контакта а там картинка прежняя ;(
подскажите мне мою ошибку)
тут http://vkontakte.ru/profileEdit.php?page=photo изменил картинку, перехватил запрос
POST http://cs383.vkontakte.ru/upload.php?act=profile&mid=мой_ід&hash=мой_хеш&rhash=мой_хеш2
Host: cs383.vkontakte.ru
User-Agent: Mozilla/5.0
Keep-Alive: 300
Connection: keep-alive
Referer: http://vkontakte.ru/profileEdit.php?page=photo
Cookie: remixlang=0; remixchk=5; remixmid=мой_ід; remixemail=мило; remixpass=пасс; remixsid=сид
Content-Type: multipart/form-data; boundary=---------------------------241791819029657
Content-Length: 26635
и то что єсть в самом пост запросе:
-----------------------------241791819029657
Content-Disposition: form-data; name="subm"
1
-----------------------------241791819029657
Content-Disposition: form-data; name="photo"; filename="pic.gif"
Content-Type: image/gif
GIF89ad
я грузик картинку pic.gif и в конце поста, я так понимаю, должна бить єта картика, тоесть вместо GIF89ad должен бить послин бин.текст картинки
написал код:
use IO::Socket;
system('cls');
sub readFile {
#open myFILE, "<$_[0]" or die $!;
#while (<myFILE>) { chomp; $res.=$_; }
#return $res;
#close myFILE;
binmode FH;
binmode STDOUT;
open FH, $_[0];
return <FH>;
close FH;
}
$sock = IO::Socket::INET->new(Proto => "tcp",
PeerAddr => "cs383.vkontakte.ru",
PeerPort => "80",
Timeout=> 10) || die "$socket";
print 'conect!';
my $data =
"-----------------------------12052273501150\n".
"Content-Disposition: form-data; name=\"subm\"\n\n".
"1\n".
"-----------------------------12052273501150\n".
"Content-Disposition: form-data; name=\"photo\"; filename=\"0000zwx9.gif\"\n".
"Content-Type: image/gif\n".
readFile("0000zwx9.gif")."\n".
"-----------------------------12052273501150--";
my $re =
"POST http://cs383.vkontakte.ru/upload.php?act=profile&mid=ід&hash=хеш&rhash=хеш2 HTTP/1.1\n".
"Host: cs383.vkontakte.ru\n".
"User-Agent: Mozilla/4.0\n".
"Referer: http://vkontakte.ru/profileEdit.php?page=photo&m=2\n".
"Cookie: remixlang=0; remixchk=5; remixmid=ід; remixemail=мило; remixpass=пас; remixsid=сид\n".
"Connection: keep-alive\n".
"Content-Type: multipart/form-data; boundary=---------------------------12052273501150\n".
"Content-Length: ".length($data)."\n\n".$data;
print $sock $re; print 'send!';
read($sock,my $answ,100);
close($sock);
ответ принимает,.. но иду на сайт контакта а там картинка прежняя ;(
подскажите мне мою ошибку)