Python web scraping: ar tai legalu Lietuvoje?

Kas iš tikrųjų yra web scraping ir kodėl apie tai kalbame

Jei kada nors bandėte surinkti informaciją iš kelių dešimčių ar šimtų svetainių rankiniu būdu, tikriausiai suprantate, kodėl automatizuotas duomenų rinkimas tapo tokia populiaria praktika. Web scraping – tai procesas, kai naudojant programinį kodą (dažniausiai Python) automatiškai ištraukiami duomenys iš interneto svetainių. Skamba paprasta, bet čia ir prasideda įdomybės.

Python tapo de facto standartu šioje srityje dėl paprastumo ir galingų bibliotekų kaip BeautifulSoup, Scrapy ar Selenium. Galite per kelias valandas sukurti robotą, kuris surinks visas prekių kainas iš konkurentų svetainių, nekilnojamojo turto skelbimus ar bet kokią kitą viešai prieinamą informaciją. Tačiau tai, kad kažkas yra techniškai įmanoma, nereiškia, kad tai automatiškai yra teisėta.

Lietuvoje, kaip ir daugelyje kitų šalių, teisinė situacija aplink web scraping yra pilka zona. Nėra konkretaus įstatymo, kuris tiesiogiai sakytų „web scraping yra draudžiamas” arba „web scraping yra leidžiamas”. Vietoj to, turime interpretuoti esamą teisę – autorių teisių įstatymus, duomenų apsaugos reglamentus, svetainių naudojimo sąlygas ir netgi kompiuterinių nusikaltimų prevencijos teisės aktus.

Teisinis peizažas: ką sako Lietuvos įstatymai

Pradėkime nuo to, kad Lietuva, būdama ES narė, privalo laikytis bendrųjų Europos Sąjungos reglamentų. Tai reiškia, kad BDAR (Bendrasis duomenų apsaugos reglamentas) yra tiesiogiai taikomas. Jei jūsų scraping’o veikla apima asmens duomenų rinkimą – vardus, pavardes, el. pašto adresus, telefono numerius – turite būti ypač atsargūs.

BDAR reikalauja turėti teisinį pagrindą bet kokiam asmens duomenų tvarkymui. „Man reikia šių duomenų verslo tikslais” nėra teisinis pagrindas. Jums reikia arba asmens sutikimo, arba teisėto intereso, arba kito BDAR numatyto pagrindo. Be to, turite informuoti asmenis apie duomenų rinkimą, jų saugojimą ir panaudojimą. Praktiškai tai reiškia, kad masiškai rinkti kontaktinę informaciją iš įvairių svetainių be jokio teisinio pagrindo yra rizikinga.

Kitas svarbus aspektas – autorių teisės. Lietuvos autorių teisių įstatymas saugo ne tik kūrybinius darbus, bet ir duomenų bazes. Jei svetainė turi originaliai struktūrizuotą duomenų bazę, jos kopijavimas gali būti laikomas autorių teisių pažeidimu. Tačiau čia yra niuansas: pati informacija (faktai, skaičiai, viešai prieinami duomenys) paprastai nėra saugoma autorių teisių, tik jos pateikimo forma.

Dar vienas svarbus įstatymas – Elektroninių ryšių įstatymas ir su juo susiję aktai. Jei jūsų scraping’o veikla sukelia didelę apkrovą serveriui ar gali būti laikoma kenkėjiška, teoriškai galėtumėte būti apkaltinti bandymu sutrikdyti sistemos darbą. Nors praktikoje tokie atvejai Lietuvoje yra reti, rizika egzistuoja.

Svetainių naudojimo sąlygos ir robots.txt failas

Daugelis svetainių turi naudojimo sąlygas (Terms of Service), kuriose gali būti aiškiai nurodyta, kad automatizuotas duomenų rinkimas yra draudžiamas. Ar šios sąlygos yra teisiškai privalančios Lietuvoje? Atsakymas – tai priklauso.

Jei jūs aktyviai sutikote su šiomis sąlygomis (pavyzdžiui, užsiregistravę ir pažymėję varnelę), tai laikoma sutartimi tarp jūsų ir svetainės savininko. Sutarties pažeidimas gali turėti teisines pasekmes. Tačiau jei tiesiog naršote viešai prieinamą svetainę be registracijos, situacija tampa sudėtingesnė. Lietuvos teismai dar neturi nusistovėjusios praktikos šiuo klausimu.

Robots.txt failas yra kitas dalykas. Tai tekstinis failas svetainės šakniniame kataloge, kuris nurodo, kokias svetainės dalis galima indeksuoti automatizuotoms sistemoms. Pavyzdžiui:

„`
User-agent: *
Disallow: /admin/
Disallow: /private/
Allow: /public/
„`

Nors robots.txt yra daugiau etiketo standartas nei teisinis reikalavimas, jo ignoravimas gali būti naudojamas kaip įrodymas, kad jūsų veiksmai buvo tyčiniai ir kenkėjiški. Jei svetainė aiškiai nurodo „Disallow: /”, bet jūs vis tiek scraping’uojate, tai silpnina jūsų poziciją bet kokiame teisiniame ginče.

Praktiniai scenarijai: kas legalu, o kas ne

Pabandykime išanalizuoti konkrečius atvejus, su kuriais galite susidurti:

**Scenarijas 1: Kainos monitoringas**
Jūs kuriate palyginimo svetainę ir norite rinkti prekių kainas iš įvairių el. parduotuvių. Tai vienas iš populiariausių web scraping panaudojimų. Ar tai legalu? Jei renkate tik kainas ir pagrindinę produkto informaciją, kuri yra viešai prieinama, ir neperkeliate viso turinio su nuotraukomis ir aprašymais, greičiausiai esate saugioje zonoje. Tačiau turėtumėte:

– Patikrinti kiekvienos svetainės naudojimo sąlygas
– Gerbti robots.txt
– Nedaryti per dažnų užklausų (rate limiting)
– Nenaudoti surinktų duomenų konkurenciniam pranašumui, kuris galėtų būti laikomas nesąžininga konkurencija

**Scenarijas 2: Akademiniai tyrimai**
Renkate duomenis iš socialinių tinklų ar naujienų portalų moksliniam tyrimui. Čia situacija yra šiek tiek palankesnė, nes egzistuoja mokslinių tyrimų išimtys autorių teisių įstatymuose. Tačiau vis tiek turite laikytis BDAR reikalavimų, ypač jei duomenys apima asmens informaciją. Anonimizavimas ir agregavimas yra jūsų draugai.

**Scenarijas 3: Viešųjų duomenų rinkimas**
Lietuvoje turime atvirų duomenų portalą ir įvairias valstybines sistemas, kurios teikia viešą informaciją. Šių duomenų scraping’as paprastai yra saugus, nes jie yra skirti viešam naudojimui. Tačiau geriau naudoti oficialius API, jei tokie egzistuoja.

**Scenarijas 4: Kontaktų rinkimas marketingui**
Tai viena iš rizikingiausių sričių. Rinkti el. pašto adresus, telefono numerius ar kitus kontaktinius duomenis iš svetainių ir vėliau juos naudoti tiesioginiam marketingui yra labai problematiška. Tai tiesiogiai pažeidžia BDAR ir gali baigtis didelėmis baudomis. Valstybinė duomenų apsaugos inspekcija Lietuvoje aktyviai tiria tokius atvejus.

Technologiniai aspektai: kaip scraping’uoti atsakingai

Jei nusprendėte, kad jūsų web scraping projektas yra teisiškai pagrįstas, štai keletas techninių rekomendacijų, kaip tai daryti atsakingai:

**Apribokite užklausų dažnumą**
Nenaudokite agresyvių scraping metodų. Įdiekite vėlinimus tarp užklausų. Python biblioteka `time.sleep()` yra jūsų draugas. Geriau surinkti duomenis per kelias valandas nei per kelias minutes ir sukelti serverio perkrovą.

„`python
import time
import requests

for url in urls:
response = requests.get(url)
# Apdorokite duomenis
time.sleep(2) # 2 sekundžių pauzė
„`

**Identifikuokitės teisingai**
Naudokite tinkamą User-Agent headerį. Neapsimetinėkite esą įprastas naršyklės vartotojas, jei tai yra botas. Geriau būti skaidriam:

„`python
headers = {
‘User-Agent’: ‘JusuBotoPavadinimas/1.0 ([email protected])’
}
„`

**Gerbkite robots.txt**
Python turi įtaisytą biblioteką `urllib.robotparser`, kuri leidžia lengvai patikrinti, ar galite scraping’uoti tam tikrą URL:

