Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Отправка POST запросов с помощью сокетов и получение ответа

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Отправка POST запросов с помощью сокетов и получение ответа
Имя
Сообщение << Старые топики   Новые топики >>
Отправка POST запросов с помощью сокетов и получение ответа - 2008-04-10 03:05:41.196666   
serber

Сообщений: 7
Оценки: 0
Присоединился: 2006-04-15 15:05:17
Необходимо сделать следующее: отправтиь на сервер с помощью сокетов параметры для авторизации на сайте. И в случае удачной авторизации, получить страницу (хтмл). Я делаю так, но почему то от сервера приходит только заголовок:

public string Login(string email, string pass) { IPHostEntry hostEntry = Dns.GetHostEntry(url); IPAddress address = hostEntry.AddressList[0]; IPEndPoint ipe = new IPEndPoint(address, 80); socket = new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp); try { socket.Connect(ipe); if (socket.Connected) { Console.WriteLine("Connected to " + ipe.ToString()); } else { Console.WriteLine("Can not connect..."); } } catch (SocketException ex) { Console.WriteLine(ex.Message); } string parameters = "success_url=&fail_url=&try_to_login=1&email=" + email + "&pass=" + pass; byte[] par = Encoding.ASCII.GetBytes(parameters); string request = "POST /login.php HTTP/1.0\r\n" + "Content-Length: " + par.Length + "\r\n" + "Host: " + url + "\r\n" + "Content-Type: application/x-www-form-urlencoded\r\n\r\n" + parameters; Byte[] bytesSent = Encoding.ASCII.GetBytes(request); Byte[] bytesReceived = new Byte[1024]; socket.Send(bytesSent, bytesSent.Length, 0); string page = ""; int bytes = 0; do { bytes = socket.Receive(bytesReceived, bytesReceived.Length, 0); page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes); } while (bytes &gt; 0); return page; }
Код работает, только от сервера приходит такой заголовок, а не сама страница. Как это можно исправить?
HTTP/1.1 302 Found
Server: nginx/0.5.35
Date: Wed, 09 Apr 2008 22:00:05 GMT
Content-Type: text/html; charset=windows-1251
Connection: close
X-Powered-By: PHP/5.2.0-8+etch10
Pragma: no-cache
Post #: 1
RE: Отправка POST запросов с помощью сокетов и получение ответа - 2008-04-10 09:38:30.133333   
oRb

Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
Вообще, вместе с 302 ответом должен приходить "Location: ".
Попробуй дописать в заголовки реферер и юзер-агент. Может поможет.
Post #: 2
RE: Отправка POST запросов с помощью сокетов и получение ответа - 2008-04-10 13:58:33.463333   
serber

Сообщений: 7
Оценки: 0
Присоединился: 2006-04-15 15:05:17
Приходит такой ответ:
HTTP/1.1 302 Found Server: nginx/0.5.35 Date: Thu, 10 Apr 2008 09:55:25 GMT Content-Type: text/html; charset=windows-1251 Connection: close X-Powered-By: PHP/5.2.0-8+etch10 Pragma: no-cache Cache-control: private, must-revalidate Set-Cookie: remixchk=5; expires=Fri, 10-Apr-2009 09:55:25 GMT; path=/; domain=.vkontakte.ru Set-Cookie: remixchk=5; expires=Fri, 10-Apr-2009 09:55:25 GMT; path=/; domain=.vkontakte.ru Set-Cookie: remixmid=***; expires=Fri, 10-Apr-2009 09:55:25 GMT; path=/; domain=.vkontakte.ru Set-Cookie: remixemail=***; expires=Fri, 10-Apr-2009 09:55:25 GMT; path=/; domain=.vkontakte.ru Set-Cookie: remixpass=***; expires=Fri, 10-Apr-2009 09:55:25 GMT; path=/; domain=.vkontakte.ru Set-Cookie: remixcookietest=deleted; expires=Wed, 11-Apr-2007 09:55:24 GMT; path=/; domain=.vkontakte.ru Location: /id**** Content-Length: 0
Вот только как получить страницу, указанную в Location? Отправить запрос GET?
Post #: 3
RE: Отправка POST запросов с помощью сокетов и получение ответа - 2008-04-10 14:40:42.170000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25

quote:

ORIGINAL: serber
Вот только как получить страницу, указанную в Location? Отправить запрос GET?

Ну а rfc на http почитать слабо? Их ведь не случайно придумали.
Post #: 4
RE: Отправка POST запросов с помощью сокетов и получение ответа - 2008-04-10 14:44:46.363333   
serber

Сообщений: 7
Оценки: 0
Присоединился: 2006-04-15 15:05:17
quote:

ORIGINAL: rgo
Ну а rfc на http почитать слабо? Их ведь не случайно придумали.


Первым делом прочитал.
Post #: 5
RE: Отправка POST запросов с помощью сокетов и получение ответа - 2008-04-10 19:50:50.823333   
oRb

Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
quote:

Вот только как получить страницу, указанную в Location? Отправить запрос GET?

дык просто в свойже запрос подставляй адрес, который тебе сервак выдал в поле Location.
Post #: 6
RE: Отправка POST запросов с помощью сокетов и получение ответа - 2008-04-10 21:36:09.446666   
serber

Сообщений: 7
Оценки: 0
Присоединился: 2006-04-15 15:05:17
quote:

дык просто в свойже запрос подставляй адрес, который тебе сервак выдал в поле Location


Так и делаю. Но Вконтакте такое не прокатывает. На других сайтах работает
Post #: 7
RE: Отправка POST запросов с помощью сокетов и получение ответа - 2008-04-10 21:42:31.680000   
oRb

Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
а ты не забыл куки на сервак передавать?
Post #: 8
RE: Отправка POST запросов с помощью сокетов и получение ответа - 2008-04-10 22:10:04.250000   
serber

Сообщений: 7
Оценки: 0
Присоединился: 2006-04-15 15:05:17
quote:

а ты не забыл куки на сервак передавать?


Оппа, забыл. Подскажите как это сделать.
Post #: 9
RE: Отправка POST запросов с помощью сокетов и получение ответа - 2008-04-11 10:15:07.493333   
oRb

Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
http://phpclub.ru/detail/article/http_request

Вот те линк, чтоб более менне разобратся в заголовках.

Полученные куки просто возвращаешь серваку.
Post #: 10
RE: Отправка POST запросов с помощью сокетов и получение ответа - 2008-04-11 17:27:53.120000   
necrostaz

Сообщений: 172
Оценки: 0
Присоединился: 2007-02-27 15:54:59.460000
quote:

Полученные куки просто возвращаешь серваку.


Только не забудь учесть expires, path и domain ))

И вообще пользуйся снифером, тогда таких вопросов возникать не будет.
Post #: 11
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Отправка POST запросов с помощью сокетов и получение ответа







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.