XXIII. reál- és humántudományi Erdélyi Tudományos Diákköri Konferencia (ETDK) [618604]
XXIII. reál- és humántudományi Erdélyi Tudományos Diákköri Konferencia (ETDK)
Kolozsvár, 2020. május 21–24.
Webáruházak termékeinek nyomon követése
adatbányászattal
Szerz ˝ok:
Sala Csaba-Krisztián
Babe¸ s–Bolyai Tudományegyetem, Matematika és Informatika Kar, Informatika szak, III. év
Témavezet ˝ok:
dr. Kolumbán Sándor, egyetemi adjunktus
Babe¸ s–Bolyai Tudományegyetem, Matematika és Informatika Kar
Tartalomjegyzék
Bevezet ˝o 1
1. Betekintés az alkalmazásba 2
1.1. A projekt célja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Meglév ˝o termékek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1. Compari.ro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.2. Otsledit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.3. Listabit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.4. Octoparse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3. Célközönség . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4. Miben más az alkalmazás a meglév ˝okhöz képest . . . . . . . . . . . . . . . . . 5
2. Az alkalmazás m˝ uködése 6
2.1. Kezd ˝olap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2. Termékoldal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3. Termékrészletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.4. Felhasználó szekció . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.4.1. Felhasználói profil . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.4.2. Kedvencek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.4.3. Megfigyelt árak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4.4. Szerepkör fejlesztése . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.5. Elérhet ˝oségek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.6. Kijelentkezés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.7. Nyelv kiválasztása . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.8. Konfigurációs oldal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.9. Admin oldal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.10. Google Chrome Kiegészít ˝o . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3. Technológiák, architektúra 12
3.1. Adatbányászat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.1.1. Kategóriák . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.1.2. Termékoldalak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.1.3. Termék tulajdonságok . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1.4. Karbantartás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2. Adatbázis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3. Back-end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.4. Front-end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4. Statisztikák 19
Következtetések és továbbfejlesztési lehet ˝oségek 20
Bevezet ˝o
A dolgozatot bevezet ˝ovel kezdjük, amelyben általánosan körülírjuk dolgozatunk célját,
motivációját s összefoglaljuk a módszereit. A bevezet ˝o végére egy fejezetenkénti lebontást
teszünk, amely körülírja egyenként a fejezeteket, hivatkozásokkal. Egy példa következik.
A dolgozat hátralev ˝o része a következ ˝oképpen van struktúrálva: az 1. fejezet bemutatja az
ábrák, hívatkozások és kódrészletek helyes felt˝ untetését, majd a 3. fejezet helytartó szöveget
tartalmaz.
Ugyancsak a bevezet ˝o végére kerülhet egy köszönetnyilvánítás rész. Itt említsük
a potenciális szponzorokat, mentorokat és/vagy cégeket, amelyek segítettek a dolgozat
készítésében. Ugyanide kerülhet pár szó a projekt életciklusáról: hogyha nyári szakmai
gyakorlaton látott napvilágot, hogyha csoportos projekt keretein belül is fejlesztés alatt állt,
milyen rendezvények keretén belül volt már bemutatva, volt-e el ˝oz˝o cikk publikálva róla, stb.
1
1. Betekintés az alkalmazásba
Ebben a fejezetben a dolgozat célkit˝ uzései kerülnek tisztázásra, bemutatásra kerül az
alkalmazást használó közönség, illetve a már meglév ˝o, hasonló technológiákkal is szembe van
állítva a projekt, megvitatván ennek el ˝onyeit és az általa behozott lehet ˝oségeket.
1.1. A projekt célja
Az alkalmazás legf ˝obb célja segíteni felhasználóinak megtalálni a legmegfelel ˝obb árakat
egy adott termék esetében. Manapság egyre többen vásárolnak online(forrás), ez az alkalmazás
a tudatos vásárlóknak szól, akik szeretik összehasonlítani az árakat, miel ˝ott megvesznek
valamit. A dolgozat szándéka ennek a folyamatnak a megkönnyítése, illetve felgyorsítása.
Jelent ˝os mennyiség˝ u id ˝ot lehet megtakarítani azáltal, hogy nem sok, különböz ˝o webáruházban
mérik össze a vásárlók a kívánt terméket, hanem elegend ˝o egy felületet használniuk e célra.
Itt össze van gy˝ ujtve több webáruház terméke is, egyszer˝ u összehasonlítást biztosítva a
felhasználók számára. Abban is segít az alkalmazás, hogy csak egy, letisztult és könnyen
alkalmazható felületet kell a felhasználónak igénybe vennie, ezáltal nem kell folytonosan
alkalmazkodnia a különböz ˝o webáruházak kinézetéhez és keresési rendszeréhez.
Az alkalmazás a vásárlók hasznára van akkor is, ha azok nem találták meg a nekik megfelel ˝o
árat. Lehet ˝oségük nyílik egy termék nyomon követésére is, így értesítést kaphatnak, ha annak
ára csökken, vagy esetleg az el ˝ore megszabott határ alá esik. Így a felhasználók passzívan is
nyomon tudják követni a terméket, mivel az árak naponta frissülnek a rendszerben, változás
esetében pedig e-mailes értesítést kapnak. Mindemellett olyan esetekben is követni lehet az
árakat, ha a webáruház, amelyben szerepel az adott termék még nincs a rendszerben. Ez egy
kiegészít ˝o segítségével történik, melyet a felhasználók a böngész ˝ojükbe tudnak telepíteni, majd
ezt alkalmazva kiválaszthatják a követend ˝o árat és megszabhatnak egy elérend ˝o értéket. Ezek
után, hasonlóan a többi termékhez, ezek változásáról is értesítést fognak kapni.
A projekt alkalmazási köre viszont nem csak magánszemélyekre terjed ki, hanem
cégek számára is kedvez ˝o funkcionalitásokat biztosít. Néhány adat megadásával teljes
webáruházaknak képes kinyerni a termékinformációit, így hasznos lehet a vállalat vezet ˝osége
számára abban, hogy módosítsák saját áraikat. Ezáltal, alkalmazkodván a piac jelenlegi
állásához, alkalmuk van több klienst magukhoz vonzani. —- Mindemellett abban is hasznukra
van az alkalmazás, hogy meg tudják figyelni kik árulják ugyanazokat, vagy hasonló termékeket,
mint ˝ok, ily módon el tudják dönteni, hogy milyen irányba haladjanak a jöv ˝oben.
2
1.2. Meglév ˝o termékek
A következ ˝okben felsorolásra kerül néhány hasonló, már létez ˝o alkalmazás,
kihangsúlyozván ezek el ˝onyeit és hátrányait. —- A fejezet végén pedig arra kerül a hangsúly,
hogy a projekt miben nyújt újabb, esetleg hasznosabb funkcionalitásokat.
1.2.1. Compari.ro
Ez az oldal termékek összehasonlítására specializálódik, anyavállalata egy magyarországi
cég, az Online Comparison Shopping Kft. (forrás https://www.compari.ro/static/
despre_noi.html ). Sok webáruház kínálata megtalálható, viszont ezek az áruházak fizetnek
termékeik megjelenítéséért, így partner-viszonyban vannak a céggel. Tehát nem az a m˝ uködési
elvük, hogy bármely áruház termékeit képesek legyenek a felhasználók rendelkezésére állítani,
hanem csak azokét, akik fizetnek ezért. Az oldal használata egyszer˝ u, a termékek ára pedig
három naponta frissül, a változások peig nyomon követhet ˝oek. A cég legnagyobb el ˝onye közé
lehet sorolni azt, hogy ˝ok rendelkeznek az egyik legnagyobb adatbázissal az országban, hiszen
jelenleg 1618 partner cég (forrás https://www.compari.ro/stores/ ) termék információit
birtokolják. Ennek eléréseben szerepet játszhatott a vállalat 16 éves m˝ uködése.
1.2.2. Otsledit
Ez egy kiegészit ˝o a Google Chrome, illetve a Mozilla Firefox böngész ˝okhöz, melynek
segítségével a felhasználók kiválaszthatnak bármilyen szöveget egy weboldalról és nyomon
követhetik annak változását. Az általánosság egy hátránya viszont az, hogy sok esetben az
árakat helytelenül nyeri ki, esetleg más szöveggel együtt. Be lehet állítani az ellenörzések
gyakoriságát, amely az egy perc és 24 óra közti skálán mozoghat, viszont ezek csupán akkor
lesznek végrahajtva, ha a felhasználó böngész ˝oje aktív. Ez az alkalmazás tehát megkíméli a
felhasználót attól, hogy manuálisan kövesse az árak változását, viszont nem nyújt segítséget az
összehasonlításban, illetve új árucikkek felfedezésében, mivel nincs saját adatbázisa ezen célra.
1.2.3. Listabit
Ez egy viszonylag új vállalat, 2019-ben indították. Termékek követésére ad lehet ˝oséget egy
Android alkalmazáson keresztül, egyel ˝ore csupán 15 cég kínálata közül lehet választani(forrás
https://listabit.co/ ). Hátrányai hasonlóak a fent említett eszközéhez: nem lehet a
kínálatot egy egységes helyen szemügyre venni, nem ad lehet ˝oséget az összehasonlításra. Ezen
felül pedig a korlátozott választék is a negatívumok közé sorolható. Viszont alkalmazható olyan
nagy webáruházakra, melyek nem találhatóak meg a compari.ro felhozatalában.
3
1.2.4. Octoparse
Ez a termék f ˝oként cégek számára készült. Lehet ˝oséget nyújt teljes weboldalak adatainak
kinyeréséhez viszonylag egyszer˝ u módon, nem igényel fontos technikai ismereteket. Ez egy
lokális applikáció, amely hasonlóan egy böngész ˝ohöz képes megjeleníteni egy weboldal
tartalmát. Itt kattintásokkal ki lehet választani a kívánt termékeket, a program pedig
megpróbálja felismerni a hasonló elemeket az oldalon. Viszont nagyon sokszor nem a várt
eredményt biztosítja, használata emiatt nehézkes. Ingyenes változatát bárki kipróbálhatja,
azonban ez 10000 kérésre alkalmas. Ezt a határt túllépve a felhasználónak lehet ˝osége
nyílik váltani a fizet ˝os verzióre, mely 75$-tól kezd ˝odik hónaponta. Összességében megfelel ˝o
alkalmazás lehet olyan cégek számára, amelyeknek nincs keretük vagy lehet ˝oségük egy saját
megoldás kifejlesztésére.
1.3. Célközönség
A fejezet elején bemutatásra került, hogy a projekt úgy egyszer˝ u vásárlóknak, mint cégek
számára is segítséget tud nyújtani. Ez a skála viszont nagyon tág és be lehet látni, hogy egy
ennél jóval sz˝ ukebb körben használnák az alkalmazást. A magánszemélyeket tekintve olyan
vásárlók alkalmaznák, akik gyakran rendelnek termékeket az internetr ˝ol. Azontúl nem az
impulzív vásárlói kategóriába tartoznak, tehát olyan személyek, akik nem els ˝o látásra döntenek
egy árucikk mellett, hanem utánaolvasnak, illetve összehasonlítják más termékekkel, több
különböz ˝o áruház kínálatával. Ezen felhasználócsoportnak ideális segítség lehet a webes felület,
mely alkalmazásával gyorsan kiválaszthatják a számukra ideális terméket több, hasonló árucikk
közül, ezután pedig felkereshetik a legjobb árat kínáló webáruházat.
Az ár követésének funkciója azon, még sz˝ ukebb felhasználók csoportjának válhat hasznára,
akik számára nem sürg ˝os a termék megvásárlása. Így lehet ˝oségük nyílik kivárni egy számukra
kedvez ˝obb árat, melyet nem kell aktívan figyelniük csupán néhány gyors beállításra van
szükségük.
Az alkalmazáson belül kétfajta felhasználó van elkülönítve: az ingyenes funkció azok
számára alkalmas, akik csak kevés (maximum 15) terméket akarnak megfigyelni. A prémium
felhasználóknak jóval több (maximum 150) termék követésére van lehet ˝osége, ezen felül egyéb
szolgáltatásokban is részesülhetnek és támogatják az alkalmazás m˝ uködését. Ez a kategória
hasznosnak bizonyulhat gyakori vásárlók számára, illetve kisebb cégeknek is elegend ˝o lehet.
Az eddig felsoroltak mellett nagyobb cégek is javukra fordíthatják az alkalmazás adta
lehet ˝oségeket, mivel kérelmezhetik teljes webáruházak adatainak kinyerését, ezáltal hasznos
rálátást szereznek konkurenciájuk termékeire és áraira. F ˝oként olyan cégek számára lenne ez
megfelel ˝o, amelyeknek még nincs saját megoldásuk efféle információk kinyerésére.
4
1.4. Miben más az alkalmazás a meglév ˝okhöz képest
(nem tudom milyen cím legyen itt)
Bemutatásra került az alkalmazás célja, illetve a célközönség, akik számára el ˝onyös
lehet. Vannak már többé-kevésbé hasonló szolgáltatások a világon, viszont ez a projekt
egyesíteni kívánja a meglév ˝o applikációk el ˝onyeit és továbbfejleszteni azokat, ezáltal maximális
hasznosságot kíván ny˝ ujtani felhasználóinak, id ˝ot és pénzt takarítva meg nekük.
A webáruházak termékeit adatbányászat segítségével gy˝ ujti össze, így nem csupán azon
cégek kínálatának adatait láthatjuk, amelyek fizettek ezért, hanem bármilyen webáruház
áruit meg lehet jeleníteni, ha van erre elegend ˝o er˝oforrás. Ily módon maximalizálni lehet a
választékot, amelyet az alkalmazás a felhasználóinak nyújt.
Emellett lehet ˝oséget ad az árak követésére, nem csupán a meglév ˝o kínálaton belül, hanem
bármilyen webáruházban. A követett termékeket egy egységes felületen keresztül lehet elérni
és egyszer˝ uen módosíthatóak a kívánt árak.
Mindezen funkcionalitáson túl, cégeknek is lehet ˝oséget biztosít egyszer˝ u adatbányászatok
végrehajtására, melyek m˝ uködéséhez elégséges néhány információt szolgáltatni. Ennek a
rendszernek a konkrét megvalósítása részletesen meg van fogalmazva a (hivatkozás) fejezetben.
Összegzésképpen, az alkalmazás igyekszik egyesíteni az összes felsorolt, már létez ˝o
technológia el ˝onyét, mindezt kombinálva egy egyszer˝ u, felhasználóbarát felülettel.
5
2. Az alkalmazás m˝ uködése
Ez a fejezet bemutatni kívánja az alkalmazás m˝ uködését a különböz ˝o felhasználói
szerepkörök szempontjából. Négy felhasználótípust különböztetünk meg, ezeken kívül pedig
egy vendég típust, akinek csupán bejelentkezni vagy regisztrálni van lehet ˝osége. A többi
szerepkör, névszerint a felhasználó, prémium felhasználó, karbantartó és adminisztrátor
rendelkeznek az el ˝ottük felsorolt szerepkörök összes tulajdonságával, de mindegyiknek van
valami egyedi joga az alkalmazáson belül, mellyel az azt megel ˝oz˝oek nem birtokolnak. Ezért
egy hierarchikus rendszer figyelhet ˝o meg, mely részletes bemutatásra kerül a következ ˝okben.
2.1. Kezd ˝olap
Az alkalmazás egy böngész ˝ob˝ol való megnyitása után el ˝oször egy kezd ˝olap fogadja a
látogatót. Ezen oldal lehet ˝oséget biztosít a már regisztrált felhasználóknak a bejelentkezésre,
illetve a vendégeknek alkalmuk van tagságot nyerni, mégpedig többféleképpen. A regisztráció
gombra kattintva egy új oldal jelenik meg a látogató számára, mely egy ˝ urlapot tartalmaz. A
csatlakozás érdekében kötelez ˝o megadni egy valós e-mail címet, illetve egy jelszót, melyet meg
is kell ismételni, az elírások és félregépelések kiküszöbölésének érdekében.
Opcionálisan magadható a vezetéknév, keresztnév, illetve egy profilkép is feltölthet ˝o
a felhasználói élmény személyre szabottságának növelésére. A kép maximálisan 5 MB
méret˝ u lehet, feltöltéskor pedig megjelenik egy el ˝onézet azért, hogy a felhasználó
megbizonyosodhasson arról, hogy megfelel ˝o fájlt töltött fel.
A meghívó nevezet˝ u szövegmez ˝obe egy egyedi kód illeszthet ˝o be, melynek segítségével
karbantartói vagy adminisztrátori szerepkört lehet szerezni az alkalmazáson belül. A meghívót
egy adminisztrátor állíthatja el ˝o és e-mailben küldheti ki. Ez a kód csak egyszer használatos,
ezáltal nem lehet visszaélni vele.
A regisztráció gombra kattintva a beírt adatok feldolgozásra kerülnek, a felhasználó pedig
hibaüzenetet kap, ha valamely kötelez ˝o információ hiányzik vagy ha a két jelszó nem egyezik
meg. Abban az esetben is sikertelen lesz a m˝ uvelet, ha a megadott e-mail cím már használatban
van.
Ha a regisztráció sikerrel járt, akkor a rendszer visszairányítja a felhasználó a kezd ˝olapra,
ahol lehet ˝osége nyílik bejelentkezni. Ez a folyamat három különböz ˝o módon valósulhat meg,
melyb ˝ol az els ˝o a regisztrációnál használt adatok megadását foglalja magában. Ennél meg kell
adni a helyes e-mail címet, illetve jelszót és a bejelentkezés gombra kattintva a felhasználó
átirányítódik a termékoldalra.
A másik két módszer egy harmadik fél szolgáltatásainak segítségével hajtja végre
a bejelentkezést, ugyanis a felhasználó Google, illetve Facebook profilja alapján is
6
megvalósítható a folyamat. Mindkét esetben felugrik egy új ablak, melyekben meg lehet adni
a megfelel ˝o jogokat a kell ˝o személyes információk (e-mail cím, név, profilkép) elérésére az
alkalmazás számára, ezek után pedig az el ˝obb leírt módon megvalósul a bejelentkezés.
Mobilnézeten, illetve kis képerny ˝okön a kezd ˝olapon csupán az el ˝oz˝oleg leírt felület jelenik
meg. Nagyobb (>900 pixel) képerny ˝okön viszont emellett egy címet is láthat a felhasználó az
alkalmazás nevével, ennek a Price Observer kódnév volt választva, továbbá néhány sor szöveg is
megjelenik, bemutatva a f ˝obb funkcionalitásokat. Ennek a szekciónak a háttere véletlenszer˝ uen
generált alakzatokból áll, ezek színe, mérete és pozíciója minden újratöltésnél változik, ezért
minden alkalommal egy új háttér fogadja a felhasználót.
2.2. Termékoldal
Ez az oldal elérhet ˝o az összes bejelentkezett felhasználó számára. Itt megtekinthet ˝o az
összes tárolt termék, mindegyiknek látszik a neve, a jelenlegi ára, továbbá az eredeti oldal
emblémájával van jelezve a származási helye, illetve az ottani kategóriája is fel van t˝ untetve. A
legtöbb terméknek képe is van ( ha eredetileg is volt), viszont ha a felhasználó nem szeretné a
képeket is figyelni, hanem csupán a szöveges információkra kíváncsi, akkor ki tudja kapcsolni
ezek megjelenítését. Továbbá az is megvalósítható err ˝ol a felületr ˝ol, hogy a felhasználó a
kedvenc termékei közé helyezze az adott árucikket, így értesítést kaphat, ha csökken az ára.
Az oldal alján található a lapozás funkció, hiszen egyszerre csak 16 termék jelenik meg
a képerny ˝on. A lapozással egyszer˝ uen lehet váltani az el ˝oz˝o vagy következ ˝o oldalra, illetve a
számokat is lehet használni a gyorsabb ugrások érdekében.
Különböz ˝o rendszerezési módokat is lehet használni ezen a felületen, mellyel sz˝ ukíthet ˝o
a megjelen ˝o termékek mennyisége egy-egy specifikus tényez ˝o által. A legegyszer˝ ubb
rendszerezés a webáruház kiválasztásával történik, ez esetben csak azok a termékek jelennek
meg, melyek a kiválasztott üzletb ˝ol származnak. Azon felül megjelennek az adott áruház
termékkategóriái is, melyeket alkalmazva még jobban sz˝ ukíteni lehet a termékeket.
Az oldal tetején található keres ˝o mez ˝o használatával név szerint lehet keresni egyes
árucikkekre. Ide beírva egy szót a felhasználó azokat a termékeket kapja válaszul, melyeknek
neve tartalmazza ezt a szót, viszont ha elgépelt egy bet˝ ut, esetleg nem tudja a pontos nevet, akkor
más eredményt kaphat válaszul, vagy éppen semmit. Ennek a problémának a kiküszöbölése
érdekében használható az intelligens keresés funkció, amely akkor is képes eredményeket
visszaadni, ha ezek nem tartalmazzák a megadott kifejezést. Ez esetben azokat a termékeket
téríti vissza, melyeknek neve vagy kategóriájuk neve legközelebb áll a beírt kifejezéshez.
Ilyenkor a legmegfelel ˝obb termékek szerint csökken ˝o sorrendbe helyezi ˝oket.
7
2.3. Termékrészletek
Az el ˝obb felvázolt oldalon a felhasználó egy termékre kattintva egy olyan oldalra jut, mely
az adott árucikk összes tulajdonságát tartalmazza. Itt megfigyelheti ugyanazokat az adatokat,
amelyeket azel ˝ott, viszont rendelkezésére állnak termék-specifikus információk, esetleges
leírások is, továbbá az itt található linkekkel felkeresheti az áruházat, ahonnan megvásárolhatja
a terméket. Az oldal alján megfigyelhet ˝o egy grafikon, ahol fel van t˝ untetve az árak változása
id˝orendi sorrendben, így el lehet dönteni, hogy mennyire megfelel ˝o a jelenlegi összeg a
múltbeliekhez képest.
Ha a termék a felhasználó kedvencei közé tartozik, akkor a jelenlegi ár alatt be lehet állítani a
kívánt árat (amelynél a felhasználó értesítést fog kapni). Itt meg lehet adni egy konkrét összeget
(bármit, ami kevesebb a jelenlegi árnál), illetve egy százalékos csökkenés is megszabható. Ezek
után egy gomb megnyomásával frissül a beállítás.
2.4. Felhasználó szekció
A navigációs sávon a fiók menüpontra kattintva megjelenik a felhasználó szekció, mely
elemei a következ ˝okben kerülnek bemutatásra.
2.4.1. Felhasználói profil
A felhasználó a fiókjával kapcsolatos információkat tudja módosítani ezen az oldalon,
mégpedig a nevét, a profilképét, illetve a jelszavát is (feltéve, ha helyesen megadja a régi
jelszót). Az e-mail cím nem változtatható, mivel az minden felhasználó esetén egyedi. Emellett
azt is láthatja, hogy mikor regisztrált, hány termék van a kedvencei közt, illetve a szerepkörét is
ellen ˝orizheti.
2.4.2. Kedvencek
Ez az oldal hasonló a termékoldalhoz avval a különbséggel, hogy nem az összes elérhet ˝o
árucikk jeleneik meg, hanem csak azok, amelyeket a felhasználó a kedvencei közé helyezett.
Hasonlóan lehet használni az oldal tetején a keres ˝omez ˝ot, az alján pedig a lapozás funkciót.
Amint a felhasználó eltávolít egy elemet a kedvencei közül, az nem t˝ unik el egyb ˝ol (a véletlen
kattintások kivédése érdekében), hanem a keres ˝o doboz melletti frissítés gombot használva meg
lehet er ˝osíteni ezt a döntést.
8
2.4.3. Megfigyelt árak
Itt ellen ˝orizheti a felhasználó azokat az árakat, amelyeket a Google Chrome kiegészít ˝ovel
(referencia) választott ki egy olyan oldalról, amelyet még nem tartalmaz a rendszer adatbázisa.
Táblázatos formában látható a termék linkje, a jelenlegi ára, a kívánt összeg, amely módosítható,
illetve lehet ˝oség adódik a követés törlésére is.
2.4.4. Szerepkör fejlesztése
Ezt a menüpontot kiválasztva láthatóvá válnak a prémium felhasználói szerepkör el ˝onyei,
a legfontosabb különbségek abból fakadnak, hogy míg az egyszer˝ u felhasználó csupán 15
terméket helyezhet kedvencei közé és 10-et követhet egy küls ˝o oldalról, addig prémium
tagsággal ezek a számok 150-re, illetve 100-ra növekednek. Emellett támogatja a weboldal
m˝ uködését is egy egyszer fizetéssel, melyet a PayPal rendszer segítségével lehet végrehajtani.
A fizetés történhet bármilyen bankkártyával, egy meglév ˝o PayPal fiók használata viszont tovább
gyorsítja a folyamatot.
Abban az esetben, ha ezek az árkövetési mennyiségek is kevésnek bizonyulnak, f ˝oként
cégek esetében, felkereshet ˝o az Elérhet ˝oségek (referencia) oldal, ahol e-mailen keresztül lehet
tárgyalni a felhasználói jogok kib ˝ovítésér ˝ol.
2.5. Elérhet ˝oségek
Egy ˝ urlap kitöltésével automatikusan e-mailt lehet küldeni a weboldal m˝ uködtet ˝ojének
különböz ˝o témakörökben, mint a felhasználói szerepkör kib ˝ovítése, használattal kapcsolatos
kérdések, illetve más esetekben is. Megadható egy e-mail cím, ha azt részesíti el ˝onyben a
felhasználó az ilyen típusú kommunikációkra avval szemben, amivel regisztrált, továbbá egy
telefonszám is biztosítható. Kötelez ˝o kiválasztani a beszélgetés témáját (az említettek közül) és
az üzenet szövege sem elhanyagolható.
2.6. Kijelentkezés
Erre a menüpontra kattintva a felhasználó ki tud jelentkezni a fiókjából. Ez hasznosnak
bizonyulhat abban az esetben, ha egy másik fiókot szeretne használni, vagy egy publikus
számítógépen volt bejelentkezve. Érdemes megemlíteni azt is, hogy a rendszer biztonsági
szempontokból 1 óra inaktivitás után automatikusan kijelentkezteti a felhasználót.
9
2.7. Nyelv kiválasztása
A navigációs sáv jobb oldalán a megfelel ˝o zászlócskát kiválasztva az oldal nyelve változni
fog.
2.8. Konfigurációs oldal
Ez az oldal már csak a karbantartó és adminisztrátori szerepkör számára elérhet ˝o. Itt
lehetséges létrehozni, módosítani és törölni azokat a konfigurációs állományokat, amelyek
alapján az adatbányászat történik.
A bal oldalon szerkeszthet ˝oek a konfiguráció elemei, míg a jobb oldal el ˝onézetként szolgál,
látható a végs ˝o JSON formátum. Szükséges megadni els ˝oként azt az URL címet, ahonnan az
adatbányászat kezd ˝odni fog. Ha több ilyen van, akkor dinamikusan újabb szövegdobozokat
lehet létrehozni, vagy esetleg törölni is. Ez a rugalmas b ˝ovíthet ˝oség az egész oldalon
megismétl ˝odik a szövegmez ˝ok és nagyobb csoportosulások esetében, így általánosan lehet
illeszteni ezt a szerkezetet minden webáruházra.
A következ ˝o részekben be lehet állítani néhány jellemz ˝ot gombok segítségével, ezek után
pedig a kategóriákra vonatkozó rész következik. Itt megadhatóak az áruház f ˝okategóriáinak
elérési módjai, ezeknek pedig rendre alkategóriáik is lehetnek, tetsz ˝oleges mélységben.
A termékinformációk beírásánál megfigyelhet ˝o, hogy van 7 mez ˝o, amelyek jelenléte
kötelez ˝o. Ezek a termék szükséges adatait jelzik, mint a név és ár, ezért nem lehet ˝oket törölni.
Ezeken kívül megadhatóak áruház-specifikus tulajdonságok is. A továbbiakban meg lehet adni
az értékelések, illetve a termékjellemz ˝ok elérésére vonatkozó információkat is.
Az el ˝onézet gombot, vagy az Enter billenty˝ ut lenyomva lehet frissíteni a jobb oldalon
megjelen ˝o objektumot. Ezt le is lehet tölteni egy megadott állomány névvel, vagy feltölthet ˝o
a szerverre a tárolt konfigurációs állományok közé. Az utolsó három gomb ezekkel az
állományokkal végez m˝ uveleteket. Be lehet tölteni egyet, így automatikusan frissül az oldal
és a megfelel ˝o szövegmez ˝ok a betöltött adatokkal. Módosítás után felül lehet írni az állományt,
végül pedig szükség esetén a törlés is megvalósítható.
2.9. Admin oldal
Nevéb ˝ol is meg lehet ítélni, hogy ezen oldal csupán az adminisztrátor szerepkör számára
elérhet ˝o. Itt lehetséges meghívókat küldeni a regisztrációhoz, ennek a folyamatnak az
elindításához egy e-mail cím, illetve a kívánt szerepkör megadása szükséges. Egyéb m˝ uveletek
kirendelése is elérhet ˝o err ˝ol a felületr ˝ol, mint a termék árak frissítésének elrendelése. Ennek
a gombnak a megnyomásával elindul az adatbányászat, melynek során minden elérhet ˝o
terméknek le lesz kérve az új ára, amely ezután bekerül az adatbázisba.
10
Ennél kevésbé id ˝oigényes folyamatok is indíthatók, mint a kedvenc termékek, illetve
a követett termékek adatainak frissítése. Ez esetben nem szükséges az összes terméket
feldolgozni, csupán azokat, amelyeket a felhasználók nyomon követnek. Az árak frissítése után
a felhasználók automatikusan e-mailes értesítést kapnak, ha az összegek számukra megfelel ˝o
módon változtak.
2.10. Google Chrome Kiegészít ˝o
A Chrome böngész ˝ore telepíthet ˝o ez a kiegészít ˝o, mely segítségével kiválasztható bármilyen
ár egy weboldalon, ezt pedig át lehet küldeni az alkalmazásnak, hogy kerüljön be a követend ˝o
termékek közé.
Használata a kiegészít ˝o ikonjára kattintva kezd ˝odik, ezután ki lehet választani az árat, majd
pedig a felugró ablakban rögzíthet ˝o a kívánt ár is. Ezek után szükséges lehet az alkalmazásba
való bejelentkezés is, ha ez el ˝oz˝oleg nem történt meg, ellenkez ˝oleg pedig a felhasználó
adatai mentve maradnak egy órán keresztül, így elég megnyomni a küldés gombot a m˝ uvelet
befejezésére.
Ha a felhasználó meghaladta a szerepköréhez tartozó maximális követések számát, akkor
egy hibaüzenetet kap.
11
1. ábra. Kommunikációs diagram.
3. Technológiák, architektúra
Ebben a fejezetben bemutatásra kerül a projekt bels ˝o szerkezete, a komponensek
architektúrái, illetve a használt technológiák. Az alkalmazás legfontosabb alkotóelemei
a következök: adatbányászattal foglalkozó komponens Pythonban a Scrapy keretrendszert
használva, Node.js REST API back-end szerver, SQL Server adatbázis, React front-end,
illetve Google Chrome kiegészít ˝o. Ezek együttm˝ uködését az 1. ábrán szerepl ˝o kommunikációs
diagram szemlélteti.
3.1. Adatbányászat
Ez a komponens felel ˝os a termékadatok gy˝ ujtéséért webáruházakból, használva a
2. fejezetben említett konfigurációs állományokat. A projekt elején részletes kutatás
történt a megfelel ˝o eszköz kiválasztásának érdekében az adatbányászat megvalósításának
szempontjából. A döntés a Scrapy keretrendszerre esett, mivel ez egy nyílt forráskódú projekt,
mely 2008 óta publikus, több cég is el ˝oszeretettel használja teljesítménye és skálázhatósága
miatt (https://scrapy.org/companies/), illetve egy kiterjedt és aktív közösségnek örvendhet. Ez
a keretrendszer hozzájárul a teljes adatbányászati tevékenység elvégzéséhez, mivel lehet ˝oség
van a letöltést, feldolgozást, tisztítást és tárolást is ennek keretei közt végezni. Evvel
ellentétben a BeautyfulSoup szintén egy közkedvelt Python könyvtár, az viszont csak az adatok
feldolgozásában segít a fejleszt ˝oknek és f ˝oként kisebb projektekre alkalmas.
A Scrapy keretrendszer használatakor a fejleszt ˝ok spider-eknek nevezett szkripteket fognak
írni weboldalak adatainak feldolgozására. Innen lehet kéréseket küldeni URL-ek használatával
és a kapott válaszokból is ebben a programegységben lesznek kinyerve a hasznos adatok. A
tényleges letöltést a keretrendszer evvel foglalkozó része intézi, a különböz ˝o egységek közti
kommunikációt a Scrapy motra valósítja meg. Ezek személyre szabhatóak, viszont a standard
12
m˝ uködés elegend ˝onek bizonyult a projekt során.
Egy webáruház els ˝o alkalommal való bányászatakor három spider kerül felhasználásra
egymás után. Az els ˝o az áruház kategóriáiról szerez információkat, mégpedig ezek nevét,
linkjeit, az egymás közti örökl ˝odési viszonyokat (f ˝okategóriák, alkategóriák), illetve hogy
tartalmaznak-e termékeket vagy sem. Az információk kinyerése a konfigurációs állomány
alapján történik, amely specifikusan a szóban forgó áruházra volt készítve. Ez JSON formátumú
kulcs-érték párokat tartalmaz, XPath-ek vannak tárolva benne. XPath-ek segítségével
kiválaszthatóak nódusok egy XML típusú dokumentumból, így megfelel ˝o eszköznek bizonyul
a weboldal HTML törzsének feldolgozására.
3.1.1. Kategóriák
A kategóriák információinak megszerzése egy rekurzív függvény alkalmazásával történik,
mivel általánosan nem lehet el ˝ore tudni, hogy egy webáruházban milyen mélységig tartanak
a kategória-oldalak a termékoldalak el ˝ott. A függvény képes kéréseket küldeni minden
alkategória esetén, ha ezek elérésére egy új oldalt szükséges betölteni. Abban az esetben viszont
ha ezek adatai a f ˝okategóriával azonos weboldalon találhatók, nem fog ismét betölt ˝odni az
említett weblap, ezáltal id ˝o és er ˝oforrás lesz megtakarítva.
A kinyert információk egy objektumban lesznek tárolva, mely tovább van küldve a
keretrendszer által a pipeline-hoz, ami az adatok tisztításáért és tárolásáért felel ˝os szekció.
Itt az objektum átvezethet ˝o tetsz ˝oleges számú függvényen, melyek különböz ˝o módosításokat
végeznek rajta. El ˝oször a duplikátumok kisz˝ urése hajtódik végre a kategóriák linkjei alapján
(mivel ezek egyediek kell legyenek). Ezután az adatok tisztítása történik, ami a kategóriák
esetén a fölösleges fehérkarakterek törlését foglalja magában. Végül az adatbázisba való
beszúrás történik.
Az adatbázissal való kapcsolat megteremtése, illetve a m˝ uveletek végrehajtása a pyodbc
modul használatával történik. Biztosítani kell számára egy SQL Server drivert, az adatbázis
nevét, illetve az azonosításhoz szükséges információkat. A kapcsolat létrejötte után egyszer˝ uen
végre lehet hajtani bármilyen SQL parancsot.
3.1.2. Termékoldalak
A második spider az els ˝o eredményeire alapoz. Ez a terméklistákból gy˝ ujt adatokat,
mégpedig a termékek nevét árát, linkjét és opcionálisan a képet, az értékelések számát és értékét.
Gy˝ ujthet ˝ok ezeken felül is információk, melyek a termékrészlet oldalon fognak megjelenni,
mivel attribútumként szúródnak be.
Ez a program alapértelmezetten lekéri az adatbázisból az összes olyan kategóriát egy
adott webáruház esetén, melyek tartalmaznak termékeket. Ezek sorra be lesznek járva, viszont
13
ha tartalmaznak egy következ ˝o termékoldalra vezet ˝o linket, akkor az is fel lesz dolgozva
rekurzívan. Mivel léteznek olyan webáruházak, amelyek több millió árucikket is tartalmaznak
(pl. eMAG 4 millió, forrás), ezért a parancssorból meg lehet adni egy kategória nevét vagy
azonosítóját, ez esetben pedig csupán abból és annak alkategóriáiból lesznek lekérve és
feldolgozva a termékek.
A konfigurációs állomány több lehet ˝oséget is biztosít a lekért adatok helyességének
maximalizálására, így meg lehet adni például az oldalon használt tizedespont típusát. Ez
esetben nagy összegeknél is helyes mennyiség lesz beszúrva az adatbázisba (ugyanaz az ár
egyes oldalakon 56,720.13 lehet míg másokon 56 720,13). Továbbá, ha az áruház szerkezete
nem konzisztens, akkor több XPath-et is meg lehet adni egy termék esetén, a program pedig
kipróbálja az összeset és kiválasztja a megfelel ˝ot. Az is lehetséges, hogy két lekért adat
egyesítve legyen (ha például az ár egész- és tizedesrésze külön szerepel). Ez esetben az
állományban meg lehet határozni egy egyesít ˝o karaktert (mint a pont vagy a vessz ˝o), az elérési
információk pedig egy tömbbe kerülnek, jelezvén azt, hogy egy egységbe tartoznak. Ez a
m˝ uvelet még a spider részben hajtódik végre, így a pipeline-hoz már egységes adatként kerülhet
át.
A duplikátumok kisz˝ urése ez esetben is a kategóriákhoz hasonlóan történik, a tisztítás
viszont már hosszasabb folyamattá válik, f ˝oként az ár helyes meghatározása érdekében. Ez a
m˝ uvelet többek közt a fehérkarakterek kisz˝ uréséb ˝ol, a tizedespont átalakításából és reguláris
kifejezés használatából áll. Mindezek után a termék adatai külön táblázatokba kerülnek a
(referencia) fejezetben bemutatott kritériumok alapján.
3.1.3. Termék tulajdonságok
Az utolsó spider, amely szükséges egy teljes webáruház termékinformációinak lementésére,
bejárja egyenként a termékeket és összegy˝ ujti ezek tulajdonságait és opcionálisan a felhasználók
véleményeit, kommentjeit. Ez a legid ˝oigényesebb folyamat, amint látszik a statisztikákból
is (referencia), hiszen minden árucikk esetén egy új kérést kell küldeni a szerver fele. Az
is megfigyelhet ˝o, hogy ez a lépés nem kötelez ˝o, mivel minden elengedhetetlen információ
már rendelkezésre áll az el ˝obbi két lépés után, így ezt a spidert a teljesség kedvéért érdemes
lefuttatni.
A konfigurációban meg lehet határozni a tulajdonságok nevének és értékének XPath-jét (ha
az oldalon ezek kulcs-érték formában jelennek meg), vagy konkrét nevet is lehet adni (ha csak az
érték szerepel). Abban az esetben ha egy névhez több tulajdonság is tartozik, a nevek számozva
lesznek a megkülönvöztetés megkönnyítésének érdekében.
A kommenteknek kinyerhet ˝o a szerz ˝oje, címe, szövege és dátuma. Ha ezekb ˝ol több oldalnyi
van, akkor a termékekhez hasonlóan azok is be lesznek járva. Feldolgozásnál az értékelések
14
szövegéb ˝ol és a tulajdonságok értékéb ˝ol ki lesznek törölve az oda nem ill ˝o fehérkarakterek,
továbbá a dátum egységes stílusra lesz hozva (mivel a webáruházak általában különböz ˝o id˝o
formátumokat alkalmaznak).
3.1.4. Karbantartás
A fent említett három spider mellett további hármat lehet alkalmazni a karbantartási
feladatok elvégzésére. Ezek m˝ uködésükben hasonlóak az eddigiekhez, így nem kerülnek
részletes bemutatásra.
Az els ˝o célja az adatbázisban lev ˝o termékek árainak frissítése. Ezt egyszer˝ uen meg lehet
hívni az alkalmazás adminisztrátori felületér ˝ol (referencia), ezek után pedig egyenként bejárja
az összes terméket és frissíti az árakat. Emiatt szükséges a terméktulajdonságok közé kötelez ˝oen
beírni az ár XPath-jét.
A második spidert arra lehet használni, hogy a felhasználók kedvenc termékeinek árát
lekérje és összehasonlítsa a kívánt összeggel. Ez lényegesen gyorsabb az el ˝oz˝onél (mivel nem
kell az összes terméket lekérni), ebb ˝ol adódóan gyakrabban végrehajtható. Az adatbázisba való
beszúrásnál az ár mindenképp frissülni fog, még ha nem is történt változás. A kedvencek tábla
viszont csak akkor lesz frissíve, ha az ár tényleges elérte a kívánt összeget.
Az utolsó adatbányászattal foglalkozó szkript azokat a termékeket frissíti, amelyeket a
felhasználó a Chrome kiegészít ˝o segítségével követett be. Ezeknek el van tárolva a linkje, illetve
az ár XPath-je, így feldolgozva ezen információkat a megfelel ˝o táblázat (referencia) frissülni
fog az el ˝obbihez hasonló módon.
3.2. Adatbázis
Az adatok tárólására a Microsoft SQL Server adatbázis-kezel ˝o rendszer volt használva.
F˝oként azért erre esett a választás, mert komplex lekérdezéseket lehet vele végrehajtani,
rendelkezésre állnak hasznos parancsok és adatszerkezetek (pl. CTE, kurzorok, temporális
táblák, változók), mely funkciókra szükség volt az alkalmazás fejlesztése során. Továbbá egy
könnyen kezelhet ˝o, de sokoldalú felhasználói felülettel rendelkezik az adatbázis kezelésére,
a lekérdezések kipróbálására és optimalizálására (statisztikák, végrehajtási terv megjelenítése,
futási id ˝o mérése). Végül pedig ez egy kiforrott rendszer, így nem okozott problémát a kapcsolat
megteremtése úgy a Node.js szerverr ˝ol, mint a Python programokból sem.
Az adatbázis tábláinak szerkezetét, illetve a köztük lev ˝o kapcsolatokat a 2. ábra illusztrálja.
Az alkalmazás m˝ uködtetése során termékek és felhasználók információi lesznek rögzítve, ezért
észrevehet ˝o, hogy a Product (Termék) és a Users (Felhasználók) tábla köré csoportosul a többi
is, amelyek tulajdonságokat tárolnak, vagy összekötik ezen központi egységeket (Favourites).
15
2. ábra. Adatbázis táblák szerkezete és kapcsolatai.
Az adatbányászat során el ˝oször a webáruház és a kategóriák információi lesznek beírva a
megfelel ˝o WebPage és Category táblákba a 3.1.1 fejezetben leírtak szerint. A második lépésben
a Product, Price (Ár), illetve Rating (Értékelés) lesznek benépesítve. Ezek külön bontásának
oka az, hogy sok esetben nem létezik értékelés egy termékhez, így el lehet kerülni a fölösleges
NULL értékek tárolását. Az Ár tábla pedig egy termék esetén több árat is tartalmazhat, hiszen
minden frissítés alkalmával egy új ár szúródik be az aktuális dátummal, nem pedig felülíródik
a régi. Ennek köszönhet ˝oen meg lehet figyelni a termékekért kért összeg id ˝obeli változását,
ezek alapján statisztikák állíthatóak össze, vagy egyszer˝ uen segít a felhasználóknak dönteni a
vásárlásban.
A harmadik lépés során (3.1.3) az Attribute (Tulajdonság) és a Comment
(Komment/Vélemény) táblákba kerülnek adatok. Ezek szintén több értéket tárolhatnak,
viszont jelenlétük nem kötelez ˝o, így lehetnek üresek is egy termék esetén.
A Users (Felhasználók) tábla csak a webalkalmazás által használt. A 2.1. fejezetben
említésre került a legtöbb adat, így itt a jelszavak biztonsága lesz kifejtve részletesebben.
Regisztrációkor a felhasználó jelszava hashelve lesz a PBKDF2 (referencia) algoritmussal,
amelynek egy véletlenszer˝ uen el ˝oállított só is meg lesz adva. Ezáltal az azonos jelszavaknak
is más hash értékük lesz. Mivel ez egy egyoldalú m˝ uvelet (a hashelt jelszót nem lehet
visszafejteni), ezért a sót is eltároljuk az adatbázisban. A hash 10000 iteráción alatt készül el,
végs ˝o hossza pedig 512 karakter lesz.
Minden bejelentkezés esetén a beírt jelszó az el ˝obb leírt folyamaton megy keresztül,
16
alkalmazva a tárolt sót. Ezért a helyes jelszó ellen ˝orzése a két hash érték összehasonlításával
történik.
A Google és Facebook által történ ˝o bejelentkezés során nem lesz jelszó tárolva, mivel ebben
az esetben a hitelesítést a harmadik fél végzi.
Az Invitations (Meghívók) táblába egy egyedi, véletlenszer˝ u karakterekb ˝ol álló string,
illetve egy szerepkör megnevezése kerül be abban az esetben, amikor az adminisztrátor egy
meghívót küld ki (2.9). Amint ezt a kódot használva sikeresen regisztráltak, ez azonnal törl ˝odik
az adatbázisból.
3.3. Back-end
Ez a szerver kapcsolatot teremt a kliensréteg és az adatbázis között. Továbbá szerepe van
az adatbányászat elindításában is, így a f ˝o irányító egységnek nevezhet ˝o a projekten belül.
Legfontosabb funkciója a REST API-ként való m˝ uködés.
A szerver Node.js nyelvben van megírva, amely megengedi a JavaScript nyelv használatát
egy böngész ˝on kívül a Chrome V8 JavaScript motorra építve (https://nodejs.org/en/). Ezt
alkalmazva nem csupán ugyanaz a programozási nyelv válik használhatóvá kliens- és
szerveroldalon is, hanem elérhet ˝ové válik az npm csomagkezel ˝o szolgáltatás és annak több mint
1,2 millió csomagja (http://www.modulecounts.com/). Ezek közül az egyik legelterjedtebb az
express, amelyet hetente akár 12 milliószor is letölthetnek.
Az express egy web keretrendszer, amely egyszer˝ uvé teszi a http hívások kezelését, statikus
állományok felszolgálását és rengeteg más back-end feladatra alkalmas, ezért erre esett a
választás a megfelel ˝o keretrendszer keresésekor. Meg lehet határozni különböz ˝o route-okat
(útvonalak) és el lehet dönteni, hogy az ezekre érkez ˝o kérések esetén az alkalmazás hogyan
viselkedjen (pl. a /api/products útvonalra küldött GET kérés során a szerver visszatéríti az
összes terméket az adatbázisból).
Mivel a f ˝o cél ezen a rétegen egy állapot nélküli REST API szerver kialakítása, így az összes
útvonal a /api el˝otaggal fog rendelkezni. Más kérések esetén két dolog történhet. Fejlesztési
módban a szerver egy 404 státuszkóddal rendelkez ˝o hibaüzenetet fog visszadobni, mivel a kért
útvonal nem található. Gyártási üzemmódban viszont a back-end feladatköre kib ˝ovül: az API
kérések teljesítése mellett a kliens oldalat is fel kell szolgálnia, így bármely kérés, amely nem a
szóban forgó útvonallal kezd ˝odik, a statikus kliens állományt fogja válaszul kapni, amely majd
a megfelel ˝o választ fogja adni a kérésre.
Az állapotmentesség meg ˝orzése, viszont az útvonalak védelme és az erre szolgáló
hitelesítés megvalósítása JWT-vel, vagyis JSON Web Token-ek használatával történik. Sikeres
bejelentkezéskor a felhasználók cookiejában (süti) egy token lesz elraktározva, amely azt
17
igazolja, hogy ˝ok ténylegesen bejelentkeztek és a token-ben tárolt szerepkörrel rendelkeznek.
Ezek után minden védett útvonal elérése el ˝ott ez a süti ellen ˝orizve lesz és ennek helyessége
szerint válik elérhet ˝ové vagy tiltottá a kért er ˝oforrás a felhasználó számára. Ezek a tokenek egy,
csak a szerver számára ismert titkos kulccsal vannak titkosítva, így bármilyen küls ˝o módosítás
érvénytelenné teszi ˝oket. Emellett egy lejárati dátummal is rendelkeznek, mely az alkalmazás
esetén 1 óra. Ezen módszer használatával ki lehet küszöbölni a session (munkamenet)
használatát, és elérhet ˝ové válik a szerver nagymérték˝ u skálázhatósága (mivel a titkos kulcs
ismeretében egy szerver instancia el tudja dönteni egy token hitelességét még akkor is, ha
el˝oz˝oleg nem ˝o szolgálta ki az adott felhasználót).
További biztonsági intézkedések a cors és a helmet (források) nev˝ u npm csomagok
alkalmazásával történnek. Ezen felül az SQL injection kivédése és hasonló biztonsági rések
kiküszöbölése is ezen a rétegen történik.
Az adatbázishoz való csatlakozás az msnodesqlv8 csomag került használatra, amely
lehet ˝ové teszi a connection pooling (kapcsolatok gyorsítótárazása) használatát. A kérések
végrehajtásakor lehetséges Promise-okkal dolgozni (forrásokat) (így az async/await szintaxis
is használható), amely nagyban el ˝osegíti a kód olvashatóságát és áttekinthet ˝oségét.
Az adatbányászat elindításához a beépített child_process Node.js modul volt alkalmazva,
amely folyamatok indítására alkalmas, így parancssori utasítások használatával futtathatók
a Scrapy spiderek, ezen felül a kimenet is továbbítható, ebb ˝ol pedig elkülöníthet ˝oek a
hibaüzenetek az egyszer˝ u naplózástól.
E-mailek küldésére a nodemailer csomag használható, amelynek szükséges megadni egy
szolgáltatót és azonosítási információkat. Ezek után egyszer˝ uen küldhet ˝ok úgy szöveges, mint
HTML által formázott e-mailek több címzett számára is. Így a kedvenc termékek frissítésekor
minden releváns felhasználó egyszerre értesülhet a változásokról.
3.4. Front-end
18
4. Statisztikák
Ebben a fejezetben írhatnám le a különböz ˝o tesztek kimeneteleit, eredményeit. Ide tartozó
tesztesetekre néhány példa:
• Els ˝onek kipróbáltam, hogy mennyi id ˝obe telik leszedni az összes terméket 6 különböz ˝o
weboldalról. Ebb ˝ol összegy˝ ult annyi adat, hogy kb 3 statisztikának megfelel.
• fizet ˝os proxik kipróbálása: sebesség mérés evvel és enélkül
• request per second különböz ˝o oldalakon – számít-e, hogy mekkora az oldal, ilyesmi
• védelem tesztelése: milyen hamar blokkolnak le, mennyi id ˝ore, milyen kapcsolatban áll
ez a cég méretével stb
• memóriaigény mindezen esetekben
• internetes adathasználat
• cachelés mennyi helyet foglal – mikor éri meg
• mennyiben befolyásolják a dolgokat a http headerek, pl ha user agentként kijelentem,
hogy egy bot vagyok
•konkurrens scrapelések esetleg ez
alatt
mit
értesz?• Hogyan változnak a termékárak egyes oldalakon az id ˝o folyamán
•Milyen terhelést bír ki a weboldalam, hány felhasználó egyszerre
engem
ez
annyira
nem
hoz
lázbaMondhatjuk, hogy átlagosan 1 oldal/ szempont? kb 10
19
Következtetések és továbbfejlesztési lehet ˝oségek
Ez is lesz 1 oldal legalább.
20
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: XXIII. reál- és humántudományi Erdélyi Tudományos Diákköri Konferencia (ETDK) [618604] (ID: 618604)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
