Tråd bedømmelse:
  • 0 Stemmer - 0 Gennemsnit
  • 1
  • 2
  • 3
  • 4
  • 5
Ebib.dk -> epub
19-06-2014, 16:03
#1
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
Find alle beskeder fra denne bruger
Citer denne besked i et svar
19-06-2014, 18:51 (Denne besked var sidst ændret: 20-06-2014, 02:05 af Doctor Blue.)
#2
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
https://streaming.pubhub.dk/publicstreaming/v1/23ffbe53-4bbd-44d4-a6d5-a3551670a975/CE053385-C02D-478D-8FB0-D03E39E2156E/5/?callback=jQuery17204476266761075498_1403198501905&_=1403198722661
https://streaming.pubhub.dk/publicstreaming/v1/23ffbe53-4bbd-44d4-a6d5-a3551670a975/CE053385-C02D-478D-8FB0-D03E39E2156E/6/?callback=jQuery17204476266761075498_1403198501906&_=1403198726601
https://streaming.pubhub.dk/publicstreaming/v1/23ffbe53-4bbd-44d4-a6d5-a3551670a975/CE053385-C02D-478D-8FB0-D03E39E2156E/7/?callback=jQuery17204476266761075498_1403198501907&_=1403198729154
https://streaming.pubhub.dk/publicstreaming/v1/23ffbe53-4bbd-44d4-a6d5-a3551670a975/CE053385-C02D-478D-8FB0-D03E39E2156E/8/?callback=jQuery17204476266761075498_1403198501908&_=1403198731709

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.
[Billede: 8U1QrH8.png]

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:
var e = ServiceUrl.GetStreamingServiceBaseUri() + ServiceUrl.SessionKey + '/' + n.orderId + '/settings/zoom/' + r + '/';

Erh. Nemt nok, vi tjekker funktionens returværdi og indholdet af SessionKey i browserens JS konsol.
[Billede: e6xN3Kq.png]

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.
SetSessionKey = function (n, t) {
jq17.ajax({
url: n,
dataType: 'json',
success: function (n) {
ServiceUrl.SessionKey = n.SessionId,
t()
},
error: function (n) {
alert(n.status)
}
})
}

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.
[Billede: pv02jwW.png]

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
Mangler du hjælp?
Regler |  E-mail (PGP)
Besøg denne brugers hjemmeside Find alle beskeder fra denne bruger
Citer denne besked i et svar
20-06-2014, 11:36
#3
RE: Ebib.dk -> epub
Du er for vild Doctor! Cool

Hvis det er muligt, vil jeg gerne skid'e og have din kode? Wink
Find alle beskeder fra denne bruger
Citer denne besked i et svar
20-06-2014, 13:16 (Denne besked var sidst ændret: 20-06-2014, 13:59 af Doctor Blue.)
#4
RE: Ebib.dk -> epub
(20-06-2014, 11:36)Ticalie Skrev: Du er for vild Doctor! Cool

Hvis det er muligt, vil jeg gerne skid'e og have din kode? Wink

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 ^^

Så er den klar!
http://shellsec.pw/traad-ebibliotek-ripper
Mangler du hjælp?
Regler |  E-mail (PGP)
Besøg denne brugers hjemmeside Find alle beskeder fra denne bruger
Citer denne besked i et svar
20-06-2014, 14:26
#5
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
Find alle beskeder fra denne bruger
Citer denne besked i et svar
20-06-2014, 15:02
#6
RE: Ebib.dk -> epub
(20-06-2014, 14:26)Spagnum Skrev: Godt arbejde Blue - og interessant læsning hvordan du fandt frem til løsningen...

Tjah, hvis man bare sidder og følger koden baglens bliver man aldrig færdig. Hvis man er lidt god til at spotte mønstre kan man spare oceaner af tid :)
Mangler du hjælp?
Regler |  E-mail (PGP)
Besøg denne brugers hjemmeside Find alle beskeder fra denne bruger
Citer denne besked i et svar
« Ældre | Nyere »




User(s) browsing this thread: 1 Gæst(er)