Ebib.dk -> epub
|
19-06-2014, 16:03
|
|||
|
|||
Ebib.dk -> epub
Hey,
Har lige investeret i en ebook reader, og kunne godt tænke mig at få bøger fra Ebib.dk. Problemet er, at ebib kun tillader man læser bogen online - og det ser ikke umiddelbar ud til, at man kan hente bogen ned (Jeg kan i hvert fald ikke :) ) Mit spørgsmål er, om der er nogen der kender til en måde at få epub filer fra Ebib.dk |
|||
19-06-2014, 18:51
(Denne besked var sidst ændret: 20-06-2014, 02:05 af Doctor Blue.)
|
|||
|
|||
RE: Ebib.dk -> epub
Det ser ikke umiddelbart ud som om der er noget CSS indblandet. Det er hvist bare h1 og p-tags uden styling (Dvs. den bruger bare browserens standard stil). Helvede og patter, der er et span tag omkring hvert ord. Deres API virker dog meget simpel.
Jeg lånte lige en bog, når man åbner den, får vieweren en ID der ser sådan her ud: https://www.ebib.dk/Pages/Reading.html?i...3E39E2156E Right, så bogen har et ID, det er nok godt at kende til. Så kigger vi lige lidt videre på hvad der sker når man skifter side. Det er nemt, network monitoren i Firefox holder styr på alle vores requests. Jeg bladrede lidt og ser en masse get requests, de dukker vidst op for hvert kapitel kunne det se ud til. Kode: https://streaming.pubhub.dk/publicstreaming/v1/23ffbe53-4bbd-44d4-a6d5-a3551670a975/CE053385-C02D-478D-8FB0-D03E39E2156E/4/?callback=jQuery17204476266761075498_1403198501903&_=1403198567570 Det der jQuery callback ser ikke nødvendigt ud når man bare vil hente det selv. Vi prøver at tilgå addressen uden parametren, no problem, det virker stadig. Nu er der kun én forskel tilbage, tallet til sidst. Det er tydeligvis kapitelnummer, så der lægger vi bare en oveni for at hente næste kapitel. Lad os se hvad der sker når kapitlet ikke eksisterer. Det var smart, vi får en pæn fejlkode der kan bruges i scriptet. Lad os lige tjekke mønsteret i URL'en. Der står en anden unik værdi før bogens id, det kunne måske være noget session/bruger-id. Der er ikke noget i mine cookies der ligner, så det er nok en værdi vi får tildelt når vi åbner bogen. Jeg browser lidt rundt i javascriptet, det er ikke obfuscated så det bliver nemt nok. Jeg spotter hurtigt denne linje, StreamingServiceBaseUri lyder som noget der har med vores URL at gøre, så den her linje kan nok bruges til noget:
Erh. Nemt nok, vi tjekker funktionens returværdi og indholdet af SessionKey i browserens JS konsol. Nåh, der var den sørme, i SessionKey egenskaben. Jeg finder en funktion der hedder SetSessionKey, den viser nok hvor vi kan hente den henne.
Den henter siden med URL'en i den første parameter (n), hvis det lykkedes sætter den sessionkey til SessionId i det JSON den side returnerer. Et hurtigt kik på koden siger mig at den er godt gemt væk, så i stedet for at lede koden igennem kigger vi bare på de requests der bliver lavet igen. Vi får 1 plain-text respons fra https://www.ebib.dk/Handlers/GetReadingS...3E39E2156E Det ser ud til at den kun tager bogens ID som parameter. Vi besøger URL'en og rigtigt nok får vi noget JSON med en session ID. Bum, så er den reversed, nu laver du bare et script til det og så kan du hente det hele i JSON. Jeg har ikke lige brugt tid på at undersøge epub formatet, så den må du selv sørge for :) Husk lige at din session cookie også skal med ind i dit script, sådan er det altid når man skal være logget ind :) EDIT: Hvordan filen afleverer jeg en bog igen? :P EDIT2: Jeg fandt noget om hvordan du kan opbygge epub filerne fra den HTML du henter fra ebib. http://webdesign.about.com/od/epub/a/build-an-epub.htm EDIT3: Jeg manglede en udfordring, har lavet det hele nu, men jeg skal bare have lappet den del der laver epub filen. Den kringlede struktur gør det ret besværligt at genskabe det programmatisk, det havde nok været lettere hvis jeg bare gjorde det for en bestemt bog :P |
|||
20-06-2014, 11:36
|
|||
|
|||
RE: Ebib.dk -> epub
Du er for vild Doctor!
Hvis det er muligt, vil jeg gerne skid'e og have din kode? |
|||
20-06-2014, 13:16
(Denne besked var sidst ændret: 20-06-2014, 13:59 af Doctor Blue.)
|
|||
|
|||
RE: Ebib.dk -> epub
(20-06-2014, 11:36)Ticalie Skrev: Du er for vild Doctor! Det er helt i orden, planen var at dumpe det i VIP sektionen. Jeg er lige netop nu blevet færdig. Den kan endda generere indholdsfortegnelse og alt muligt andet godt :) Jeg skal lige have fjernet mit lånernummer osv. fra koden, så lægger jeg det op til dig ^^ Spoiler (Click to View) http://shellsec.pw/traad-ebibliotek-ripper |
|||
20-06-2014, 14:26
|
|||
|
|||
RE: Ebib.dk -> epub
Godt arbejde Blue - og interessant læsning hvordan du fandt frem til løsningen...
Don't learn to hack, hack to learn
|
|||
20-06-2014, 15:02
|
|||
|
|||
RE: Ebib.dk -> epub | |||
|
User(s) browsing this thread: 1 Gæst(er)