Привет, встал вопрос об авторизации на одноименном сервисе средствами Synapse, но не выходит, вероятно неправильно формирую запрос, опытные программисты подскажите как правильно составить запрос и выполнить вход на почтовый ящик
Код:
uses
HTTPSend, SSL_OpenSSL;
function KOI8R2ANSI(S: string): string;
var
Ansi_CODE, KOI8_CODE: string;
i: integer;
begin
KOI8_CODE := 'бвчздецъйклмнопртуфхжигюыэящшьасБВЧЗДЕЦЪЙКЛМНОПРТУФХЖИГЮЫЭЯЩШЬАС—Ј';
ANSI_CODE := 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ё';
Result := S;
for i := 1 to Length(Result) do
if Pos(Result[i], KOI8_CODE) > 0 then
Result[i] := ANSI_CODE[Pos(Result[i], KOI8_CODE)];
end;
function GetLocation(const headers:TStringList):string;
var i:integer;
begin
for I := 0 to headers.Count - 1 do
if pos('Location: ',headers[i])>0 then
begin
Result:=copy(headers[i],10,length(headers[i])-9);
break;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
HTTP: THTTPSend;
URLData: String;
begin
HTTP := THTTPSend.Create;
try
HTTP.Timeout := 60000;
//HTTP.ProxyHost := Form1.Edit8.Text;
//HTTP.ProxyPort := Form1.Edit9.Text;
//
URLData := 'Domain=mail.ru';
HTTP.Document.Write(Pointer(URLData)^, Length(URLData));
URLData := 'Password=***';
HTTP.Document.Write(Pointer(URLData)^, Length(URLData));
URLData := 'Login=***';
HTTP.Document.Write(Pointer(URLData)^, Length(URLData));
//
HTTP.MimeType := 'application/x-www-form-urlencoded';
//
Result := HTTP.HTTPMethod('POST', 'https://auth.mail.ru/cgi-bin/auth');
if http.ResultCode=302 then
begin
if pos('http://win.mail.ru/cgi-bin/login',GetLocation(http.Headers))<>0 then
begin
httpsend.Document.Clear;
httpsend.Headers.Clear;
http.HTTPMethod('get','http://win.mail.ru/cgi-bin/start?back=1');
form1.Memo1.Lines.LoadFromStream({KOI8R2ANSI(}http.Document{)});
form1.memo1.Lines.SaveToFile(extractfilepath(paramstr(0))+'test.html');
end
else
form1.Memo1.Lines.Add('Авторизация не удалась');
form1.Memo2.Lines.LoadFromStream({KOI8R2ANSI(}http.Document{)});
form1.memo2.Lines.SaveToFile(extractfilepath(paramstr(0))+'test2.html');
finally
HTTP.Free;
end;
end;