Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi: Сети
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
dotamen
0 / 0 / 0
Регистрация: 09.06.2013
Сообщений: 3
1

Авторизация на сайте (https) synapse

09.06.2013, 15:37. Просмотров 2688. Ответов 5
Метки нет (Все метки)

Здравствуйте всем. Понимаю подобных тем была куча,но во всех,которые я просмотрел,был нерабочий код или вообще не было кода или объяснения. поэтому прошу объяснить в этой теме. Авторизация будет проходить на сайте mail.ru , и далее программа должна сохранить куки и переходить по ссылкам для пользователя. Понятно,что нужно учитывать https ,ну и использовать нужно synapse,вот,что у меня получилось:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient,synacode,httpsend,ssl_openssl;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
 
procedure TForm1.Button1Click(Sender: TObject);
var
httpsend: THTTPSend;
data:tstringstream;
begin
httpsend:=THTTPSend.Create;
HTTPSend.TargetHost:='auth.mail.ru';
httpsend.UserAgent:='Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0';
Data:=TStringstream.Create('');
Data.WriteString('Domain=mail.ru');
Data.WriteString('Login=xxx88dmitr');
Data.WriteString('Password=serg1988');
HTTPsend.Document.LoadFromstream(Data);
HTTPsend.HTTPMethod('POST', 'http://win.mail.ru/cgi-bin/auth');
//для проверки авторизации:
HttpGetText('https://e.mail.ru/cgi-bin/msglist',Memo1.Lines);
end;
end.
Программа ничего не делает,пробовал отследить запрос через снифер,там пусто. Помогите пожалуйста,объясните что нужно изменить,что добавить и почему не работает,заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2013, 15:37
Ответы с готовыми решениями:

HTTPS авторизация в Synapse
Всем привет, вообщем начал изучать Synapse и не проходить любая авторизация с...

Synapse: авторизация на сайте
Никак не получается авторизоваться на сайте qiwi.ru. Пробуй вот так var...

Авторизация на сайте HTTPS
Прошу помочь мне в следуещем вопросе. Есть сайт https//... есть логин и пароль....

Авторизация на сайте idhttp + https. 404?
Всем привет. Помогите пройти авторизацию на сайте через ssl, i/o handler -...

Трудности при работе Synapse с https
Добрый день, друзья! Есть следующий код: uses HTTPSend, SSL_OpenSSL; ...

5
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
09.06.2013, 21:00 2
1. метод LoadFromStream читает из стрима с текущей позиции записи-чтения, а она увеличивается после каждого вызова WriteString. В результате LoadFromStream ничего не прочитает из стрима в документ.
Перед загрузкой документа из стрима следует явно установить в нем позицию (св-во Position) на начало данных в стриме, в твоем случае нулевую.
0
dotamen
0 / 0 / 0
Регистрация: 09.06.2013
Сообщений: 3
09.06.2013, 21:16  [ТС] 3
Цитата Сообщение от mss Посмотреть сообщение
1. метод LoadFromStream читает из стрима с текущей позиции записи-чтения, а она увеличивается после каждого вызова WriteString. В результате LoadFromStream ничего не прочитает из стрима в документ.
Перед загрузкой документа из стрима следует явно установить в нем позицию (св-во Position) на начало данных в стриме, в твоем случае нулевую.
Добавил так:
Delphi
1
2
3
4
5
6
Data:=TStringstream.Create('');
Data.Position:=0;
Data.WriteString('Domain=mail.ru');
Data.WriteString('Login=xxx88dmitr');
Data.WriteString('Password=serg1988');
HTTPsend.Document.LoadFromstream(Data);
ничего не изменилось,по-моему даже запрос не идет.
0
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
10.06.2013, 08:43 4
Цитата Сообщение от dotamen Посмотреть сообщение
ничего не изменилось
Потому что ты невнимательно читаешь про то где должна быть установка позиции.
Ты ее вставил там где она нафих не нужна, потому что сразу после создания стрима позиция и так уже нулевая.
0
dotamen
0 / 0 / 0
Регистрация: 09.06.2013
Сообщений: 3
10.06.2013, 15:16  [ТС] 5
Цитата Сообщение от mss Посмотреть сообщение
Потому что ты невнимательно читаешь про то где должна быть установка позиции.
Ты ее вставил там где она нафих не нужна, потому что сразу после создания стрима позиция и так уже нулевая.
он даже запрос не делает,то есть результат нулевый,поэтому это не основная проблема.
0
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
10.06.2013, 19:17 6
Цитата Сообщение от dotamen Посмотреть сообщение
это не основная проблема
Проблемы нужно не копить, а решать в порядке их поступления)
Первую проблему устранил ? Приступай к устранению второй - проверяй что возвращает вызов HTTPMethod
0
10.06.2013, 19:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2013, 19:17

Как скрыть HTTPS запрос Synapse?
Здравствуйте. Отправляю на свой сервер GET запрос по HTTPS. Все проходит...

Synapse https исходный код страницы
Здравствуйте, проблема в том что не могу получить исходный код страницы,...

Synapse: Как спарсить страницу HTTPS?
Как спарсить страницу HTTPS, https://vk.com, например? С помощью HttpGetText не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru