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

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

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

Сообщение bocha_xp » 13.11.2012 09:28:26

Как можно заполнить поле для ввода на некотором сайте..(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) я запарился искать

спасибо... (а я пока подремаю)
bocha_xp
незнакомец
 
Сообщения: 8
Зарегистрирован: 13.11.2012 07:44:20

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

Сообщение dunin » 13.11.2012 10:23:31

bocha_xp писал(а):...если не сложно напишите рабочий текст проги, логин пароль сам вставлю.. плюс организуйте поиск какого нибудь слова на странице... ...

Вам в тематический раздел viewforum.php?f=43
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

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

Сообщение vada » 13.11.2012 10:54:51

Код: Выделить всё
https://<имя сайта>/<имя страницы>?<имя поля>=<ваше значение>
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

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

Сообщение debi12345 » 13.11.2012 15:29:44

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.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

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

Сообщение bocha_xp » 14.11.2012 11:06:00

спасибо за примеры.. изучаю...
bocha_xp
незнакомец
 
Сообщения: 8
Зарегистрирован: 13.11.2012 07:44:20

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

Сообщение bocha_xp » 16.11.2012 04:48:43

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

мне не нужно готовое решение именно к моей задаче, мне нужен пример, с подобными условиями, отправить запрос, получить ответ и т.п. (общий пример, а не чисто для меня).. я хочу сам научиться... спасибо
bocha_xp
незнакомец
 
Сообщения: 8
Зарегистрирован: 13.11.2012 07:44:20

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

Сообщение bocha_xp » 17.11.2012 05:29:36

с http есть немного движухи.. но с https ваще ниче не получается... есть что то в библиотеках для работы с https?
bocha_xp
незнакомец
 
Сообщения: 8
Зарегистрирован: 13.11.2012 07:44:20

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

Сообщение Ichthyander » 17.11.2012 08:47:27

А Вы устанвливали библиотеку OpenSSL? http://slproweb.com/products/Win32OpenSSL.html Без это не будет работать https
Можно установить или просто кинуть библиотеку в папку с программой
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 686
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

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

Сообщение bocha_xp » 17.11.2012 10:53:48

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 я делал так же и было там лучше, но тоже ошибки вылезали, приходилось нажимать ОК или Отмена я не помню)
bocha_xp
незнакомец
 
Сообщения: 8
Зарегистрирован: 13.11.2012 07:44:20

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

Сообщение Ism » 17.11.2012 14:54:41

Возможно данные нужно передавать через POST. Запустите браузер и сниффер и перехватите трафик, увидите , как действительно идет обмен

Также для https нужен сертификат для шифрования. Там не все просто.
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

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

Сообщение SSerge » 17.11.2012 15:10:04

Ism писал(а):Запустите браузер и сниффер и перехватите трафик


Интересно, каким снифером вы собираетесь перехватывать трафик шифрованного канала?
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

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

Сообщение Ism » 17.11.2012 16:02:56

Можно увидеть статусы соединения и принят сертификат или нет
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

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

Сообщение bocha_xp » 18.11.2012 16:14:32

а шифрование не идет автоматически? при подключении нужных библиотек..
bocha_xp
незнакомец
 
Сообщения: 8
Зарегистрирован: 13.11.2012 07:44:20

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

Сообщение Ichthyander » 18.11.2012 17:50:44

сама страница есть, но информации нет, только сама страница со своим дизайном

Судя по этой вашей фразе, ответ от сервера Вам все-таки приходит, дело наверное не в https. Сколько раз использовал https в synapse никогда не выполнял каких-то дополнительных действий, помимо установки OpenSSL
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 686
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

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

Сообщение bocha_xp » 19.11.2012 17:49:06

а прога скрипты принимает?

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

Добавлено спустя 18 минут 10 секунд:
нужная мне инфа в скрипте записана.. а скрипт прога не берет и не отображает код скрипта...
bocha_xp
незнакомец
 
Сообщения: 8
Зарегистрирован: 13.11.2012 07:44:20

След.

Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Рейтинг@Mail.ru