https + nodejs + heroku -> pulljson.com

Tänään tuli edistettyä taas hiukan tuota tekemääni pulljson.com palvelua.

Palvelua olen lähinnä tehnyt itseäni varten jotta voin yksinkertaisissa html+css+javascript web-sovelluksissa hakea tietoja toiselta verkkosivulta. Mielestäni tämä on aika perustavan laatuinen Internet-selaimista puuttuva ominaisuus. Nykypäivänä puhuttaessa API avoimuudesta niin yleensä ensimmäiset hipsterit jotka ovat tekemässä kokeilujaan jonkun käyttämänsä palvelun parantamiseksi , useimmiten vain itselleen, törmäävät juurikin tähän ettei ko. palvelu tarjoa API:a vaan esim. oma / muu data on ’louhittava’ sivulta itse.

Louhintatyökaluja olen pulljson.com:ssa myös joitakin eritellyt mutta mainitaan tässä ehkä yleisimmät itse käyttämäni:

  1. Työ alkaa yleensä tarkistamalla esim. Chrome-selaimen Developer Tools:n Network seuraten käyttääkö sivu itse jotain tausta palvelua API:a jota itse voisin käyttää
  2. python urllib2 / requests
  3. wget / curl / selaimen osoiterivi / httpie
  4. nightmarejs/electron (electron on headless-tyyppinen chromiumiin perustuva selain jota ohjelmoidaan javascriptilla)
  5. phantomjs (headless-tyyppinen webkit:iin perustuva selain jota ohjelmoidaan javascriptillä)

Yllä olevista vielä mainittakoon se että esim. ASP.net sovellusten login, jossa tapahtuu redirect:a session-key asettelua ja sokerina view-statea-javascripteja navigointi nappuloiden takana, tappaa kuta kuinkin kaikki ei-selain pohjaiset lähestymisyritykset wget, curl, httplib2 jne. Tällöin kohdan esim. kohtien 4 ja 5 keinoja tarvitaan, mikäli kyseessä jatkuvaa datan louhintaa. Tälläiseen törmäsimme kollegani Jounin kanssa koodatessamme hattiwatti.js ää .

No tosiaan tänään tarkoituksenani oli kokeilla ilmaisen https sertifikaatin asentamista tähän ”scrape”-palveluuni (http://pulljson.com) joka pyörii herokussa (https://html-to-json.herokuapp.com/).

Lopputulos muutaman tunnin github:n koodieditorilla pakertamisen ja epämääräisten googletusten jälkeen oli myönnettävä että ilmaiseksi ei saa ihan kaikkea. Vaan siitä pitäisi sitten maksaa esim. 8 dollaria kuussa (1. maksullinen hobby-taso) jos haluaa tuon saada herokussa toimimaan oman domainin kanssa.

No sinällään olin tyytyväinen että sain pidettyä toisen osan scrape-palvelustani toimimassa jquery/css-tyypiseen hakuun perustuva palvelu on suht. ok toiminutkin – mitä nyt lounaspori Android sovellus on ollut tovin päivittämättä eli toimimatta, joka näyttää kuta kuinkin tältä : http://santeriv.github.io/lounaspori/ (kirjoitus hetkellä Ravintola Sofia on ainoa jonka pulljson.com:n kautta tehty scrape vielä toimii).

Lisäksi olin tyytyväinen löytäessäni heroku-instansseihin keinon asentaa phantomjs jota 2. keskeneräiseksi jäänyt palveluni vaatii.

Esimerkki kutsu uudesta palvelusta, jolla voi siis hakea base64 formaatissa kuvakaappauksen selaimelta joltain sivulta – tässä kohtaa pori hacklab:n google calendar print preview sivulta:

https://pulljson.com/snapshot?site=https://calendar.google.com/calendar/print_preview?dates=20160820%2F20161031&hl=fi&ctz=Europe%2FHelsinki&pgsz=letter&wkst=2&mode=AGENDA&src=stkf8hlcbcs3iht3ngk630lomc%40group.calendar.google.com

eli tyyliin näin:

http://pulljson.com/snapshot?site=http://yourdomain.fi

ja paluuviestistä voit vaikka kokeilla kopioida ’kuva’ sivun loppuun asti ilman ” merkkejä

data:image/png.......Jotainmerkkejäennenlainausmerkkiinastimutteilainausmerkkiäeihän

Tämän jälkeen kun olet kopioinut leikepöydälle tämän ”kuvan” voit kokeilla katsella sitä esim. liittämällä leikepöydän sisällön selaimen osoiteriville ja painamalle enter

(toim.huom. mobilistit jompi kumpi kuitenkin tukehtuu joko selain tai leikepöydän muisti 🙂 siksi ohjeessa ”enter” eikä mitään sormella huitomis copy-paste-ohjeita tässä)

Jatka lukemista ”https + nodejs + heroku -> pulljson.com”