🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.php
7 messages
7 total messages Started by Leszek Zur Wed, 24 Sep 2014 17:15
curl - poruszanie sie po portalu
#230595
Author: Leszek Zur
Date: Wed, 24 Sep 2014 17:15
20 lines
1922 bytes
Chcę napisać sobie pod linuksem w php za pomocą curla skrypt który ma 
wykonać kilka rzeczy:
- zalogować się na pewien portal - akurat jest to portal 
świadczeniodawcy NFZ
- wyklikać kilka linków wewnątrz portalu aby dojść do pewnej opcji
- wypełnić formularz
- pobrać wygenerowane dane na podstawie wypełnionego powyżej formularza 
(około 2500 stron w pętli) i zapisać do pliku wyniki

I mam problem bo jeśli chodzi o logowanie to idzie normalnie ale potem 
zaczynają się różne cuda, które są realizowane za pomocą javascriptu. 
Curl nie obsługuje javascriptu i nie chce to działać. Czy wiecie jak to 
obejść. Czy jest może jakaś biblioteka do obsługi javascriptu w curlu ?
A może zamiast curla posłużyć się innym "emulatorem" przeglądarki pod 
konsolą. Jeśli tak to jakim.
A może są jakieś rozszerzenia do firefoxa lub chroma umożliwiające 
wykonanie tych czynności ?
Nie chce mi się analizować co tam wyczynia ten javascript.

Pozdrawiam - Leszek
Re: curl - poruszanie sie po portalu
#230596
Author: Piotr Janczura
Date: Wed, 24 Sep 2014 18:26
26 lines
1862 bytes
W dniu 24.09.2014 o 19:15, Leszek Zur pisze:
> Chcę napisać sobie pod linuksem w php za pomocą curla skrypt który ma
> wykonać kilka rzeczy:
> - zalogować się na pewien portal - akurat jest to portal
> świadczeniodawcy NFZ
> - wyklikać kilka linków wewnątrz portalu aby dojść do pewnej opcji
> - wypełnić formularz
> - pobrać wygenerowane dane na podstawie wypełnionego powyżej formularza
> (około 2500 stron w pętli) i zapisać do pliku wyniki
>

1. Może portal udostępnia gotowe API do komunikacji z nim, które można 
wywołać i komunikować się z systemem zamiast analizować całą zwróconą 
stronę w html modyfikowaną przez zaciągnięte skrypty w js ??

2. Sprawdź czy js na tej stronie nie zajmuje się wymianą danych z 
portalem. Jeżeli tak jest to wykonaj tylko te odwołania, które dotyczą 
wymiany danych. Wątpię, że strona nie jest zabezpieczona przed takim 
"atakiem"

3. jeżeli konsola i js to node.js



-- 
Janczura Piotr
Re: curl - poruszanie sie po portalu
#230597
Author: Borys Pogoreło
Date: Wed, 24 Sep 2014 18:42
21 lines
1623 bytes
Dnia Wed, 24 Sep 2014 19:15:52 +0200, Leszek Zur napisał(a):

> I mam problem bo jeśli chodzi o logowanie to idzie normalnie ale potem 
> zaczynają się różne cuda, które są realizowane za pomocą javascriptu. 

Ile by nie naładowali javascriptu, to i tak kończy się to wysłaniem
zapytania HTTP. Podejrzyj co tam leci do serwera i z powrotem, po czym to
odtwórz w cURL-u. Polecam wtyczkę "Live HTTP Headers" do Firefoksa.

> Curl nie obsługuje javascriptu i nie chce to działać. Czy wiecie jak to 
> obejść. Czy jest może jakaś biblioteka do obsługi javascriptu w curlu ?

cURL służy do komunikacji z serwerami, nie do przetwarzania odpowiedzi.

> Nie chce mi się analizować co tam wyczynia ten javascript.

Nie ma sensu, interesuje Cię tylko efekt.

