Delphi - Проблемы с ADVFN - PullRequest
0 голосов
/ 01 мая 2020

Использование Delphi 10.3 с Indy Im пытается войти в ADVFN. Я настроил учетную запись в ADVFN и отследил сетевой трафик c с помощью Firefox Debugger et c.

Я пробовал несколько примеров IdHTTP, но все еще безуспешно.

Любой приветствуется помощь.

Я пытаюсь получить список лучших гейнеров и заполнить памятку возвращенным необработанным html кодом.

// get cookies first...
IdHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0';

LString := IdHTTP1.Get('https://uk.advfn.com');


// now submit the webform...
Params := TStringList.Create;
try
  Params.Add('redirect_url=aHR0cHM6Ly91ay5hZHZmbi5jb20=');
  Params.Add('site=uk');
  Params.Add('login_username=MYUSERNAME');
  Params.Add('login_password=MYPASSWORD');

  IdHTTP1.Post('https://uk.advfn.com', Params);

  LString := IdHTTP1.Get('https://uk.advfn.com/insights/toplist/london/percentage-gainer/price');

  Memo1.Lines.Text := LString;
finally
  Params.Free;
end;

1 Ответ

0 голосов
/ 02 мая 2020

Вы POST отправляете свой запрос на вход по неверному URL.

Веб-форма HTML, расположенная на https://uk.advfn.com, которую вы пытаетесь на самом деле отправлять на https://secure.advfn.com/login/secure, а не на https://uk.advfn.com как вы кодировали:

<form action="https://secure.advfn.com/login/secure" id="login_form" name="login_form" method="POST" target="">
IdHTTP1.Post('https://secure.advfn.com/login/secure', Params);

Также в этой веб-форме есть 5-е <input> поле, которое вы не отправляете:

<input  class="button"  tabindex="3" type="submit"   value="Log In" id="login_submit">
Params.Add('login_submit=Log In');

При отправке веб-формы вы ДОЛЖНЫ отправлять каждое непустое <input> значение в соответствии со спецификациями HTML.

Наконец, при отправке веб-формы для аутентификации на основе веб-интерфейса только Чтобы узнать, был ли вход успешным, проанализируйте ответ HTML, чтобы увидеть, содержит ли он то, что вы ожидаете. В отличие от HTTP-аутентификации, в аутентификации на основе HTML нет специальных кодов ответов. Прежде чем отправлять запрос GET на https://uk.advfn.com/insights/toplist/london/percentage-gainer/price.

, убедитесь, что ваш логин действительно успешен.
...