На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Соблюдайте общие правила форума
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Указывайте точные версии Delphi и используемых сетевых библиотек.

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

Внимание:
попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Krid, user posted image Rouse_

Модераторы: Krid, Rouse_
  
> Где косяк? , Отправка данных POST (https)
    Хочу заказать детализацию МегаФона через прогу.
    Ссылка на сайт: http://lk.megafon.ru
    Логиниться научился :)
    ExpandedWrap disabled
            Params.Clear;
            Params.Add('CSRF=специальный_идентификатор_генерируемый_сайтом'));
            Params.Add('j_username='+Login);
            Params.Add('j_password='+Password);
            HTTPPost(http, 'https://lk.megafon.ru/dologin/', Params)

    А вот отправку данных для получения детализации - НИКАК!!!!
    ExpandedWrap disabled
          Params.Clear;
          Params.Add('SRTY_ID=51030003');
          Params.Add('START_DATE=01.07.2014 00:00:00');
          Params.Add('END_DATE=17.07.2014 23:32:16');
          Params.Add('REPORT_START=01.07.2014 00:00:00');
          Params.Add('REPORT_END=17.07.2014 23:32:16');
          Params.Add('DLV_METHOD=2');
          Params.Add('SPTP_ID=3');
          Params.Add('RECIPIENT='+Email);
          Params.Add('SRDT_ID='+IntToStr(Format));
          if MakeZip then S := '2' else S := '';
          Params.Add('COMPRESS_TYPE='+S);
          Params.Add('COMPRESS_ZIP='+ZipPwd);
          Params.Add('P_UPD_DELIVERY=');  // 1, если надо обновить e-mail (т.е. установить его по умолчанию)
          if SMS then S := 'Y' else S := '';
          Params.Add('P_SMS_NOTE='+S);
          Params.Add('SUBS_ID_MULTI=');
          Params.Add('SMM='+Login);
          Params.Add('SUBS_IDS=3140968');  // Х/з что это
          Params.Add('PERSONAL_FLAG=0');
          Params.Add('CODE_PERIOD=0');
          Params.Add('YEAR_PERIOD=');
          Params.Add('SUBS_MSISDNS_ALL=0');
          HTTPPost(http, 'https://'+http.Host+'/SCWWW/CALLS_MULTISUBS_ORDER_ACTION', Params);

    Чую подвох в том, что /SCWWW/CALLS_MULTISUBS_ORDER_ACTION - это не тот адрес... хотя Live HTTP Headers показывает именно его!!!

    Вот HTML перед отправкой...
    ExpandedWrap disabled
      <form onsubmit="return cpOnSubmitForm(this,1);" id="CALLS_ORDER_CONFIRM" name="CALLS_ORDER_CONFIRM" method="POST" action="CALLS_MULTISUBS_ORDER_ACTION">
      <div class="heading">Подтверждение:</div>
      <div class="group-info"><div class="top-left-inf"></div><div class="top-right-inf"></div><div class="inside-inf">
      <div>Вы хотите заказать детализацию вызовов за период с 01.07.2014 по 18.07.2014 включительно.</div>
      <div>Доставить по электронной почте alt.a@mail.ru в формате HTML.</div>
      <div>Для абонентов:<br>
      <ul class="list-info">
      <li>9277210000</li>
      </ul>
      </div>
      <div>Перед отправкой отчет будет помещен в архив.</div>
      </div><div class="bottom-left-inf"></div><div class="bottom-right-inf"></div></div>
      <input id="SRTY_ID" name="SRTY_ID" type="hidden" value="51030003">
      <input name="START_DATE" type="hidden" value="01.07.2014 00:00:00">
      <input name="END_DATE" type="hidden" value="18.07.2014 00:32:03">
      <input name="REPORT_START" type="hidden" value="01.07.2014 00:00:00">
      <input name="REPORT_END" type="hidden" value="18.07.2014 00:32:03">
      <input name="DLV_METHOD" type="hidden" value="2">
      <input name="SPTP_ID" type="hidden" value="3">
      <input name="RECIPIENT" type="hidden" value="alt.a@mail.ru">
      <input name="SRDT_ID" type="hidden" value="0">
      <input name="COMPRESS_TYPE" type="hidden" value="2">
      <input name="COMPRESS_ZIP" type="hidden" value="">
      <input name="P_UPD_DELIVERY" type="hidden" value="">
      <input name="P_SMS_NOTE" type="hidden" value="">
      <input name="SUBS_ID_MULTI" type="hidden" value="">
      <input name="SMM" type="hidden" value="9277210000">
      <input name="SUBS_IDS" type="hidden" value="3140968">
      <input name="PERSONAL_FLAG" type="hidden" value="0">
      <input name="CODE_PERIOD" type="hidden" value="0">
      <input name="YEAR_PERIOD" type="hidden" value="">
      <input name="SUBS_MSISDNS_ALL" type="hidden" value="0">
      <table border="0" cellpadding="0" cellspacing="0" class="tbl_width">
      <tbody><tr>
      <td align="left">
      <input xmlns:xalan="http://xml.apache.org/xalan" class="button_back" onmouseover="$(this).addClass('button_back-hover')" onmouseout="$(this).removeClass('button_back-hover')" value="Назад" type="button" onclick="cpPsixRequestHistory('CALLS_ORDER_FORM');" style=""></td><td align="right">
      <input xmlns:xalan="http://xml.apache.org/xalan" class="button_forward" onmouseover="$(this).addClass('button_forward-hover')" onmouseout="$(this).removeClass('button_forward-hover')" value="Заказать" type="submit" onclick="return true;" style=""></td>
      </tr>
      </tbody></table>
      <div align="left"></div>
      </form>


    Вот заголовки (может, я TIdHTTP неправильно инициализирую...):
    ExpandedWrap disabled
      {$APPTYPE CONSOLE}
      uses Windows, SysUtils, DateUtils, Classes, IdHTTP, IdSSLOpenSSL, IdSocks, IdCookieManager, AC;
       
      var
        MegafonCallsDetailsMsg: String;
        http: TIdHTTP;
        HTTPPage: String;
        HTTPResCode: Integer;
        HTTPResMsg: String;
        BeforeCaptchaProc: procedure(const Login: String);
        CaptchaAttempts: Integer = 5;
        LastCaptchaId: String;
        AntiGateAPIKey: String;
       
      const
        SGLink = 'https://lk.megafon.ru/';
        mdfPDF = 7;   // Результат в PDF
        mdfHTML = 0;  // Результат в HTML
        mdfXLS = 5;   // Результат в XLS
       
      procedure HTTPInitialize(var http: TIdHTTP);
      begin
        http := TIdHTTP.Create(nil);
        http.HandleRedirects := True;
        http.HTTPOptions := [hoForceEncodeParams];
        with http.Request do
        begin
          Accept := 'text/html, */*';
      //    AcceptEncoding := 'gzip, deflate, sdch';
          AcceptLanguage := 'ru';
          AcceptCharSet := 'windows-1251, utf-8';
          ContentType := 'application/x-www-form-urlencoded';
          UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; YPC 3.0.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)';
      //    UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36';
          CacheControl := 'no-cache';
          Connection := 'keep-alive';
          Referer := SGLink
        end;
        http.IOHandler := TIdSSLIOHandlerSocket.Create(http);
        with (http.IOHandler as TIdSSLIOHandlerSocket) do
        begin
          SocksInfo := TIdSocksInfo.Create(http);
          SSLOptions.Method := sslvTLSv1
        end;
        http.CookieManager := TIdCookieManager.Create(http)
      end;
       
      function HTTPGet(var http: TIdHTTP; const Link: String): Boolean;
      begin
        if http = nil then HTTPInitialize(http);
        try
          HTTPPage := '';
          HTTPPage := http.Get(Link);
          HTTPResMsg := http.ResponseText
        except
          on E: Exception do HTTPResMsg := E.Message
        end;
        HTTPResCode := http.ResponseCode;
        Result := (HTTPResCode = 200);
        if Result then http.Request.Referer := Link
      end;
       
      function HTTPPost(var http: TIdHTTP; const Link: String; Params: TStrings): Boolean;
      begin
        if http = nil then HTTPInitialize(http);
        try
          HTTPPage := '';
          HTTPPage := http.Post(Link, Params);
          HTTPResMsg := http.ResponseText
        except
          on E: Exception do HTTPResMsg := E.Message
        end;
        HTTPResCode := http.ResponseCode;
        Result := (HTTPResCode = 200);
        if Result then http.Request.Referer := Link
      end;
       
      procedure HTTPFree(var http: TIdHTTP);
      begin
        FreeAndNil(http)
      end;

    Please, help!!!

    Добавлено
    Я уже измучался танцевать. И так, и сяк - ничего не получается!!! :wall:
      Джинкс, оформи свои проблемы через Личный Кабинет.
      Лично мне программирование ради программирования всегда кажется извращением. Без сладострастия и совокупления етс...
        Это как раз-таки не программирование ради программирования.
        Мне периодически нужно заказывать детализацию сразу с 6 номеров.
        И я уже устал каждый поочерёдно заходить в личный кабинет по 6 раз...
        1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0.0708 ]   [ 15 queries used ]   [ Generated: 20.09.26, 18:02 GMT ]