„`python
from urllib.robotparser import RobotFileParser

rp = RobotFileParser()
rp.set_url(„https://example.com/robots.txt”)
rp.read()

if rp.can_fetch(„*”, „https://example.com/page”):
# Galite scraping’uoti
pass
„`

**Saugokite surinktus duomenis atsakingai**
Jei renkate bet kokius asmens duomenis, įsitikinkite, kad juos saugote saugiai. Šifruokite duomenų bazes, apribokite prieigą, turėkite duomenų saugojimo ir šalinimo politiką.

Alternatyvos web scraping: kada geriau naudoti API

Prieš pradedant scraping projektą, visada verta patikrinti, ar svetainė neturi oficialaus API. Daugelis šiuolaikinių platformų teikia struktūrizuotą prieigą prie savo duomenų per API, ir tai yra daug saugesnis bei teisiškai aiškesnis kelias.

API naudojimas turi kelis privalumus:
– Aiškios naudojimo sąlygos ir limitai
– Struktūrizuoti duomenys (paprastai JSON formatu)
– Nėra rizikos, kad jūsų kodas nustos veikti dėl svetainės dizaino pakeitimų
– Mažesnė apkrova serverių infrastruktūrai

Pavyzdžiui, jei norite rinkti duomenis iš Twitter, Facebook, Google Maps ar daugelio kitų populiarių platformų, jie visi turi oficialius API. Nors kai kurie yra mokami ar turi apribojimus, tai vis tiek geriau nei rizikuoti teisiniu ginču.

Lietuvoje daugelis valstybinių registrų ir duomenų šaltinių taip pat teikia API prieigą. Juridinių asmenų registras, Nekilnojamojo turto registras, atvirų duomenų portalas – visi jie turi dokumentuotas sąsajas duomenų gavimui.

Realūs atvejai ir precedentai

Nors Lietuvoje dar nėra daug viešai žinomų teismo atvejų, susijusių su web scraping, galime pažvelgti į tarptautinius precedentus, kurie formuoja bendrą supratimą.

2019 metais JAV apeliacinis teismas byloje hiQ Labs prieš LinkedIn nusprendė, kad viešai prieinamos informacijos scraping’as iš LinkedIn profilių nėra kompiuterinio sukčiavimo ir piktnaudžiavimo įstatymo pažeidimas. Tai buvo svarbus precedentas, rodantis, kad viešai prieinami duomenys gali būti scraping’uojami, net jei svetainės savininkas tam prieštarauja.

Tačiau 2022 metais situacija pasikeitė – JAV Aukščiausiasis Teismas grąžino bylą peržiūrėti, ir galutinis sprendimas tapo mažiau palankus scraping’ui. Tai parodo, kad teisinis kraštovaizdis nuolat keičiasi.

Europoje yra buvę atvejų, kai įmonės buvo baudžiamos už agresyvų duomenų rinkimą. Vokietijoje keletas įmonių gavo baudas už konkurentų kainų monitoringą, kai tai buvo daroma taip intensyviai, kad trukdė normaliam svetainių veikimui.

Lietuvoje Valstybinė duomenų apsaugos inspekcija yra išnagrinėjusi skundus, susijusius su asmens duomenų rengimu iš viešų šaltinių. Nors konkrečių detalių dažnai nėra viešinama, žinoma, kad institucija griežtai žiūri į atvejus, kai renkami kontaktiniai duomenys marketingo tikslais.

Kaip apsisaugoti nuo teisinių problemų

Jei planuojate rimtą web scraping projektą, štai keletas praktinių žingsnių, kaip sumažinti teisinius riskus:

**Konsultuokitės su teisininku**
Jei jūsų projektas yra komercinis ar apima didelius duomenų kiekius, investicija į teisinę konsultaciją yra verta. Lietuvis IT teisės specialistas galės įvertinti jūsų konkrečią situaciją ir patarti, kaip struktūrizuoti veiklą.

**Dokumentuokite savo procesus**
Turėkite aiškią politiką, kaip renkate, saugote ir naudojate duomenis. Tai padės, jei kada nors reikės paaiškinti savo veiksmus. Dokumentuokite, kad:
– Renkate tik viešai prieinamus duomenis
– Gerbiate robots.txt ir naudojimo sąlygas
– Nedarysite per didelės apkrovos
– Turite teisėtą interesą duomenims rinkti

