Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie z programu zewnętrznego do strony...
Forum PHP.pl > Inne > Hydepark
TomASS
Witam, nie za bardzo wiem, w którym dziale to napisać, a jak nie wiadomo gdzie to na Hydepark smile.gif

Otóż. Mam aplikację w C++ która może wysyłać zapytanie HTTP smile.gif Chcę w ten sposób odwołać się do strony internetowej (którą napisałem) i w odpowiedzi dostać TYLKO cyfry, problem jest w tym, że owa strona do komunikacji "dalej" korzysta z JS :/ czyli w odpowiedzi dostanę kod JS :/



Może zademonstruję. Aplikacja w C++ do liczenia odległości pomiędzy miastami - wysyłam zapytanie HTTP do strony internetowej i w odpowiedzi mam dostać tylko cyfrę (oznaczającą odległość) - strona to np.:
Wrocław - Olsztyn dostanę w odpowiedzi 503 i tą informację potrzebuję jako zwrot do mojej aplikacji w C++, jednak dostanę nie 503, tylko kod JS bez 503 (bo to JS generuje 503) :/

Strona korzysta z mechanizmu ViaMichelin API, który niestety jest w JavaScript :/


Ktoś ma pomysł jak to wydziergać?


Dzięki za pomoc
acztery
a musisz do tego stosować protokół HTTP a może po gniazdku SOCKET prosciej by to wyglądało. nie wiem na ile możesz sobie pozwolić na edycje programu i strony. Alle miałem taki program i komunikowałem sie własnie za posrednictwem SOCKETA
NoiseMc
Ja raczej bym sie przegrzebal przez wszystkie te pliki .js ktore sie tam pojawiaja i znalazl gdziestam xmlhttprequest zeby zobaczyc jaki serwer pyta o dane. Niestety jest tego tam masa i dodatkowo kod jest w jednej linijce i moze to troche czasu zajac.
Hacker
@NoiseMc
Ten skrypt nie wysyła 1 zapytania, a lepszym sposobem od przeszukiwania całego skryptu pod kątem xmlhttprequest jest skorzystanie z ff i Live HTTP Headers... ale i to Ci nic nie da, bo skrypt wykonuje jeszcze jakieś obliczenia i w odpowiedzi nie dostaje 503 (nawet opakowanego w XML), a... kod JavaScript
TomASS
Dzięki za pomysły ale.....

Cytat
protokół HTTP a może po gniazdku SOCKET prosciej by to wyglądało

Nie wyglądało by prościej, tak samo SOCKET nie odpali JS :/

Cytat
Ten skrypt nie wysyła 1 zapytania

No właśnie :/


Cytat
ale i to Ci nic nie da, bo skrypt wykonuje jeszcze jakieś obliczenia i w odpowiedzi nie dostaje 503 (nawet opakowanego w XML), a... kod JavaScript

No o to chodzi! To JS generuje 503 :/


Ktoś ma jakieś dalsze pomysły.
menic
tak...
przepisac kod generujacy na PHP winksmiley.jpg
empathon
Jedyny pomysł jaki mi przychodzi do głowy to zrobić zrzut ekranu przeglądarki z konsoli a następnie odczytać wartość jakimś algorytmem do rozpoznawania tekstu tongue.gif
Pomysł ohydny i nie praktyczny...
TomASS
pfff..... smile.gif
Cytat
tak...
przepisac kod generujacy na PHP

przecież piszę wyraźnie, że API ViaMichelin jest w JS!

Cytat
Jedyny pomysł jaki mi przychodzi do głowy to zrobić zrzut ekranu przeglądarki z konsoli a następnie odczytać wartość jakimś algorytmem do rozpoznawania tekstu. Pomysł ohydny i nie praktyczny...


Tak, ohydny i nie praktyczny tongue.gif Do tego raczej skomplikowany do wykonania tongue.gif
Jabol
Cytat(TomASS @ 9.08.2007, 12:49:33 ) *
Dzięki za pomysły ale.....
Nie wyglądało by prościej, tak samo SOCKET nie odpali JS :/
No właśnie :/
No o to chodzi! To JS generuje 503 :/
Ktoś ma jakieś dalsze pomysły.

No coz, osobiscie proponuje zrobic parser html+js, moze byc lightweight i bedzie ok.

Jezeli juz wyczowasz ironie, to wytlumacze: jezeli cos jest pisane w JS to musisz miec parser JS, zeby dostac tego wynik. Nie ma tekiej mozliwosci, zebys otworzyl strone poprzez socketa i dostal to co widzisz na ekranie, poniewaz odpowiada za to wiele MB bibliotek. Mozesz przesledzic wykonywanie skryptu w JS i po prostu zlezc ten najwazniejszy "clue". To powinno zrobic sztuczke, ale i tak musisz sie przekopac przez ten JS (tyle, ze druga wersja nie wymaga pisania wielu kodu, a tylko kartki i olowka, ew. debuggera).

A tak swoja droga nie moge sie oprzec wrazeniu, ze Ci sie nie chce a chialbys, zeby dzialalo...

Pozdrawiam
Wyzej pewnego elementu ciala nie podskoczysz pamietaj.
Z drugiej strony nie ma rzeczy niemozliwych. Po prostu niemozliwe trwa dluzej...
php programmer
Nie wiem jak jest w C++, ale w Delphi była taka fukcja, do pobrania pliku z internetu:

Kod
teskt = PobierzPlik('http://jakas_tam_strona.pl/plik.txt'); // nazwa zmyślona, bo niepamiętam

więc myślę, że w C++ tym bardziej takowa funkcja być powinna,
a jeśli tak to jako parametr wywołujesz skrypt php z odpwiednio ustawionym GET'em w url,
skrypt robi echo takie jak tam chcesz, czyli sama liczba
NoiseMc
Cytat
ale i to Ci nic nie da, bo skrypt wykonuje jeszcze jakieś obliczenia i w odpowiedzi nie dostaje 503 (nawet opakowanego w XML), a... kod JavaScript

Trzeba by wygrzebac wartosci jakie pobiera od serwera, podejrzec jak JS to oblicza i napisac taki sam algorytm w jezyku w ktorym piszesz aplikacje ... no dla mnie jedyne wyjscie ... chyba ze interpreter JS napiszesz albo zastosujesz OCR tak jak koledzy wspomnieli ale to chyba nie za dobry pomysl.
Co konkretnie potrzebujesz ? Z tego co wiem to chyba nie tylko Michelin ma GeoLocator ... moze sprawdz ten z ktorego korzysta Google Maps (http://www.google.com/apis/maps/documentation/index.html)
TomASS
Cytat
Jezeli juz wyczowasz ironie, to wytlumacze: jezeli cos jest pisane w JS to musisz miec parser JS, zeby dostac tego wynik. Nie ma tekiej mozliwosci, zebys otworzyl strone poprzez socketa i dostal to co widzisz na ekranie, poniewaz odpowiada za to wiele MB bibliotek. Mozesz przesledzic wykonywanie skryptu w JS i po prostu zlezc ten najwazniejszy "clue". To powinno zrobic sztuczke, ale i tak musisz sie przekopac przez ten JS (tyle, ze druga wersja nie wymaga pisania wielu kodu, a tylko kartki i olowka, ew. debuggera).

No właśnie chcę uniknąć przekopywania się przez bibioteki :/
Cytat
A tak swoja droga nie moge sie oprzec wrazeniu, ze Ci sie nie chce a chialbys, zeby dzialalo...

Masz rację 0 masz tylko takie wrażenie a tak nie jest. Jakby mi się nie chciało to bym się za to nie zabierał.

Cytat
Z drugiej strony nie ma rzeczy niemozliwych. Po prostu niemozliwe trwa dluzej...

O! Też tak uważam, także myślę, że w końcu znajdę (znajdziemy) rozwiązanie smile.gif


Cytat
Nie wiem jak jest w C++, ale w Delphi była taka fukcja, do pobrania pliku z internetu:
Kod
teskt = PobierzPlik('http://jakas_tam_strona.pl/plik.txt'); // nazwa zmyślona, bo niepamiętam

więc myślę, że w C++ tym bardziej takowa funkcja być powinna,
a jeśli tak to jako parametr wywołujesz skrypt php z odpwiednio ustawionym GET'em w url,
skrypt robi echo takie jak tam chcesz, czyli sama liczba

A czy przeczytałeś dokładnie? Plik umiem pobrać - problem leży gdzie indziej - pobierzesz stronę z kodem JS - i co dalej? To właśnie ten kod JS ma wygenerować odpowiedź. Odpowiedzi nigdzie na stronie nie ma. Właśnie z tym jest
problem sad.gif

Kod
Z tego co wiem to chyba nie tylko Michelin ma GeoLocator ... moze sprawdz ten z ktorego korzysta Google Maps (http://www.google.com/apis/maps/documentation/index.html)

Potrzebuję liczyć trasę od do.... przez konkretne punkty, a tylko Via Michelin ma AKTUALNE dane.

Cytat
Trzeba by wygrzebac wartosci jakie pobiera od serwera, podejrzec jak JS to oblicza i napisac taki sam algorytm w jezyku w ktorym piszesz aplikacje ... no dla mnie jedyne wyjscie ...

No na razie chciałbym tego uniknąć :/ Nie to, że jestem leń, ale po co wyważać otwarte drzwi smile.gif


Acha jest jeszcze jeden myk! Nie mogę zrobić parsera bo wynik musi być konkretnie z tej strony - przy rejestracji podaje się stronę z które będą odpalane skrypty JS - inaczej nie działają. Czyli potrzebują coś co sparsuje mi sam wynik :/
Hacker
Chyba większość nie zrozumiała mojej wypowiedzi
Cytat
ale i to Ci nic nie da, bo skrypt wykonuje jeszcze jakieś obliczenia i w odpowiedzi nie dostaje 503 (nawet opakowanego w XML), a... kod JavaScript


Chodziło mi o to, że skrypt JS pobiera dane z serwera tak około 4 razy i za każdym razem otrzymuje inny skrypt JS... Zainstaluj na jakimś serwerze przeglądarkę potem skrypt PHP, który ją odpali i otworzy odpowiednią stronę, a potem z przeglądarki odczyta wartość tongue.gif (joke)
NoiseMc
A zagladales moze tutaj?
Jabol
Cytat(TomASS @ 9.08.2007, 16:22:44 ) *
No właśnie chcę uniknąć przekopywania się przez bibioteki :/

Masz rację 0 masz tylko takie wrażenie a tak nie jest. Jakby mi się nie chciało to bym się za to nie zabierał.
O! Też tak uważam, także myślę, że w końcu znajdę (znajdziemy) rozwiązanie smile.gif

No cóż, IMHO masz wybór, jest kilka możliwości. Albo napisać web service który będzie to obliczał i podawał wynik, a nie skrypt który do dopiero obliczy. 2 możlwość, to, że sprawdzisz jak to jest obliczane, zatrudnisz coś w rodzaju sed+awk+grep (albo jakieś biblioteki o podobnej funkcjonlaności) i znajdziesz w skrypcie to co się naprawdę liczy, tzw. dane wejściowe a potem zrobisz dokładnie to samo co skrypt tylko w aplikacji. 3 możliwość to wykorzystanie jakieś biblioteki wykonującej JavaScript. Jakiegoś parsera. Dalej możesz np. zlinkować swoją aplikację z silnikiem Gecko i wykorzystać ich interfejs (LOL:P). No i jeszcze gdzieś słyszałem o server-side JS. Mogłbyś zatrudnić serwer do ewaluacji skryptu. W każdym razie nawet jeżeli istnieją jeszcze jakieś możliwości nie ma takiej którą by się dało wykorzystać z nastawieniem braku chęci do nauczenia się czegoś...
TomASS
Cytat
Albo napisać web service który będzie to obliczał i podawał wynik, a nie skrypt który do dopiero obliczy. 2 możlwość, to, że sprawdzisz jak to jest obliczane, zatrudnisz coś w rodzaju sed+awk+grep (albo jakieś biblioteki o podobnej funkcjonlaności) i znajdziesz w skrypcie to co się naprawdę liczy, tzw. dane wejściowe a potem zrobisz dokładnie to samo co skrypt tylko w aplikacji.

Myślę, że jest to niezły pomysł zatrudnienie sed i awk, ale jest pewien problem - skrypt musi być odpalany z domeny podanej przeze mnie.

Dobre pomysły, tylko wstrzymałbym się przed osądem typu:
Cytat
W każdym razie nawet jeżeli istnieją jeszcze jakieś możliwości nie ma takiej którą by się dało wykorzystać z nastawieniem braku chęci do nauczenia się czegoś...
bim2
Nie jestem jakimś specjalistą i to co mówię może być strasznie lamerskie, ale nie ma możliwości odpalenia IE z poziomu skryptu i odczytanie danych jakie wygenerował? Jeśli można zrobić screna całej strony dlaczego nie można odczytać wartości winksmiley.jpg
barF
pogooglowalem troszke i nasunelo mi sie cos takiego http://www.njs-javascript.org/
TomASS
Dzięki wszystkim smile.gif To jednak przerasta moje umiejętności i porzuciłem mapę Europy na rzecz samej (ale za to bardzo dokładnej) mapy Polski smile.gif

trasowanie/

Dzięki za pomoc
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.