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

winsock delphi or C++ авторизация

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

Зашли как: Guest
Все форумы >> [Первый вопрос] >> winsock delphi or C++ авторизация
Имя
Сообщение << Старые топики   Новые топики >>
winsock delphi or C++ авторизация - 2009-11-07 19:47:34.946666   
Newser

Сообщений: 6
Оценки: 0
Присоединился: 2009-11-07 19:33:14.870000
Всем привет, начал изучать сетевое программирование.Начал с winsock.Решил попробывать авторизовать на каком нибудь сайте.Сперва попробывал на "Мир тесен", так как, там нету каптчи, затем на "Майл.ру".Авторизация на них идет по алгоритму get/post/get.Первый гет вроде нормально проходит, а вот ответ с post не совпадает со снифером(((.Уже две недели мучаюсь не могу найти ответ в чем дело.
Вот мой пробный код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,winsock, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; Memo2: TMemo; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; sBuff:array [1..6000] of char; hold,told,mirtesen:string; implementation {$R *.dfm} function CopyCookie(s,sBuff:string):string; var text:string; i:integer; Begin text:=''; For i:=pos(s+'=',sBuff) to Length(sBuff) Do Begin &nbsp;&nbsp; If sBuff[i]&lt;&gt;';' then text:=text+sBuff[i] else Break; End; Result:=text; End; procedure Err(n:integer); begin if n&lt;&gt;0 then begin MessageBox(0,pchar('Error #'+inttostr(WSAGetLastError)),'Error',mb_ok); halt end end; procedure TForm1.Button1Click(Sender: TObject); var wData:WSAData; s:TSOCKET; addr:sockaddr_in; sendbuff:string; PostData:string; begin if WSAStartup(makeword(1,1),wData)&lt;&gt;0 then Begin ShowMessage('Ошибка exit; End; s:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); FillChar(addr, SizeOf(sockaddr_in), 0); addr.sin_family:=AF_Inet; addr.sin_port:=htons(80); addr.sin_addr.S_addr:=inet_addr('217.69.128.44'); Err(Connect(S,addr,SizeOf(TSockAddr))); &nbsp;&nbsp;&nbsp;&nbsp; sendbuff := ''; &nbsp;&nbsp;&nbsp;&nbsp; sendbuff := 'GET / HTTP/1.1'+ #13#10 + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Host:mail.ru'+ #13#10 + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1'+ #13#10 + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'+ #13#10 + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Accept-Language:ru,en-us;q=0.7,en;q=0.3'+ #13#10 + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Accept-Encoding:gzip,deflate'+ #13#10 + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Accept-Charset:windows-1251,utf-8;q=0.7,*;q=0.7'+ #13#10 + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Keep-Alive:300'+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Connection:keep-alive'+#13#10#13#10; send(s, sendbuff[1] , Length(sendbuff), 0); application.ProcessMessages; recv(s,sBuff,5000,0); application.ProcessMessages; Memo1.Text:=sBuff; s:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); Connect(S,addr,SizeOf(TSockAddr)); sendbuff:=''; application.ProcessMessages; PostData := ''; &nbsp;&nbsp;&nbsp;&nbsp; PostData := 'Login=ЛОГИН&amp;Domain=mail.ru&amp;Password=ПАРОЛЬ' ; &nbsp;&nbsp;&nbsp;&nbsp; sendbuff := ''; &nbsp;&nbsp;&nbsp;&nbsp; sendbuff := 'POST /cgi-bin/HTTP/1.1'+ #13#10 + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Host: auth.mail.ru'+ #13#10 + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.14) Gecko/20080404 AdCentriaIM/1.7 Firefox/2.0.0.14 WebMoney Advisor'+ #13#10 + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'+ #13#10 + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3'+ #13#10 + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Accept-Encoding: gzip,deflate'+ #13#10 + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7'+ #13#10 + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Keep-Alive: 300'+ #13#10 + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Connection: keep-alive'+ #13#10 + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Referer: http://mail.ru/'+ #13#10 + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Cookie: '+CopyCookie('Mpopl',sBuff)+';'+CopyCookie('mrcu',sBuff)+';'+ #13#10 + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Content-Type: application/x-www-form-urlencoded'+ #13#10 + &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Content-Length: ' + IntToStr(Length(PostData)) + #13#10#13#10 + PostData+#13#10+'Connection: close' + #13#10#13#10; send(s, sendbuff[1] , Length(sendbuff), 0); application.ProcessMessages; recv(s,sBuff,5000,0); application.ProcessMessages; Memo2.Text:=sBuff; Err(Shutdown(S,SD_Send)); Err(closesocket(s)); end; end.
Подтолкните, где у меня ошибка?
Post #: 1
RE: winsock delphi or C++ авторизация - 2009-11-07 20:06:43.260000   
ghostonline

Сообщений: 228
Оценки: 0
Присоединился: 2008-12-17 08:34:55.816666
А че IdHttp не юзаешь? для таких целей проще же
Post #: 2
RE: winsock delphi or C++ авторизация - 2009-11-07 20:21:01.736666   
Newser

Сообщений: 6
Оценки: 0
Присоединился: 2009-11-07 19:33:14.870000
на индейцах я легкой автаризуюсь,но он медленный, я бы хотел изучить сокеты…
Post #: 3
RE: winsock delphi or C++ авторизация - 2009-11-07 20:30:13.050000   
ghostonline

Сообщений: 228
Оценки: 0
Присоединился: 2008-12-17 08:34:55.816666
Раз медленный, то делай мульти трэд, опять же на VCL дело нескольких минут

ЗЫ Хотя я, большой разницы в скорости не заметил, а использую более сложные задачи, чем описанные тобой
Post #: 4
RE: winsock delphi or C++ авторизация - 2009-11-07 20:53:48.826666   
Newser

Сообщений: 6
Оценки: 0
Присоединился: 2009-11-07 19:33:14.870000
Все таки хочу соксы изучить не бросать же начатое.
Хотелось бы, чтобы специалисты проконсультировали меня по данному вопросу, или наталкнули бы на ошибку.
Post #: 5
RE: winsock delphi or C++ авторизация - 2009-11-07 21:01:18.640000   
ghostonline

Сообщений: 228
Оценки: 0
Присоединился: 2008-12-17 08:34:55.816666
Ну знаешь что я тебе скажу.
Каждой задаче свое решение.
две недели ты уже потратил на изучение, потом будешь тратить на кодинг еще в два раза больше, чем нежели делать это же с помощью ООП. Иначе зачем вообще классы?
В твоем случае я смотрю оптимальное решение именно то что я предложил.
Я ничего не имею против винАпи и винСока, просто каждой задаче - свое решение.
Ты 2 недели не можешь авторизоваться на Миртесен, а я для МирТесен за 5 дней написал полноценную многопоточную прогу,  работает через антикапчу, твое утверждение что там капчи нет - неверное. Есть, когда получаешь бан по айпи.
Ну, короче, думай сам.
Твои дела - твои проблемы.


ЗЫ Я кстати на основе вышу указанного класса создал собственный класс, с которым выполнение рутинных задач превратилось в минутное дело.
Post #: 6
RE: winsock delphi or C++ авторизация - 2009-11-07 21:05:31.893333   
Newser

Сообщений: 6
Оценки: 0
Присоединился: 2009-11-07 19:33:14.870000
Про каптчу я имел виду при авторизации.Дело в том, что для майла я тоже писал, бродилку по друзьям, многопоточную.Но сокеты тоже нужно изучать.На индейцах там два три параметра надо всего отправить.В данный момент я ничего не решаю, я просто решил изучить сокеты, нафига мне авторизовываться другими компонентами если я ими умею?Поэтому буду биться до конца.
Post #: 7
RE: winsock delphi or C++ авторизация - 2009-11-07 21:10:03.540000   
ghostonline

Сообщений: 228
Оценки: 0
Присоединился: 2008-12-17 08:34:55.816666
Ок
quote:

ответ с post не совпадает со снифером

В чем именно разница между хидерами броза и твоего клиента?
Post #: 8
RE: winsock delphi or C++ авторизация - 2009-11-07 21:35:02.470000   
Newser

Сообщений: 6
Оценки: 0
Присоединился: 2009-11-07 19:33:14.870000
Должно возвращаться:
Status=OK - 200 Server=nginx/0.7.62 Date=Sat, 07 Nov 2009 18:27:11 GMT Content-Type=text/html; charset=windows-1251 Connection=close Content-Encoding=gzip Set-Cookie=t=obLD1AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAABDAAwEtgcA; expires=Thu, 06 May 2010 18:27:11 GMT; path=/; domain=.mail.ru Mpop=1257618431:0305790e6b594d59190502190a1d00041c0d014f6a5d5e465e070508030a1e0a04041e55584a585e000e0203145c555e551f4243:larin1974@mail.ru:; expires=Fri, 05 Feb 2010 18:27:11 GMT; path=/; domain=.mail.ru Cache-Control=no-cache,no-store,must-revalidate Pragma=no-cache Expires=Fri, 07 Nov 2008 18:27:11 GMT Last-Modified=Sat, 07 Nov 2009 21:27:11 GMT Vary=Accept-Encoding Content-Length=535 X-Host=f287.mail.ru Возвращаеться:
HTTP/1.1 302 OK Date: Sat, 07 Nov 2009 18:34:36 GMT Server: Apache/1.3.27 (Unix) mru_xml/0.471 gorgona/2.1 mod_jk/1.2.4 mod_ruby/1.0.7 Ruby/1.6.8 mod_mrim/0.17 Connection: close Location: http://win.mail.ru/cgi-bin/auth Cache-Control: no-cache,no-store,must-revalidate Pragma: no-cache Expires: Fri, 07 Nov 2008 18:34:36 GMT Last-Modified: Sat, 07 Nov 2009 21:34:36 GMT Content-Length: 44 Content-Type: text/html
Post #: 9
RE: winsock delphi or C++ авторизация - 2009-11-07 21:57:13.660000   
ghostonline

Сообщений: 228
Оценки: 0
Присоединился: 2008-12-17 08:34:55.816666
Тут имхо дело не в сокетах
Post #: 10
RE: winsock delphi or C++ авторизация - 2009-11-07 21:58:28.083333   
Newser

Сообщений: 6
Оценки: 0
Присоединился: 2009-11-07 19:33:14.870000
а в чем?:)
Post #: 11
RE: winsock delphi or C++ авторизация - 2009-11-07 22:06:37.966666   
ghostonline

Сообщений: 228
Оценки: 0
Присоединился: 2008-12-17 08:34:55.816666
В неправильной отправке реквестов.
Уж больно щас лень изучать авторизацию на мэйл.ру
Post #: 12
Страниц:  [1]
Все форумы >> [Первый вопрос] >> winsock delphi or C++ авторизация







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

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