ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
Delphi - http post через winsock |

13.02.2010, 20:46
|
|
Новичок
Регистрация: 20.09.2009
Сообщений: 5
Провел на форуме: 3308
Репутация:
0
|
|
Delphi - http post через winsock
Всем привет, пишу программу для логина на сайте. Но проблема в двух вещах :
1. я очень плохо знаю винсок (кучу примеров скачивал но их очень трудно разобрать)
2. Нужно отправить сразу два http post запроса на два разных url (192.168.1.48/login.php и 192.168.1.48/auth.php, такая там мудренная система логина через ajax)
Пока получилось на локальном компьютере лишь это :
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
s:TSocket;
Ws:TWSAData;
addr:sockaddr_in;
se,re:ansistring;
login:string;
buf: array[1..5000] of Char;
begin
Memo1.Lines.Add('Подкл. WinSock');
if WSAStartup($101,Ws)=-1 then
begin
Memo1.Lines.Add('-Ошибка');
exit;
end
else
begin
Memo1.Lines.Add('-Ок');
end;
Memo1.Lines.Add('Создание сокета');
s:=socket(af_inet, sock_stream, 0);
if s=-1 then
begin
Memo1.Lines.Add('-Ошибка');
exit;
end
else
begin
Memo1.Lines.Add('-Ок');
end;
addr.sin_family:=af_inet;
addr.sin_port:=htons(80);
addr.sin_addr.S_addr:=inet_addr('127.0.0.1');
Memo1.Lines.Add('Установка связи с хостом');
if connect(s,addr,sizeof(addr))=-1 then
begin
Memo1.Lines.Add('-Ошибка');
closesocket(s);
exit;
end
else
begin
Memo1.Lines.Add('-Ок');
end;
login:='SAVEURL=&SERVER=1&account=111&pass=222&submit=%C2%EE%E9%F2%E8';
se:=memo3.text+#13#10+#13#10;
CopyMemory(@buf, PChar(se), Length(se));
send(s,buf,SizeOf(buf),0);
recv(s,buf,SizeOf(buf),0);
re:=buf;
Memo2.Text:=re;
closesocket(s);
end;
Как видно на скриншоте, сервер не понимает мой запрос. Запрос брал из firefox'а через аддон httpfox
|
|
|

13.02.2010, 20:51
|
|
Новичок
Регистрация: 20.09.2009
Сообщений: 5
Провел на форуме: 3308
Репутация:
0
|
|
Код:
POST /bl.php HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://127.0.0.1/bl.php
Cookie: collapseprefs=debug; rte-sidepanel=open; anonlogin=-1; member_id=1; hide_sidebar=1; gmpl_ogame=1+Pizoren90+60788e255743c74f1c32955de4be94b2+1;
Content-Type: application/x-www-form-urlencoded
Content-Length: 16
Это запрос который пытаюсь отправить
|
|
|

13.02.2010, 21:35
|
|
Новичок
Регистрация: 23.11.2009
Сообщений: 14
Провел на форуме: 178353
Репутация:
10
|
|
Fedcomp, запрос должен быть такой:
Код:
'POST /bl.php HTTP/1.1'#13#10+
'Host: 127.0.0.1'#13#10+
'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7'#13#10+
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'#13#10+
'Accept-Language: ru,en-us;q=0.7,en;q=0.3'#13#10+
'Accept-Encoding: gzip,deflate'#13#10+
'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7'#13#10+
'Keep-Alive: 300'#13#10+
'Connection: keep-alive'#13#10+
'Referer: http://127.0.0.1/bl.php'#13#10+
'Cookie: collapseprefs=debug; rte-sidepanel=open; anonlogin=-1; member_id=1; hide_sidebar=1; gmpl_ogame=1+Pizoren90+60788e255743c74f1c32955de4b e94b2+1;'#13#10+
'Content-Type: application/x-www-form-urlencoded'#13#10+
'Content-Length: 16'#13#10#13#10+
'SAVEURL=&SERVER=1&account=111&pass=222&submit=%C2%EE%E9%F2%E8'#13#10
ты не посылаешь часть, что выделена оранжевым, судя по твоему примеру. это и есть сам пост запрос.
плюс проверь все переносы строк и их количество.
'Content-Length: 16' - у тебя он не 16 равен, на самом деле
Последний раз редактировалось rikko; 13.02.2010 в 21:37..
|
|
|

13.02.2010, 22:02
|
|
Новичок
Регистрация: 20.09.2009
Сообщений: 5
Провел на форуме: 3308
Репутация:
0
|
|
Код:
POST /bl.php HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://127.0.0.1/bl.htm
Cookie: testcookie=1
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
Такой тоже не прокатывает.
Получается интересный результат - Веб сервер выдает мне вот это
Код:
HTTP/1.1 200 OK
Date: Sat, 13 Feb 2010 17:59:32 GMT
Server: Apache/2.2.13 (Win32) PHP/5.2.10
X-Powered-By: PHP/5.2.10
Content-Length: 42
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
Array
(
)
Array
(
[testcookie] => 1
)
HTTP/1.1 400 Bad Request
Date: Sat, 13 Feb 2010 17:59:32 GMT
Server: Apache/2.2.13 (Win32) PHP/5.2.10
Content-Length: 395
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
Request header field is missing ':' separator.<br />
<pre>
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /></pre>
</p>
</body></html>
<script type="text/javascript" src="jscripts/reflection.js"></script>
</head>
<body>
<iframe width="100%" height="15" scrolling="no" frameborder="0" marginwidth="0" marginheight="0"></iframe>
<div id="ipbwrapper"><div id="ipbwrapper2"><div id="ipbwrapper3">
<center><!--ipb.javascript.start-->
Выдает мне html от запрошенной страницы, а дальше выдает ещё и html главной. Не пойму в чем проблема?
|
|
|

13.02.2010, 22:24
|
|
Новичок
Регистрация: 23.11.2009
Сообщений: 14
Провел на форуме: 178353
Репутация:
10
|
|
как это может работать, если ты не шлешь данные POST? Ты хочешь сделать, чтоб работала прогрмма твоя или исследовать ответы сервера на неправильные запросы? не морочь любдя голову.
|
|
|

13.02.2010, 22:52
|
|
Новичок
Регистрация: 20.09.2009
Сообщений: 5
Провел на форуме: 3308
Репутация:
0
|
|
Ну для начала надо чтобы программа просто посылала post запрос на сервер, и получала ответ, а не плевалась.
Я не знаю откуда брать размер для Content-Length: 0
|
|
|

13.02.2010, 22:58
|
|
Постоянный
Регистрация: 12.05.2009
Сообщений: 395
Провел на форуме: 4761503
Репутация:
229
|
|
Сообщение от Fedcomp
Ну для начала надо чтобы программа просто посылала post запрос на сервер, и получала ответ, а не плевалась.
Я не знаю откуда брать размер для Content-Length: 0
Описание протокола "http" в руки! Ибо отправить то не знаю что -> глупо
Размер Content-Length -> число букв того после "Content-Length"
в данном случае буквы у нас эти:
SAVEURL=&SERVER=1&account=111&pass=222&submit=%C2% EE%E9%F2%E8
|
|
|

14.02.2010, 12:19
|
|
Новичок
Регистрация: 20.09.2009
Сообщений: 5
Провел на форуме: 3308
Репутация:
0
|
|
Так, действительно сглупил, забыл отправить post данные отправил только пакет)
Теперь проблема осталась только в том, что я получаю html от моего .php скрипта, а следом за ним html главной страницы (Причем http ответ только один, раньше их было 2, второй был 400 т.е ошибочный запрос)
Сам post запрос
Код:
POST /bl.php HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://127.0.0.1/bl.htm
Cookie: testcookie=1
Content-Type: application/x-www-form-urlencoded
Content-Length: 61
SAVEURL=&SERVER=1&account=111&pass=222&submit=%C2%EE%E9%F2%E8
Теперь он точный
Вот что получается

|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|