Forum Webscript.Ru
Программирование => Perl => Тема начата: Kwazar от 05 Августа 2004, 10:16:24
-
Ниже кусок кода. Что нужно, что бы передать те же данные, но методом Post?
#!/usr/bin/perl
use Socket;
$AF_INET=2;
$SOCK_STREAM=1;
$protocol=(getprotobyname(\'tcp\'))[2];
$end="\\015\\012";
$site="www.site.com";# Адрес хоста без http://
$port=80;
$addr=(gethostbyname($site))[4];
$addrs=pack (\'S n a4 x8\', $AF_INET, $port, $addr);
$cur=\'/cgi/logon.asp?screenname=login&password=pass\';#имя файла на хосте Например /cgi-bin/cookie.cgi
{print "Content-Type: text/html\\n\\n";
if (!(socket(LOAD,$AF_INET,SOCK_STREAM,$protocol))){
print "Невозможно создать сокет!"; exit;}
if (!(connect(LOAD, $addrs))){print "Невозможно соединиться!"; exit;}
select(LOAD);
$|=1;
select(STDOUT);
print LOAD "GET $cur HTTP/1.0$end";
print LOAD "Content-Type: application/x-www-form-urlencoded$end";
print LOAD "Accept: text/html$end";
print LOAD "Accept: image/jpeg$end";
print LOAD "User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)$end";
print LOAD "Accept: image/gif$end";
print LOAD "Accept: image/x-xbitmap$end";
print LOAD "Referer: http://site.com/$end";
print LOAD "Accept: image/pjpeg$end";
print LOAD "Cookie: nik=uuu; passwd=e789201b865999990c17bf5bc9c15$end";
print LOAD "Host: $site$end";
print LOAD "Authorization: Basic $encoded$end";
print LOAD "$end$end";
@str=;
print @str;
close (LOAD);
}
Заранее благодарю
-
-----------------------------
POST $cur HTTP/1.0\\n
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*\\n
Referer: http://site.com/\\n
Accept-Language: ru\\n
Content-Type: application/x-www-form-urlencoded\\n
Proxy-Connection: Keep-Alive\\n
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\\n
Host: $site\\n
Content-Length: 30\\n
Pragma: no-cache\\n\\n
screenname=login&password=pass\\n\\n
-----------------------------
Так попробуй, только обрати внимание на то, что Content-Length должен равняться ровно тому количеству байт (именно байт), которое ты посылаешь. В данном случае это длинна строки "screenname=login&password=pass" (без символов конца строки).
Если вздумаешь файлы аплоадить, то там все гораздо сложнее...
-
Спасибо. Нет, файлы не нужны.
Достаточно и этого.
-
screenname=login&password=pass\\n\\n
Погорячился я. Доствточно и этого:
screenname=login&password=pass