Страница 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 12:06:14
bocha_xp
по вашей ссылке только установочные проги, а не отдельные библиотеки.. что куда мне кидать.. почему нельзя было сразу все включить в 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 18:07:39
bocha_xp
а прога скрипты принимает?
Добавлено спустя 23 секунды:
или для этого еще что то нужно?
Добавлено спустя 18 минут 10 секунд:
нужная мне инфа в скрипте записана.. а скрипт прога не берет и не отображает код скрипта...