Автор Тема: Socket + Post  (Прочитано 3088 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Kwazar

  • Философ
  • Постоялец
  • ***
  • Сообщений: 201
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.uhuhu.ru/
Socket + Post
« : 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);
}

Заранее благодарю
С уважением Сергей

Оффлайн Athathoth

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.ael.ru/_crush
Socket + Post
« Ответ #1 : 07 Августа 2004, 21:23:37 »
-----------------------------
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" (без символов конца строки).
Если вздумаешь файлы аплоадить, то там все гораздо сложнее...

Оффлайн Kwazar

  • Философ
  • Постоялец
  • ***
  • Сообщений: 201
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.uhuhu.ru/
Socket + Post
« Ответ #2 : 08 Августа 2004, 16:23:43 »
Спасибо. Нет, файлы не нужны.
Достаточно и этого.
С уважением Сергей

Оффлайн Athathoth

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 9
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.ael.ru/_crush
Socket + Post
« Ответ #3 : 10 Августа 2004, 18:01:37 »
Цитировать

screenname=login&password=pass\\n\\n


Погорячился я. Доствточно и этого:
screenname=login&password=pass

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28