Страница 1 из 2

Взаимодействие с сайтом (https://)

СообщениеДобавлено: 13.11.2012 09:28:26
bocha_xp
Как можно заполнить поле для ввода на некотором сайте..(https://)? страница максимально простая, несколько предложений текста, и поле для ввода.. хочу автоматизировать ввод данных в это поле, если можно, то без использования браузера, и получить ответ от сервера (следующая страница, содержащая инфу по введенным данным, открывающаяся в браузере после нажатия Enter), и иметь возможность обработать эту страницу (текст страницы), чтобы выделив нужную инфу (поиск нужного слова на странице например), сохранить ее... (записать в файл .txt)
можно ли это сделать с помощью PSP (я так понял это библиотека к Lazarus) или нужен Synapse (для Lazarus подойдет?)? или что то еще...

всю ночь читал про Lazarus.. больше не читается.. и пальцам печатать уже тяжело... библиотеку еще не качал, Lazarus тоже.. если это возможно с помощью Lazarus, то закачаю и попробую...

помогите пожалуйста.. если можно с примером.. для примера можно использовать упрощенную мобильную версию сайта m.mail.ru (правда там еще есть поле с выпадающим списком, mail.ru, inbox.ru...)

http://m.mail.ru/cgi-bin/login?noclear= ... %2ffolders

если не сложно напишите рабочий текст проги, логин пароль сам вставлю.. плюс организуйте поиск какого нибудь слова на странице... или хотябы подскажите как отправить запрос, заполнив нужные поля для ввода, и как обработать страницу.. (кстати, что делать с https? есть для него что нибудь в библиотеках? если ниче нельзя поделать, то подскажите можно ли применить С++ Webtoolkit для моей задачи? там вроде поддерживалось https) я запарился искать

спасибо... (а я пока подремаю)

Re: Взаимодействие с сайтом (https://)

СообщениеДобавлено: 13.11.2012 10:23:31
dunin
bocha_xp писал(а):...если не сложно напишите рабочий текст проги, логин пароль сам вставлю.. плюс организуйте поиск какого нибудь слова на странице... ...

Вам в тематический раздел viewforum.php?f=43

Re: Взаимодействие с сайтом (https://)

СообщениеДобавлено: 13.11.2012 10:54:51
vada
Код: Выделить всё
https://<имя сайта>/<имя страницы>?<имя поля>=<ваше значение>

Re: Взаимодействие с сайтом (https://)

СообщениеДобавлено: 13.11.2012 15:29:44
debi12345
WEB-робот для режима POST (с использованием SYNAPSE: http://www.ararat.cz/synapse/doku.php/start)
Код: Выделить всё
program tasix_check;

{$mode objfpc}

uses
  {$ifndef windows}cthreads,{$endif}
  SysUtils // sleep
,Classes // tstringlist
,httpsend
,synacode // EncodeURLElement
,synautil // writestrtostream
,regexpr
;

const
  check_url  = 'example.uz:80/index.cgi';
  query_type = '1'; // the "show ip bgp" mode
  arg_value  = ''; // empty address filter
  maxretries = 3;

type
  texitcode = (SUCCESS = 0, FAILED = 1, NO_DATA = 2);

var
  i: integer;
  resultdata, currdata : TStringList;
  http: thttpsend;
  httpresult: boolean;
  retriescnt: integer;
  exit_code: texitcode;

  function is_ipaddr(const avalue: string): boolean;
  begin
    result:= execregexpr('[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}',avalue);
  end;

begin

  http:= thttpsend.create;
  exit_code:= FAILED;
  retriescnt:= 1; 

  try
    resultdata:= TStringList.create;
    currdata:= TStringList.create;
    HTTP.UserAgent := 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.4)'+
                   'Gecko/20100611 Firefox/3.6.4';
    HTTP.Protocol:= '1.1';
    HTTP.Timeout:= 45000; // 45 seconds
    HTTP.MimeType :='application/x-www-form-urlencoded';   
    writestrtostream(HTTP.Document,'query='+EncodeURLElement(query_type)+'&'+'arg='+EncodeURLElement(arg_value)); // synauitil
    retriescnt:= 0;
    httpresult:= HTTP.HTTPMethod('POST', check_url);
    while (not httpresult) and (retriescnt < maxretries) do begin
      sleep(500*retriescnt);
      httpresult:= HTTP.HTTPMethod('POST', check_url);
      inc(retriescnt);
    end;

    case HTTP.Resultcode of
      100..299: exit_code:= SUCCESS; //informational, success
      300..399: exit_code:= FAILED; //redirection. Not implemented, but could be.
      400..499: exit_code:= FAILED; //client error; 404 not found etc
      500..599: exit_code:= FAILED; //internal server error
      else exit_code:= FAILED; //unknown code
    end;

    if exit_code = SUCCESS then begin
      ResultData.LoadFromStream(HTTP.Document);
      if resultdata.count = 0 then begin
        exit_code:= NO_DATA;
      end else begin
        for i:=0 to resultdata.count-1 do begin
          resultdata[i]:= replaceregexpr('^[*>i \t]+',resultdata[i],'',false);
          splitregexpr('[ \t]+',resultdata[i],currdata);
          if currdata.count >= 2 then begin
            if is_ipaddr(currdata[0]) and is_ipaddr(currdata[1]) then writeln(currdata[0]);
          end;
        end;
      end;
    end;
   
  finally
    HTTP.Free;
    currdata.free;
    resultdata.free;
  end;

  halt(integer(exit_code));
end.

Re: Взаимодействие с сайтом (https://)

СообщениеДобавлено: 14.11.2012 11:06:00
bocha_xp
спасибо за примеры.. изучаю...

Re: Взаимодействие с сайтом (https://)

СообщениеДобавлено: 16.11.2012 04:48:43
bocha_xp
dunin писал(а):Вам в тематический раздел viewforum.php?f=43

мне не нужно готовое решение именно к моей задаче, мне нужен пример, с подобными условиями, отправить запрос, получить ответ и т.п. (общий пример, а не чисто для меня).. я хочу сам научиться... спасибо

Re: Взаимодействие с сайтом (https://)

СообщениеДобавлено: 17.11.2012 05:29:36
bocha_xp
с http есть немного движухи.. но с https ваще ниче не получается... есть что то в библиотеках для работы с https?

Re: Взаимодействие с сайтом (https://)

СообщениеДобавлено: 17.11.2012 08:47:27
Ichthyander
А Вы устанвливали библиотеку OpenSSL? http://slproweb.com/products/Win32OpenSSL.html Без это не будет работать https
Можно установить или просто кинуть библиотеку в папку с программой

Re: Взаимодействие с сайтом (https://)

СообщениеДобавлено: 17.11.2012 10:53:48
bocha_xp
Ichthyander писал(а):А Вы устанвливали библиотеку OpenSSL? http://slproweb.com/products/Win32OpenSSL.html Без это не будет работать httpsМожно установить или просто кинуть библиотеку в папку с программой

по вашей ссылке только установочные проги, а не отдельные библиотеки.. что куда мне кидать.. почему нельзя было сразу все включить в Lazarus.. искать теперь все по кускам.. особенно если не знаешь что искать...
короче я приписал в проге uses ssl_openssl, в папку к проекту добавил libeay32.dll, ssleay32.dll, ssl_openssl.pas, ssl_openssl_lib.pas, по вашей ссылке установил win64openssl light 1.0.1
что еще не хватает я не знаю.. терпения уже не осталось... с http могу получить код страницы (html разметка), а с https выдает HTTP.Resultcode=500 (http - 200)

Добавлено спустя 50 минут 14 секунд:
ооо .. кажись заработало.. Microsoft Visual C++ redistributable было несколько штук и все старые.. может из-за этого.. openssl установил.. ща код 200 выдает... и страница грузится...
спасибо.. буду дальше работать..)

Добавлено спустя 16 минут 24 секунды:
только нужной инфы все равно нет.. какая то пустая страница получается... сама страница есть, но информации нет, только сама страница со своим дизайном (в программе конечно это не отображается, я просто текст скопировал с разметкой и сохранил как .html файл).. почему так?
кстати если смотреть исходный код страницы до запроса и после (в браузере) то код одинаковый.. то есть это не новая страница появляется, а старая меняется как я понимаю..
но в демонстрационном браузере в примерах PascalABC.NET хоть и ошибки выдавало, но страница нужная выходила.. с инфой..
как это исправить?

Добавлено спустя 5 минут 48 секунд:
я правда в качестве URL указывал ссылку как в примере от VADA https://<имя сайта>/<имя страницы>?<имя поля>=<ваше значение> (в PascalABC.NET я делал так же и было там лучше, но тоже ошибки вылезали, приходилось нажимать ОК или Отмена я не помню)

Re: Взаимодействие с сайтом (https://)

СообщениеДобавлено: 17.11.2012 14:54:41
Ism
Возможно данные нужно передавать через POST. Запустите браузер и сниффер и перехватите трафик, увидите , как действительно идет обмен

Также для https нужен сертификат для шифрования. Там не все просто.

Re: Взаимодействие с сайтом (https://)

СообщениеДобавлено: 17.11.2012 15:10:04
SSerge
Ism писал(а):Запустите браузер и сниффер и перехватите трафик


Интересно, каким снифером вы собираетесь перехватывать трафик шифрованного канала?

Re: Взаимодействие с сайтом (https://)

СообщениеДобавлено: 17.11.2012 16:02:56
Ism
Можно увидеть статусы соединения и принят сертификат или нет

Re: Взаимодействие с сайтом (https://)

СообщениеДобавлено: 18.11.2012 16:14:32
bocha_xp
а шифрование не идет автоматически? при подключении нужных библиотек..

Re: Взаимодействие с сайтом (https://)

СообщениеДобавлено: 18.11.2012 17:50:44
Ichthyander
сама страница есть, но информации нет, только сама страница со своим дизайном

Судя по этой вашей фразе, ответ от сервера Вам все-таки приходит, дело наверное не в https. Сколько раз использовал https в synapse никогда не выполнял каких-то дополнительных действий, помимо установки OpenSSL

Re: Взаимодействие с сайтом (https://)

СообщениеДобавлено: 19.11.2012 17:49:06
bocha_xp
а прога скрипты принимает?

Добавлено спустя 23 секунды:
или для этого еще что то нужно?

Добавлено спустя 18 минут 10 секунд:
нужная мне инфа в скрипте записана.. а скрипт прога не берет и не отображает код скрипта...