![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 7.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
próbowałem przy użyciu PHP Simple HTML DOM Parser zaimportować dane dot. powietrza ze strony http://air.wroclaw.pios.gov.pl/dane-pomiar...metry/wszystkie Niestety dane doładowują się javascriptem i wypluwa mi stronę bez pomiarów (tabelka). Od WIOŚ danych nie dostanę, mogę liczyć tylko na to co zaciągnę ze strony. Założenie jest takie, aby co godzinę pobierać aktualne pomiary, lub na bieżąco jeżeli będzie to wystarczająco szybkie.
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Dane są pobierane metodą POST.
Sprawdź zakładkę Network/Sieć konsoli przeglądarki (Chrome->F12). -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
ps: nie ma to jak w produkcyjnym js zostawic console.log....
Cytat response: Object { success=true, data={...}} success
browse.js?v3 (line 36) pobrano dane: Object { charts=[0], title="Dane pomiarowe dla stacj...go w dniu 20.12.2016 r.", unitLabel="µg/m<sup>3</sup>", more...} browse.js?v3 (line 36) @config.series: 1 [Object { label="Dwutlenek siarki<sup>3)</sup>", measType="auto", paramLabel="Dwutlenek siarki", more...}] browse.js?v3 (line 32) value: 350 browse.js?v3 (line 32) @config.series: 3 [Object { label="Dwutlenek azotu", measType="auto", paramLabel="Dwutlenek azotu", more...}, Object { label="Tlenki azotu", measType="auto", paramLabel="Tlenki azotu", more...}, Object { label="Tlenek azotu", measType="auto", paramLabel="Tlenek azotu", more...}] browse.js?v3 (line 32) value: 200 browse.js?v3 (line 32) @config.series: 2 [Object { label="Ozon", measType="auto", paramLabel="Ozon", more...}, Object { label="Ozon 8h<sup>2)</sup>", measType="auto", paramLabel="Ozon", more...}] browse.js?v3 (line 32) value: 120 browse.js?v3 (line 32) @config.series: 2 [Object { label="Tlenek węgla", measType="auto", paramLabel="Tlenek węgla", more...}, Object { label="Tlenek węgla 8h<sup>2)</sup>", measType="auto", paramLabel="Tlenek węgla", more...}] browse.js?v3 (line 32) value: 10000 browse.js?v3 (line 32) @config.series: 1 [Object { label="Benzen", measType="auto", paramLabel="Benzen", more...}] browse.js?v3 (line 32) @config.series: 1 [Object { label="Pył zawieszony PM10", measType="auto", paramLabel="Pył zawieszony PM10", more...}] browse.js?v3 (line 32) @config.series: 1 [Object { label="Pył zawieszony PM2.5", measType="auto", paramLabel="Pył zawieszony PM2.5", more...}] -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
I tak tam nie ma nic co można by było poprzeglądać w źródle strony
![]() |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Nie o to mi chodzilo. Chodzilo mi o sam fakt console.log, ktory czesto potrafi zamulic takiego np. firefox dla duuuuzych danych. A w produkcji jest to totalnie zbedne. Juz nie bede wspominal o tym ze stare przegladarki sie poprostu wyloza na takim js i guzik zobaczysz
![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 7.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dane są pobierane metodą POST. Sprawdź zakładkę Network/Sieć konsoli przeglądarki (Chrome->F12). Dziękuję za podpowiedź, zerknąłem do tej zakładki: Request URL:http://air.wroclaw.pios.gov.pl/dane-pomiarowe/pobierz Request Method:POST Accept:application/json, text/javascript query:{"measType":"Auto","viewType":"Station","dateRange":"Day","date":"20.12.2016","viewTypeEntityId":"23","channels":[418,423,432,425,428,539,422,419,424]} Tyle udało mi się zrozumieć, że metodą POST pobiera sobie dane w formacie JSON z http://air.wroclaw.pios.gov.pl/dane-pomiarowe/pobierz Macie jakiś pomysł jak można by te dane uzyskać, tak by można je cyklicznie zaciągać, czy da się GET-em pobrać tego JSON-a? |
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
php curl
http://php.net/manual/en/book.curl.php i robisz wszystko tak jak oni na stronie. NIe ma wowczas problemu czy to POST czy GET. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 7.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
php curl http://php.net/manual/en/book.curl.php i robisz wszystko tak jak oni na stronie. NIe ma wowczas problemu czy to POST czy GET. Ale czy oni nie muszą tego curla obsługiwać? albo coś instalować? da się to jakoś prosto sprawdzić? Przepraszam za tyle pytań ![]() |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
cURL sluzy do imitowania requestow, ktore robia przegladarki - tak w skrocie
Wiec nie, oni nic nie musza robic. przy pomocy cURL ty wysylasz dokladnie takie samo żądanie co przegladarka wiec oni nawet sie nie kapna ze to ty a nie przegladarka -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 7.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
cURL sluzy do imitowania requestow, ktore robia przegladarki - tak w skrocie Wiec nie, oni nic nie musza robic. przy pomocy cURL ty wysylasz dokladnie takie samo żądanie co przegladarka wiec oni nawet sie nie kapna ze to ty a nie przegladarka Super, dziękuję za odpowiedź, teraz już wiem nad czym pracować. |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
cURL sluzy do imitowania requestow, ktore robia przegladarki - tak w skrocie Wiec nie, oni nic nie musza robic. przy pomocy cURL ty wysylasz dokladnie takie samo żądanie co przegladarka wiec oni nawet sie nie kapna ze to ty a nie przegladarka Z tego co się orientuję mogliby zablokować dostęp i udostępnić skryptom jedynie z konkretnej puli domen. |
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Jakich domen?
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Jakich domen? A czy niemożliwym jest żeby dostęp do http://air.wroclaw.pios.gov.pl/dane-pomiarowe/pobierz miały tylko skrypty odpalane z *.wroclaw.pios.gov.pl? |
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
A jak to zrobisz by serwer przyjmowal tylko i wylacznie żądanie z *.wroclaw.pios.gov.pl ? Bo chyba nie masz na mysli REFERER
![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
O nie, nie, referer jest zawodny. Kiedyś spotkałem się z takim przypadkiem, jedyne info jakie otrzymywałem to tekst o tym że skrypt nie jest odpalany właśnie z domeny xyz.com, stąd też wiem że jest opcja wyfiltrowania takich requestów. Być może było to sprawdzanie IP, lub inne dane z nagłówka HTTP, nigdy się w to nie zagłębiałem.
|
|
|
![]()
Post
#16
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat O nie, nie, referer jest zawodny. Ja to wiem. To bylo pytanie retoryczne ![]() Cytat Być może było to sprawdzanie IP, lub inne dane z nagłówka HTTP, nigdy się w to nie zagłębiałem. Raczej nie. Co ci da sprawdzenie IP usera? user ma prawo odpalic twoja strone z dowolnego IP (chyba ze pozwalasz tylko na userow z danej firmy a co za tym idzie z danego IP). Inne naglowki tez raczej nie wchodza w gre. Mogli co najwyzej dodawac jakis token do swoich ajaxow/requestow ale i to idzie odczytac.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
http://erwinmayer.com/labs/asin2ean/index.php#ASIN-to-EAN
tokenów nie widzę nigdzie, nagłówki w HTTP które ewentualnie mogłyby być brane pod uwagę: Host, Origin. Choć teraz jak na to patrzę to rzeczywiście jest cookie, nie podawałem wtedy ciasteczek, będę musiał to sprawdzić jeszcze raz. |
|
|
![]()
Post
#18
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Masz moze kod php, ktorym probowales pobrac dane? Zaciekawiles mnie
![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Masz moze kod php, ktorym probowales pobrac dane? Zaciekawiles mnie ![]() Napisałem kod na nowo i działa, wiem w czym był problem. Strona którą podałem wykonuje dwa zapytania XRH z czego jedno pobiera dane w JSONie a drugie zwraca <iframe> ze stroną Amazona. Z kolei Amazon ma ustawione ograniczenia co do nagłówka Origin, w teorii (być może w praktyce też) nie możesz otworzyć Amazona w ramce i to Amazon wyrzucał błąd. Poniżej kod z ZF2 który pobiera JSONa z danymi o ASINie i EANie:
|
|
|
![]()
Post
#20
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No i sprawa z "blokowaniem" wyjasniona
![]() dzieki za kod -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 12:37 |