( SzBlackY | 2018. 09. 04., k - 13:28 )

Ha már visszajött a szál... évek óta leszedem egy scripttel a nyilvánosan elérhető adattáblákat egy meg nem nevezett állami intézmény oldaláról, mert exportra nem adnak lehetőséget (pontosabban másik tábláknál igen).

Idén beújítottak, pár ponton elhasalt a scriptem:
* a tartalmat ugyanúgy lehet/kell lekérni (az URL változatlan), annyi változás történt, hogy a visszaadott oldal közepén van egy marha nagy script tagben egy JS stringben egy marha nagy base64-elt kódolt förmedvény... benne a lényegi tartalom HTML táblázatba formázva
* kikukázva a stringet, átengedve egy base64 decode-on majd betöltve DOM-ként szépen olvasható a táblázat, lehet kiszedni az adatokat... kivéve az utolsó oszlopot, amiben számok szerepelnek és amik miatt ez az egész van...
* böngészőben ránézve kicsit fura a betűtípus az utolsó oszlopban: mivel eléggé behatárolt a lehetséges értékek száma (40 pixel széles ablakokkal számolva egy alig több, mint tízezer pixel széles képen már meg is van), fogtak egy retek széles és 20 pixel magas képet, negyven pixelenként ráírták a következő számot (ill. ilyen képből van 5-6 különböző, az éppen szükséges formázásoknak megfelelő...). A táblázatban ezután háttérképnek beállítottak a cellára ezt a képet, fix 40*20-as méretet kapott és egy szép nagy negatív offsetet...
* ... kivéve, ahol nem, mert vannak értékek, amik a "szokásosnál" pár százalékkal magasabbak, ezeket simán szövegként írják ki.

Na most, nézzük meg, mi történt: a nyilvános információ eléréshez most már mindenképp szükséges a JavaScript (eddig anélkül is el lehetett lenni), egy-egy oldalon akár több száz példányban betöltetnek egy ~két millió pixelből álló RGB képet (nem szürkeárnyalatos, nem indexelt, annak ellenére, hogy a kettő közül bármelyik lehetne...), így nem lehet másolni az oldalról (pedig teljesen valid use case).
És mégis egy óra alatt kényelmesen vihető a content, ha valaki érti, hogy hogyan van az egész...

Ha esetleg a fejlesztő magára ismer: a következő alkalomra javaslom, hogy ne széles legyen a kép, hanem mondjuk közel négyzetes, a számokat pedig véletlenszerű sorrendben tegyék ki, feljegyezve az (x,y) koordinátákat, hogy ne lehessen visszaszámolni az offsetből az eredeti értéket, hanem kelljen a teljes {x,y} <=> érték leképezés ahhoz, hogy olvasható legyen (kiíráskor meg kb. mindegy, hogy offsetet számolunk vagy lookup table-ből lessük ki...)
Vagy rakjanak be egy retek captchát, még az is jobb.

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)