-- 
Borys Pogoreło
borys(#)leszno,edu,pl
Re: curl - poruszanie sie po portalu
#230598
Author: XJL
Date: Thu, 25 Sep 2014 12:22
7 lines
1065 bytes
W dniu 24.09.2014 o 19:15, Leszek Zur pisze:
> A może zamiast curla posłużyć się innym "emulatorem" przeglądarki pod
> konsolą. Jeśli tak to jakim.

http://scrapy.org/

http://phantomjs.org/
Re: curl - poruszanie sie po portalu
#230599
Author: elfau
Date: Thu, 25 Sep 2014 13:26
20 lines
1571 bytes
W dniu 24.09.2014 o 19:15, Leszek Zur pisze:
> Chcę napisać sobie pod linuksem w php za pomocą curla skrypt który ma
> wykonać kilka rzeczy:
> - zalogować się na pewien portal - akurat jest to portal
> świadczeniodawcy NFZ
> - wyklikać kilka linków wewnątrz portalu aby dojść do pewnej opcji
> - wypełnić formularz
> - pobrać wygenerowane dane na podstawie wypełnionego powyżej formularza
> (około 2500 stron w pętli) i zapisać do pliku wyniki

Z ciekawości: chodzi o deklaracje do POZ?

> A może są jakieś rozszerzenia do firefoxa lub chroma umożliwiające
> wykonanie tych czynności ?

Ja to kiedyś robiłem firefoksowym dodatkiem iMacros, który wyrzucał mi 
każdą stronę do csv, a potem sumowałem to wszystko lokalnie skryptem sh. 
Straszna rzeźba, BTW...

M.
Re: curl - poruszanie sie po portalu
#230600
Author: Leszek Zur
Date: Thu, 25 Sep 2014 21:43
14 lines
1562 bytes
W dniu 2014-09-25 15:26, elfau pisze:
>
> Z ciekawości: chodzi o deklaracje do POZ?
>

Tak

>
> Ja to kiedyś robiłem firefoksowym dodatkiem iMacros, który wyrzucał mi
> każdą stronę do csv, a potem sumowałem to wszystko lokalnie skryptem sh.

Świetny dodatek. Tego właśnie szukałem. Możesz pokazać swój skrypt ?

Leszek
Re: curl - poruszanie sie po portalu
#230601
Author: elfau
Date: Fri, 26 Sep 2014 11:34
58 lines
2790 bytes
W dniu 25.09.2014 o 23:43, Leszek Zur pisze:
> Świetny dodatek. Tego właśnie szukałem. Możesz pokazać swój skrypt ?

Jasne. Ale obawiam się, że jest to wersja do 2013. Od tego roku 
deklaracje są inaczej prezentowane, a ja już nie miałem potrzeby tego 
apdejtować. Może po przeróbkach coś z tego będzie.

Sposób użycia. Trzeba ręcznie wejść w każdą grupę wiekową i ręcznie 
wyszukać pierwsze 1-100 deklaracji. Potem uruchamiasz skrypt w pętli n = 
ceil(ilosc_deklaracji_w_danej_grupie/100) razy.

Na pewno dałoby się to poprawić i "doautomatyzować", ale nigdy nie 
miałem czasu. A to działało:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

VERSION BUILD=7031111
TAB T=1

' nie chcemy ogladac okienek z wyextractowanymi tabelkami
SET !EXTRACT_TEST_POPUP NO

' portal dziala jak gowno, wiec...
SET !TIMEOUT_PAGE 120

TAG POS=1 TYPE=TABLE ATTR=ID:ctl00_ContentPlaceHolder1_gvwDeklaracje 
EXTRACT=TXT
SAVEAS TYPE=EXTRACT FOLDER=* FILE=tab_{{!NOW:yymmdd_hhnnss}}.csv
WAIT SECONDS=2

' tu wyciagamy to, co w polach input
TAG POS=1 TYPE=INPUT:TEXT ATTR=ID:ctl00_ContentPlaceHolder1_txtStartRow 
EXTRACT=TXT
SET !VAR1 {{!EXTRACT}}
SET !EXTRACT NULL
TAG POS=1 TYPE=INPUT:TEXT ATTR=ID:ctl00_ContentPlaceHolder1_txtLastRow 
EXTRACT=TXT
SET !VAR2 {{!EXTRACT}}
SET !EXTRACT NULL
' teraz w !VAR1 mamy 1, a w !VAR2 mamy 100

ADD !VAR1 100
ADD !VAR2 100
' a teraz w !VAR1 mamy 101, a w !VAR2 mamy 200 i wypelniamy nimi 
stosowne pola

TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:aspnetForm 
ATTR=ID:ctl00_ContentPlaceHolder1_txtStartRow CONTENT={{!VAR1}}
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:aspnetForm 
ATTR=ID:ctl00_ContentPlaceHolder1_txtLastRow CONTENT={{!VAR2}}
TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:aspnetForm 
ATTR=ID:ctl00_ContentPlaceHolder1_btnZnajdz

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Powodzenia.

M.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads