.NET Parsing a Ajax baseret website

Tags:    c# vb.net

Yeah... Et lille side projekt jeg har løbende kræver kort sagt at jeg parser en AJAX basseret side for noget information i nogle tables.

Problemet er bare at jeg ikke ser ud til at kunne få let adgang til resultatet af alt javascripten. Jeg har forsøgt med en webbrowsercontrol i .net fordi jeg godt ved at det ville se lidt håbløst ud at bare bruge webrequests.

Målsystemet er bygget i "NextApp Echo" (http://echo.nextapp.com/site/).


Jeg har før gjort lignende og bare kigget rundt i alle script filerne indtil jeg fandt linket til den information jeg skal bruge. Men kort sagt, så er det ikke en mulighed da det her er lidt en "Undercover mission" og vil helst se ud som en normal browser der ikke foretager nogle mystiske aktiviteter.

Jeg har ikke igang i noget ulovligt, men jeg forsøger bare at parse en offentlig tilgænglig side fra et system der kaldes "CSC LUDUS" som anvendes af blandt andet gymnasiet til at holde styr på hvilke lokaler timerne foregår i og lektier og meget meget mere.

Mit mål er at kunne tilbyde en (gratis) service for mig selv og et par venner hvor lokale numrene bliver sendt pr SMS fra morgenstunden af (Altså for hele dagen). Der er mange der synes det ville være RIGTIG praktisk.

Jeg tror faktisk ikke skolen har noget imod det da jeg bare ville skulle tilgå en offentlig side i deres system en enkelt gang kl 07:45 hver morgen fx.

Men nu har jeg den erfaring at mange offentlige løsninger desværre er tilhænger af security by obscurity princippet, og derfor sætter de sig i foster stilling, og kaster med ranglen, hvis nogle forespørger nogle bagvedliggende undersider enkeltvis som ikke er direkte tilgænglige fra forsiden (Fjernede lige en reference til et system her - Det er da syndt for dem).


Jeg bliver mildest talt dræbt på hjemmefronten hvis jeg får ballade for IT postyr på gymnasiet, og jeg garanterer at jeg ikke vil deres system noget ondt. Jeg vil bare gerne have de lokale lister ud.


Så nogle gode idéer til let at få resultatet fra Javascript og så "aktivere" javascript udskrevne knapper fra .NET?

Det er fint nok at det er inde i en eller anden form for browser. Jeg kører det bare i baggrunden på min VPS. Det er bare det der med liiige at få adgang til dataene i første omgang.



Indlæg senest redigeret d. 16.08.2011 19:55 af Bruger #14381
10 svar postet i denne tråd vises herunder
4 indlæg har modtaget i alt 12 karma
Sorter efter stemmer Sorter efter dato
Nå, kunne ikke lige finde noget jeg selv tidligere har lavet, men du kan kigge her.

http://www.csharp-station.com/HowTo/HttpWebFetch.aspx

Så kan du fetche websiden ned. Du kan så fx med regular expressions hente data indenfor din tabels opsætning. Men HttpWebRequest er din ven.



Indlæg senest redigeret d. 16.08.2011 20:01 af Bruger #10576
Du kommer nok desværre ikke ud over en tur gennem skidtet med regular expresssions :/
Lytter meget gerne med på alternativer.



Indlæg senest redigeret d. 16.08.2011 20:37 af Bruger #10576
Hej,
jeg prøvede med dit eget forslag med en webbrowser control.

Det virker faktisk :=)

Fold kodeboks ind/udCSharp kode 




Indlæg senest redigeret d. 16.08.2011 20:42 af Bruger #10576
Ebb der står det er en offentlig side.. Det er desuden nu intet problem at logge ind med webclient :=)
Men nu var dette jo ikke en hacker løsning, men blot til brug af en offenltig tilgængelig webside.



Jeg ved godt hvordan jeg får sourcen. Men ledte efter en løsning der ville læse skidtet ind som i en normal browser og give mig adgang til den "renderede" kode så jeg kunne gå uden om alt det AJAX pis. For det er smurt tykt ind i det.


Jeg tør slet ikke skulle til at parse alle filerne enkeltvis for det ville resultere i nogle abnormale logfiler og jeg skal bare holde nallerne helt i ro ude på gymnasiet.



Den kode som en browser rent faktisk resulterer i. Der fortolker den Javascriptet først. Jeg ANER ikke om det er muligt for at være ærligt, men jeg ville gerne have adgang til DOM'et efter at Javascript har fortolket koden.

Altså rent faktisk kunne hive den tekst ud som bliver vist på skærmen i stedet for at ligge og rode med sourcekoden.



Indlæg senest redigeret d. 16.08.2011 20:17 af Bruger #14381
Den kode som en browser rent faktisk resulterer i. Der fortolker den Javascriptet først. Jeg ANER ikke om det er muligt for at være ærligt, men jeg ville gerne have adgang til DOM'et efter at Javascript har fortolket koden.

Altså rent faktisk kunne hive den tekst ud som bliver vist på skærmen i stedet for at ligge og rode med sourcekoden.


Gjorde noget ligende med skolens hjemmeside da jeg gik i folkeskole.

Du kan simulere en browser session med eksempelvis "WebBrowser", og derved lave en form for key-binding (CTRL + A | CTRL + C), og trigger en method/function på CTRL + C, som tager den nuværende markeret tekst og...

At parse teksten er nok dit mindste problem. Udfordringen ligger i at kunne komme ind til siden med login mm. via en simuleret browser session. Blandt andet fordi cookies/javascript er noget lort i den sammenhæng.



Indlæg senest redigeret d. 16.08.2011 20:51 af Bruger #16594
Haha det er derfor udvikleren.dk er mit nr.1 goto place :P


Trods lidt mistro Benni, så virker din løsning fint. Og fordelen er at jeg vil dukke op som IE i deres logfiler.

Jeg brugte .Document.DocumentText og den virkede ikke. Kan dog se at din kode giver en null reference indtil JS har renderet siden færdig. Trods det ingen elegant løsning er, så tror jeg bare at jeg laver verdens mest basale kode og siger "Vent til browser er færdig, vent 10 sekunder, tjek, hvis ikke vent, vent 10 igen, maks 5 gange før fejl".... Så går det nok.


- Jeg ved sgu ikke om det er etisk men 12 point fra mig af, for du aner ikke hvor glade mine kammerater bliver for at denne her løsning kan gå i luften.




VIL DOG STADIG MEGET GERNE VIDE hvordan jeg skal invoke et "javascript link" på siden? Googler lige lidt, men spørger bare nu hvis nogle af jer har svaret.



Indlæg senest redigeret d. 16.08.2011 22:15 af Bruger #14381
Det er jeg glad for at høre :=)

Kalder linket bare en funktion .. ? Så kan du benytte den eksisterende webbrowser komponent. Eller hvordan er links lavet, der er jo lidt spøjse måder det gennem tiden er løst :=)

Fold kodeboks ind/udCSharp kode 




Indlæg senest redigeret d. 16.08.2011 22:39 af Bruger #10576
Nope kan ikke se nogen funktion i koden så tror at Javascript attacher en event handler dynamisk ved side indlæsning. Jeg har prøvet at invoke click handleren for HTML elementet men jeg skal vidst lige lege lidt videre med det.



t