**Būkite skaidrūs**
Jei kuriate viešą paslaugą, kuri naudoja scraping’u surinktus duomenis, būkite skaidrūs apie tai. Turėkite privatumo politiką, kuri paaiškina, iš kur gaunate duomenis ir kaip juos naudojate.

**Reaguokite į prašymus sustabdyti**
Jei svetainės savininkas susisiekia su jumis ir prašo nutraukti scraping’ą, geriau sustokite ir pabandykite tartis. Ignoravimas gali virsti teisiniu ginču, kuris kainuos daug daugiau nei alternatyvių sprendimų paieška.

**Naudokite tarpininkus ir proxy**
Nors tai daugiau techninis patarimas, naudojant proxy serverius ir paskirstant užklausas, sumažinate riziką būti užblokuotiems. Tačiau tai neturėtų būti naudojama kaip būdas apeiti aiškius draudimus.

Kas laukia ateityje: reguliavimo tendencijos

Teisinis web scraping reguliavimas nuolat evoliucionuoja. Europos Sąjungoje matome tendenciją link griežtesnio duomenų apsaugos reguliavimo. Planuojamas AI aktas (AI Act) taip pat gali turėti įtakos, nes daug scraping projektų yra susiję su mašininio mokymosi duomenų rengimu.

Lietuva, sekdama ES direktyvas, greičiausiai taip pat griežtins reikalavimus. Jau dabar matome, kad Valstybinė duomenų apsaugos inspekcija tampa aktyvesnė ir skiria didesnes baudas už BDAR pažeidimus.

Kita vertus, auga ir suvokimas apie atvirų duomenų svarbą. Vis daugiau organizacijų teikia API ir skatina duomenų pakartotinį naudojimą. Lietuvos atvirų duomenų portalas plečiasi, ir tikimasi, kad ateityje daugiau valstybinių duomenų bus prieinami struktūrizuota forma.

Technologijų pusėje matome, kaip svetainės tampa vis sudėtingesnės – naudoja JavaScript rendering, CAPTCHA sistemas, bot aptikimo mechanizmus. Tai reiškia, kad techniškai scraping’as tampa sudėtingesnis, bet tuo pačiu ir labiau akivaizdus svetainės savininkams.

Blockchain ir decentralizuoti duomenų šaltiniai gali pakeisti žaidimo taisykles ateityje. Jei duomenys bus saugomi decentralizuotose sistemose su aiškiomis prieigos taisyklėmis, daug dabartinių teisinių klausimų gali tapti nebereikalingi.

Paskutiniai žodžiai apie atsakingą duomenų rinkimą

Web scraping Lietuvoje nėra nei visiškai legalus, nei visiškai nelegalus – tai priklauso nuo to, kaip, ką ir kodėl jūs scraping’uojate. Pagrindinis principas turėtų būti atsakingumas ir pagarba. Jei renkate viešai prieinamus duomenis, nedarote žalos svetainės veikimui, gerbiate privatumą ir turite teisėtą tikslą – greičiausiai esate saugioje zonoje.

Python suteikia galingus įrankius duomenų rinkimui, bet su didele galia ateina ir didelė atsakomybė. Prieš pradėdami bet kokį scraping projektą, atsakykite sau į šiuos klausimus: Ar šie duomenys yra tikrai viešai prieinami? Ar turiu teisėtą interesą juos rinkti? Ar mano veiksmai nekenks svetainės veikimui ar kitų vartotojų patirčiai? Ar laikausi duomenų apsaugos reikalavimų?

Jei atsakymai į visus šiuos klausimus yra teigiami, ir dar pasikonsultavote su teisininku bei įdiegėte gerus techninius sprendimus – jūsų projektas turi gerą šansą būti ne tik techniškai sėkmingas, bet ir teisiškai tvarus. Technologijos vystosi greičiau nei įstatymai, todėl sveiko proto naudojimas ir etiniai principai dažnai yra geriausias vadovas pilkose zonose.

Ir nepamirškite – kartais paprasčiausias sprendimas yra tiesiog parašyti el. laišką svetainės savininkui ir paklausti leidimo. Daugelis organizacijų yra atviros bendradarbiavimui, ypač jei jūsų projektas kuria pridėtinę vertę ar padeda platinti jų turinį. Geriau praleisti valandą deryboms nei mėnesius teisiniuose ginčuose.

Daugiau

Neon serverless postgres