winsock delphi or C++ авторизация
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
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
If sBuff[i]<>';' then text:=text+sBuff[i] else Break;
End;
Result:=text;
End;
procedure Err(n:integer);
begin if n<>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)<>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)));
sendbuff := '';
sendbuff := 'GET / HTTP/1.1'+ #13#10 +
'Host:mail.ru'+ #13#10 +
'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 +
'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'+
'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 := '';
PostData := 'Login=ЛОГИН&Domain=mail.ru&Password=ПАРОЛЬ' ;
sendbuff := '';
sendbuff := 'POST /cgi-bin/HTTP/1.1'+ #13#10 +
'Host: auth.mail.ru'+ #13#10 +
'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 +
'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 +
'Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,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://mail.ru/'+ #13#10 +
'Cookie: '+CopyCookie('Mpopl',sBuff)+';'+CopyCookie('mrcu',sBuff)+';'+ #13#10 +
'Content-Type: application/x-www-form-urlencoded'+ #13#10 +
'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.
Подтолкните, где у меня ошибка?
|
|
|
RE: winsock delphi or C++ авторизация - 2009-11-07 20:06:43.260000
|
|
|
ghostonline
Сообщений: 228
Оценки: 0
Присоединился: 2008-12-17 08:34:55.816666
|
А че IdHttp не юзаешь? для таких целей проще же
|
|
|
RE: winsock delphi or C++ авторизация - 2009-11-07 20:21:01.736666
|
|
|
Newser
Сообщений: 6
Оценки: 0
Присоединился: 2009-11-07 19:33:14.870000
|
на индейцах я легкой автаризуюсь,но он медленный, я бы хотел изучить сокеты…
|
|
|
RE: winsock delphi or C++ авторизация - 2009-11-07 20:30:13.050000
|
|
|
ghostonline
Сообщений: 228
Оценки: 0
Присоединился: 2008-12-17 08:34:55.816666
|
Раз медленный, то делай мульти трэд, опять же на VCL дело нескольких минут ЗЫ Хотя я, большой разницы в скорости не заметил, а использую более сложные задачи, чем описанные тобой
|
|
|
RE: winsock delphi or C++ авторизация - 2009-11-07 20:53:48.826666
|
|
|
Newser
Сообщений: 6
Оценки: 0
Присоединился: 2009-11-07 19:33:14.870000
|
Все таки хочу соксы изучить не бросать же начатое. Хотелось бы, чтобы специалисты проконсультировали меня по данному вопросу, или наталкнули бы на ошибку.
|
|
|
RE: winsock delphi or C++ авторизация - 2009-11-07 21:01:18.640000
|
|
|
ghostonline
Сообщений: 228
Оценки: 0
Присоединился: 2008-12-17 08:34:55.816666
|
Ну знаешь что я тебе скажу. Каждой задаче свое решение. две недели ты уже потратил на изучение, потом будешь тратить на кодинг еще в два раза больше, чем нежели делать это же с помощью ООП. Иначе зачем вообще классы? В твоем случае я смотрю оптимальное решение именно то что я предложил. Я ничего не имею против винАпи и винСока, просто каждой задаче - свое решение. Ты 2 недели не можешь авторизоваться на Миртесен, а я для МирТесен за 5 дней написал полноценную многопоточную прогу, работает через антикапчу, твое утверждение что там капчи нет - неверное. Есть, когда получаешь бан по айпи. Ну, короче, думай сам. Твои дела - твои проблемы. ЗЫ Я кстати на основе вышу указанного класса создал собственный класс, с которым выполнение рутинных задач превратилось в минутное дело.
|
|
|
RE: winsock delphi or C++ авторизация - 2009-11-07 21:05:31.893333
|
|
|
Newser
Сообщений: 6
Оценки: 0
Присоединился: 2009-11-07 19:33:14.870000
|
Про каптчу я имел виду при авторизации.Дело в том, что для майла я тоже писал, бродилку по друзьям, многопоточную.Но сокеты тоже нужно изучать.На индейцах там два три параметра надо всего отправить.В данный момент я ничего не решаю, я просто решил изучить сокеты, нафига мне авторизовываться другими компонентами если я ими умею?Поэтому буду биться до конца.
|
|
|
RE: winsock delphi or C++ авторизация - 2009-11-07 21:10:03.540000
|
|
|
ghostonline
Сообщений: 228
Оценки: 0
Присоединился: 2008-12-17 08:34:55.816666
|
Ок quote:
ответ с post не совпадает со снифером В чем именно разница между хидерами броза и твоего клиента?
|
|
|
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
|
|
|
RE: winsock delphi or C++ авторизация - 2009-11-07 21:57:13.660000
|
|
|
ghostonline
Сообщений: 228
Оценки: 0
Присоединился: 2008-12-17 08:34:55.816666
|
Тут имхо дело не в сокетах
|
|
|
RE: winsock delphi or C++ авторизация - 2009-11-07 21:58:28.083333
|
|
|
Newser
Сообщений: 6
Оценки: 0
Присоединился: 2009-11-07 19:33:14.870000
|
а в чем?:)
|
|
|
RE: winsock delphi or C++ авторизация - 2009-11-07 22:06:37.966666
|
|
|
ghostonline
Сообщений: 228
Оценки: 0
Присоединился: 2008-12-17 08:34:55.816666
|
В неправильной отправке реквестов. Уж больно щас лень изучать авторизацию на мэйл.ру
|
|
|
|
|