You are on page 1of 68

УНИВЕРЗИТЕТ У БАЊОЈ ЛУЦИ

ЕЛЕКТРОТЕХНИЧКИ ФАКУЛТЕТ

Марко Шкорић

Анализа конекција на социјалним мрежама

дипломски рад

Бања Лука, јун 2021.


Тема: Анализа конекција на социјалним мрежама

Кључне ријечи:
Социјалне мреже
Веб scraping
Сигурност и приватност корисника
HTML језик
Граф

Комисија: доц. др Милош Љубојевић, предсједник проф.


др Зоран Ђурић, ментор
Дијана Вуковић Грбић, ма, члан

Кандидат:
Марко Шкорић
УНИВЕРЗИТЕТ У БАЊОЈ ЛУЦИ
ЕЛЕКТРОТЕХНИЧКИ ФАКУЛТЕТ
КАТЕДРА ЗА РАЧУНАРСТВО И ИНФОРМАТИКУ

Предмет: Сигурност на интернету

Тема: Анализа конекција на социјалним мрежама

Задатак: Социјалне мреже. Специфичности социјалних мрежа у


погледу сигурности и приватности корисника.
Прикупљање података о особама путем социјалних
мрежа. Преглед сличних алата. Креирање графа
конекција нa некој социјалној мрежи. Анализа
детектованих конекција у виду смислу сепарације
привилегија, заједничких интересовања и сл.

Ментор: проф. др Зоран Ђурић

Кандидат: Марко Шкорић (1189/15)

Бања Лука, јун 2021.


САДРЖАЈ

1. УВОД......................................................................................................................................................................1
2. СОЦИЈАЛНЕ МРЕЖЕ..........................................................................................................................................3
2.1 Историја социјалних мрежа........................................................................................................................3
2.2 Карактеристикe социјалних мрежа............................................................................................................6
2.3.1 Facebook....................................................................................................................................................7
2.3.2 Twitter........................................................................................................................................................8
2.3.3 Instagram...................................................................................................................................................8
2.3.4 Youtube......................................................................................................................................................9
3. СПЕЦИФИЧНОСТИ СОЦИЈАЛНИХ МРЕЖА У ПОГЛЕДУ СИГУРНОСТИ И ПРИВАТНОСТИ
КОРИСНИКА...............................................................................................................................................................10
3.1 Приватност и сигурност............................................................................................................................10
3.2 Пријетње по сигурност и приватност.......................................................................................................11
3.2.1 Социјални инжењеринг и обрнути напади социјалног инжењеринга..............................................12
3.2.2 Крађа идентитета................................................................................................................................13
3.2.3 Spamming напад.....................................................................................................................................14
3.2.4 Малициозни program..............................................................................................................................15
3.2.5 Cross-Site scripting.................................................................................................................................16
3.2.6 Data Mining и Inference напад...............................................................................................................17
3.2.7 Sybil и крађа идентитета....................................................................................................................18
3.2.8 Clickjacking, LikeJacking и Cursorjacking.............................................................................................18
3.3 Мјере заштите од напада...........................................................................................................................20
3.3.1 Мјере заштите од phishing напада.....................................................................................................20
3.3.2 Мјере заштите од sybil напада............................................................................................................21
3.3.3 Мјере заштите од spamming напада...................................................................................................22
4. ПРИКУПЉАЊЕ ПОДАТАКА О ОСОБАМА ПУТЕМ СОЦИЈАЛНИХ МРЕЖА.......................................23
4.1 Типови података.........................................................................................................................................23
4.2 Начини прикупљања података..................................................................................................................23
4.2.1 Прикупљање података путем АPI-ја..................................................................................................24
4.2.2 Прикупљање података помоћу веб scraping-а...................................................................................25
5. ПРЕГЛЕД СЛИЧНИХ АЛАТА..........................................................................................................................29
5.1 Прикупљање података...............................................................................................................................29
5.1.1 Octoparse.................................................................................................................................................29
5.1.2 Dexi.io......................................................................................................................................................30
5.2 Визуелизација графа..................................................................................................................................31
5.2.1 NodeXL....................................................................................................................................................31
5.2.2 Gephi........................................................................................................................................................32
6. ПРАКТИЧНИ РАД..............................................................................................................................................34
6.1 Архитектура................................................................................................................................................34
6.2 Прикупљање података...............................................................................................................................35
6.2.1 Пријава на Facebook профил................................................................................................................36
6.2.2 Проналазак корисничког налога за генерисање графа.......................................................................37
6.2.3 Креирање листе пријатеља..................................................................................................................39
6.2.4 Креирање графа.....................................................................................................................................43
6.2.5 Ограничења............................................................................................................................................46
6.3 Визуелизација графа..................................................................................................................................47
7. ПРИЛОГ...............................................................................................................................................................51
7.1 Примјер креираног графа..........................................................................................................................51
8. ЗАКЉУЧАК.........................................................................................................................................................54
ЛИТЕРАТУРА.............................................................................................................................................................55
1. УВОД
Интернет и социјалне мреже драстично су промијенили начин на који данас
комуницирамо. Такви сајтови и апликације постале су важне комуникационе платформе
које су интегрисане у свакодневни живот многих корисника. Прије социјалних мрежа,
средства за комуникацију и размјену информација била су веома ограничена, a примјери
су: IRC (енг. Internet Relay Chat) и ICQ. IRC је развијен 1988 године и намјењен је
првенствено за групну комуникацију у форумима за дискусију који се зову канали (енг.
channels), али је била могућа комуникација са појединим корисницима путем приватних
порука и дијељене фајлова. ICQ је развијен средином 90-тих и био је први instant
messaging програм који је користио графички интерфејс и био је једноставан за
инсталирање и кориштење. ICQ је дјеломично крив за усвајање аватара, скраћеница и
стикера који се данас користе у комуникацији. Социјалне мреже су такође замглиле
границу између живота корисника ван мреже и на мрежи и створили илузију блискости и
интимности преко веба (енг. web), што је резултовало дјељење значајне количине података
за које би корисници можда више жељели да остану приватни. Корисници социјалних
мрежа нису само извор информација, они су такође мете. Размјена личних података о
идентификацији, као што су пол ,старост, образовање, локација, адреса и други лични
подаци попут личних и породичних фотографија, могу помоћи у успостављању идентитета
које малициозни корисници и рекламне компаније могу лако доћи у посјед и искористити.
Малициозни корисници искориштавају недостатак свијести корисника социјалних мрежа
да би прикупили личне податке које је корисник оставио јавно доступним како би начини
неку штету, продали податке другима итд. Рекламне компаније могу да користе податке да
би побољшали своје маркетиншке стратегије, пронашли потенцијалне купце итд. Како
социјалне мреже играју битну улогу у животу многих корисника, чини их атрактивном
комуникационом платформом за истраживање, прикупљање података, визуелизацију и
анализу тих података.
У другој глави је дефинисан појам социјалне мреже. Описан је историјски развој
социјалних мрежа, наведене су карактеристике које издвајају социјалне мреже у односу на
друге веб сајтове. Дат је опис социјалних мрежа као што су: Facebook 1, Twitter2, Instagram3
и Youtube4, гдје су наведене основне карактеристике сваке социјалне мреже. У трећој глави
су дефинисани појмови сигурност и приватност у односу на социјалне мреже. Наведени су
и различити извори на социјалним мрежама који могу да наруше приватност корисника.
Описани су неки од најчешћих типова напада на социјалне мреже као што су: социјални
инжењеринг, обрнути социјални инжењеринг, крађа идентитета, spamming, малициозни
програми, cross-site scripting, data mining и inference напад, sybil, clickjacking, likejacking и
cursorjacking, као и примјери тих напада који су се десили на социјалним мрежама. Након
тога су описане мјере заштите против претходно наведених напада. У четвртој глави су
1
https://www.facebook.com/
2
https://twitter.com/
3
https://www.instagram.com/
4
https://www.youtube.com/
наведени типови података које можемо видјети на социјалним мрежама као и у ком облику
се ти подаци могу пронаћи. Описани су начини прикупљања података помоћу API (енг.
Application Programming Interface)-ја и веб scraping-a, као и њихове предности и мане. У
тачки прикупљање података помоћу веб scraping-а су дефинисани кључни појмови HTML
(енг. Hyper Text Markup Language) језика, а потом су наведени тагови и атрибути који нам
олакшавају позиционирање елемената и сакупљање података са неког веб сајта, затим су
описани атрибути и ознаке XPath (енг. XML Path) језика који представља један од
алтернативних метода за позиционирање елемената на веб страници. У петој глави је дат
преглед сличних алата за прикупљање и визуелизацију тих података. У шестој глави
описан је практични рад, а на крају рада је дат закључак.

2
2. СОЦИЈАЛНЕ МРЕЖЕ
Социјалне мреже представљају виртуелне заједнице у којима се корисници
охрабрују да се повежу, комуницирају и ступе у интеракцију са другим корисницима у
мрежи. Корисници социјалних мрежа могу да ступе у интеракцију са другима
објављивањем личних података, дијељењем информација и вијести, постављањем видео
снимака и слика или слањем порука другима у истој мрежи помоћу функције ћаскања (енг.
chat) [1]. Према Boyd и Ellison [2], социјалне мреже су дефинисане као веб услуге и
апликације које омогућавају корисницима да креирају јавни, полујавни или приватни
профил у ограниченом систему. Корисници могу да крeирају листу пријатеља која садржи
друге кориснике у истој мрежи са којима дијеле заједничка интересовања или везе. Свака
социјална мрежа има другу сврху, стога се природа и номенклатура могу разликовати у
зависности од социјалне мреже. Mark Zuckerberg оснивач Facebook-а наводи:
„Желио сам да створим окружење у којем би људи могли да дијеле све
информације које желе, али такође да имају контролу над тим с ким те информације
дијеле“ [3].

2.1 Историја социјалних мрежа


Социјалне мреже су еволуирале током година и прошле су кроз многе фазе развоја да
би достигле своје тренутно стање. Према претходним дефиницијама социјалних мрежа,
први препознатљиви облик социјалних мрежа који је подстицао кориснике да укључују
личне податке у сврху социјалне мреже настао је 1997. године, веб сајт назван SixDegree
[2](слика 2.1).

Слика 2.1 – Изглед веб странице SixDegree5.

5
https://interestingengineering.com/a-chronological-history-of-social-media посјећено: 22.05.2021.године.

3
Омогућавао је корисницима отварање личних налога и креирање листе пријатеља.
SixDegree на свом врхунцу је привукао преко милион корисника [4]. Међутим, иако је
SixDegree успио да постане популаран и привуче велики број корисника, сајт није успио да
одржи своју популарност [2]. У 2001. години SixDegree.com је угашен.
Иако је SixDegree угашен, концепт стварања виртуелних заједница је инспирисао
друге развојне програмере (енг. developers) [5]. Почетком 2000-тих, порастао је број људи
који су имали приступ интернету [6], стога је циљана публика била много већа. Ово је
помогло у остваривању успјеха и повећању популарности социјалних мрежа као што је
Friendster (слика 2.2). Корисницима је представио могућност проналажења пријатеља, а
затим пријатеље од пријатеља, и на тај начин је проширио своју мрежу и дијелио више
информација са другим корисницима [7].

Слика 2.2 – Изглед веб странице Friendster6.


Огромно ширење социјалних мрежа почело је почетком 2003. године, тада је
покренут МySpace (слика 2.3), који је у то вријеме постао најпопуларнија социјална мрежа
на свијету [2]. Myspace се разликовао од осталих конкурената давајући корисницима
слободу да прилагоде изглед својих профила.

6
https://www.wired.com/2011/04/friendster-zuckerberg/, посјећено: 14.01.2021.године.

4
Слика 2.3 – Изглед веб странице MySpace7.
У 2004-тој години Facebook (слика 2.4) је покренут као социјална мрежа само на
Hardvard-у, потом постаје најпопуларнија социјална мрежa 2008. године, претекавши
Myspace. Facebook успијева да одржи свој успјех унапређивањем сајта и додавањем нових
функционалности (енг. features) [8].

Слика 2.4 – Изглед веб странице Facebook у 2004-тој години8.

7
https://crackmagazine.net/2019/04/over-450000-lost-myspace-songs-have-been-retrieved/, посјећено:
05.01.2021.године.
8
https://www.072info.com/pogledajte-facebook-iz-2004/, посјећено: 05.01.2021.године.

5
Тренутно постоје многе социјалне мреже, свака дизајнирана да служи различитој
публици и има другачији стил који је разликује од осталих социјалних мрежа. Слика 2.5
илуструје огромaн раст социјалних мрежа од 2004 до 2018. године.

Слика 2.5 – Приказ раста популарности социјалних мрежа од 2004 до 20189.

2.2 Карактеристикe социјалних мрежа


Према истраживањима које су заједнички спровели универзитет Rice10, универзитет
Meryland11 и институт Max Planck12 за софтверске системе, социјалне мреже се могу
разликовати од осталих веб апликација заснованих на пет основних карактеристика.
Анализирали су које су то карактеристике великих социјалних мрежа које су их учиниле
толико успјешним [9]. Те карактеристике су сљедеће:
1. Засноване на корисницима: Прије него што су друштвене мреже попут Facebook-а
или МySpace-а постале норма, веб сајтови су се заснивали на садржају који је један
корисник ажурирао, а посјетиоци интернета то читали. Проток информација је био
у једном правцу, а смјер будућих ажурирања одредио је webmaster или развојни
програмер. Социјалне мреже корисници сами граде и усмјеравају. Без корисника
мрежа би била празан простор испуњена празним форумима, апликацијама и
причаоницама (енг. chat rooms). Корисници мрежу попуњавају разговорима и
садржајем. Правац тог садржаја одређује свако ко учествује у дискусији. То је оно
што социјалне мреже чини толико узбудљивијим и динамичнијим за кориснике
интернета.
2. Интерактивне: Још једна карактеристика модерних социјалних мрежа је да су
интерактивне. То значи да социјална мрежа више није само скуп причаоница и
форума. Веб странице попут Facebook-а су пуне апликација за играње, гдје можете
заједно играти покер или изазвати пријатеља на партију шаха. Ове социјалне мреже
9
https://ourworldindata.org/rise-of-social-media
10
https://www.rice.edu/
11
https://www.umd.edu/
12
https://www.mpg.de/institutes

6
брзо постају забава које многи људи бирају умјесто телевизије, јер је то више од
забаве, то је начин повезивања и забаве са пријатељима.
3. Заједницом вођене: Социјалне мреже су изграђене и напредују од концепта
заједнице. Као што се заједнице или друштвене групе широм свијета заснивају на
чињеници да чланови имају заједничка интересовања или хобије, и социјалне
мреже се заснивају на истом принципу. Не само да можете да откријете нове
пријатеље унутар заједница чији чланови дијеле заједничке интересе, већ можете и
да се поново повежете са старим пријатељима са којима сте изгубили контакт прије
много година.
4. Везе: За разлику од веб страница из прошлости социјалне мреже успијевају на
везама. Што више веза имате, то сте више ближи центру те мреже. Када имате само
20 контаката и на тој страници објавите биљешку или ажурирање, тај садржај се
шири кроз мрежу контаката и подконтаката која је много већа него што можете да
замислите.
5. Емотивни фактор: Још једна јединствена карактеристика социјалних мрежа је
емотивни фактор. Иако су веб странице из прошлости биле првенствено усмјерене
на пружање информација посјетиоцу, социјална мрежа заправо пружа корисницима
емотивну сигурност и осећај да без обзира на то шта се догоди, њихови пријатељи
на дохват руке.

2.3 Типови социјалних мрежа


Социјалне мреже се могу разликовати на основу њихове намјене и
функционалности. На примјер, Twitter је прикладна локација ако корисник жели да
пошаље кратку поруку великој публици, али је непрактично комуницирати са другим
корисницима ако је порука већа од 280 карактера. Слично томе, ако корисник жели да
објави видео поруку умјесто текста, најпогоднија апликација је Youtube. У овом параграфу
описујемо четири социјалне мреже: Facebook, Twitter, Instagram и Youtube. Свака од ових
социјалних мрежа има другачију сврху, различите функционалности и пружа кориснику
различита искуства.

7
2.3.1 Facebook
Након регистрације, корисници стварају измјенљиве профиле и ту откривају
информације о себи. Могу да поставе текст, слике и други мултимедијални садржај, који
се дијели са другим корисницима који су пристали да буду њихови „пријатељи“, или са
свим корисницима, у зависности од подешавања приватности. Корисници могу да користе
уграђене апликације, придружују се групама, те да примају обавјештења о активностима
својих пријатеља на Facebook-у (слика 2.6).

Слика 2.6 – Почетна страница Facebook-а.


2.3.2 Twitter
Twitter (слика 2.7) допушта кориснику да постави твит-поруку која не може да
пређе 280 карактера [10]. Твитови се објављују на корисничком профилу и испоручују се
другим корисницима који су се пријавили да их добијају. Они који креирају твитове могу
да ограниче испоруку само на оне из свог круга пријатеља, док је услуга у старту
подешена тако да шаље уносе свима онима који се на њих пријаве [10]. Твитови могу да
садрже ознаке (енг. tags) састављене од појмова са префиксом # (енг. hashtags). На овај
начин се омогућава лакше проналажење твитова на одређену тему.

8
Слика 2.7 – Почетна страница Twitter-a.
2.3.3 Instagram
Instagram (слика 2.8) има врло ограничену функционалност у поређењу са
Facebook-oм. Корисници не пружају личне податке на својим профилима као што то могу
да учине на Facebook-у. Instagraм је дизајниран да дјелује као огроман колаборативни
виртуелни фото албум. Главна функционалност корисника је постављање фотографија и
видео записа. Корисници могу да бирају да ли своје профиле желе учинити јавним или
приватним. Још једна карактеристика која је уведена у Instagram су директне поруке (енг.
direct message) и неограничени број прича (енг. story). Директне поруке омогућавају
кориснику који прати другог корисника да пошаље приватну поруку. Прималац поруке не
мора бити пратилац пошиљаоца да би примио поруку.

Слика 2.8 – Почетна страница Instagram-a.

9
2.3.4 Youtube
Youtube (слика 2.9) даје корисницима могућност постављања, прегледа,
оцjењивања, дјељења, додавања на плејлисту, коментарисања видео записа и
„претплаћивања“ на корисничке канале. Нуди широк спектар корисничког садржаја као и
видео записе медијских компанија. Доступни садржај укључује видео записе, исјечке
телевизијских програма, музичке спотове, кратке и документарне филмове, аудио снимке,
трејлере филмова и друге садржаје попут видео блогова и образовних садржаја. Већину
садржаја на Youtube-у постављају појединци и медијске компаније које нуде дио свог
садржаја путем Youtube-а. Нерегистровани корисници не могу да постављају видео записе
или да их коментаришу.

Слика 2.9 – Почетна страница Youtube -a.

10
3. СПЕЦИФИЧНОСТИ СОЦИЈАЛНИХ МРЕЖА У ПОГЛЕДУ
СИГУРНОСТИ И ПРИВАТНОСТИ КОРИСНИКА
Иако социјалне мреже пружају бројне погодности појединцима, попут одржавања
контакта са пријатељима и породицом, приватност и сигурност сматрају се критичним
питањем које може угрозити кориснике [11]. Разлог лежи у томе што социјалне мреже
подстичу своје кориснике да открију пуно личних података о себи обећавајући им боље
корисничко искуство ако то учине [12]. Када се корисници први пут пријаве на Facebook-у,
Facebook ће им тражити или им предложити да ажурирају свој профил додавањем више
личних података као што су датум рођења, родни град, радно мјесто, у коју школу иду итд.
како би пронашли више пријатеља и уживали у коришђењу. Популарност социјалних
мрежа и чињеница да садрже огромне количине информација чине ове веб странице
атрактивном метом за злонамјерне хакере (енг. Malicious hacker). Пријетње социјалним
мрежама се могу подјелити у двије различите групе: сигурност и приватност.
3.1 Приватност и сигурност
Изрази приватност и сигурност понекада се преклапају и корисници и научници
могу да их користе наизмјенично. Kако би се обезбједила јаснија концептуализација,
кључни појмови приватност и сигурност се дефинишу на сљедећи начин у односу на
социјалне мреже:
 Сигурност: у социјалним мрежама сигурносне пријетње проистичу из техничких
рањивости мреже [13]. 2009. године Secure Enterprise 2.0 Forum идентификовао је и
набројао осам главних сигурносних пријетњи које се могу јавити приликом коришћења
социјалних мрежа [14]: недовољне контроле аутентикације; cross-site scripting, cross-site
request forgery; phishing; цурење информација (енг. Information leaking), интегритет
информација, insufficient anti-automation; injection flaws.
 Приватност: генерално приватност се бави контролом над протоком личних
података корисника, укључујући приступ, пренос, складиштење, управљање и размјену
података [13]. Када корисници објављују личне податке, имају могућност да
контролишу ко може видјети објављени садржај. Међутим, крши се њихова приватност
када друге стране прикупљају њихове податке и користе их без њиховог пристанка, што
указује на то да корисник заправо није имао контролу над својим информацијама.
Кршење приватности у социјалним мрежама може дoћи из четири различита извора и
могу се анализирати с обзиром на то ко може да наруши приватност корисника [15]:
1. Администратор/сервис провајдер социјалних мрежа: то укључује развојне
програмере социјалних мрежа који чувају информације корисника на својим
серверима и имају им приступ. Тренутна архитектура клијента и сервера
социјалних мрежа у суштини значи да корисници морају да вјерују провајдерима
социјалних мрежа да ће заштити све приватне личне податке које су поставили на
своје налоге, јер немају другог избора осим да им вјерују. Међутим, провајдери
услуга социјалних мрежа могу да стекну многе користи од прикупљања,
испитивања и дјељења личних података корисника, на примјер у рекламне сврхе.
Било би потребно да провајдери социјалних мрежа податке чувају криптоване (енг.

11
encryption), тако да ни једна страна, чак ни провајдери социјалних мрежа не могу да
приступе или прегледају информације, осим ако им власник не допусти.
2. Интернет сервис провајдери: прикупљају податке као што су: URL (енг. Uniform
Resource Locator) сајтова које посјећујете, колико дуго проводите времена на некој
веб страници, ваша тренутна локација итд. Неке земље могу захтјевати од
провајдера интернет услуга да прикупљају информације о томе шта корисник гледа
на социјалним мрежама, а те информације влада може прикупљати у различите
сврхе као што је откривање терористичких напада. Међутим, провајдери интернет
услуга такође могу да продају информације које прикупе рекламним компанијама.
Извршни директор (eng chief executive officer-CEO) NebuAd-а, америчке компаније
за онлајн оглашавање изјавио је да су његови огласи прилагоћени корисницима на
основу података прикупљених и купљених од извора укључујући ISPs (енг. The
International Ship and Port Facility Security) [16].
3. Апликације треће стране: Многе социјалне мреже нуде независним апликативним
сервисима приступ својој веб страници. На примјер то може укључивати игре и
квизове који пружају веб страници додатне функције за корисника [17]. Корисници
овим апликацијам морају одобрити приступ личним подацима прије него што их
почну користити, јер је такав приступ потребан неким апликацијама да изврше
своје функције [18]. На примјер, хороскопска апликације на Facebook-у мора да зна
датум рођења корисника. Нажалост ни провајдери услуга социјалних мрежа, а ни
корисници нису тачно упознати који су подаци заправо потребни апликацијама. Као
резултат тога корисници социјалних мрежа немају другог избора осим да вјерују
апликацијама да прикупљају само потребне информације. Поред тога, недостаје
механизам за надгледање како ове апликације манипулишу личним подацима
корисника. Ово омогућава апликацијама да потенцијално злоупотријебе личне
податке корисника, на примјер позната Facebook апликација под називом “Compare
Friends” обећала је да ће заштитити приватност корисника, који су изразили
мишљење о својим пријатељима путем те апликације, међутим касније је откривено
да је Facebook понудио да продаје те податке другим корисницима [19].
4. Остали корисници у мрежи: Остали корисници се могу подјелити у двије врсте:
1. Поуздани корисници: свако коме корисник даје приступ својим
информацијама, на примјер пратиоци или пријатељи.
2. Злонамјерни нападачи: свако ко покуша да приступи личном профилу
корисника обмањујући корисника или покретањем напада на корисника да би
добио приступ.
Међутим приватност и сигурност у социјалним мрежама могу се преклапати јер
кршење сигурности може резултовати кршењем приватности [20].

3.2 Пријетње по сигурност и приватност


Социјалне мреже могу да буду мета неколико типова напада као што је phishing,
spamming, clickjacking, cross site scripting итд. У овом параграфу описујемо неке
уобичајене нападе на социјалне мреже.

12
3.2.1 Социјални инжењеринг и обрнути напади социјалног инжењеринга
Главни покретач напада на социјални инжењеринг је чињеница да корисници
социјалних мрежа нису свјесни стварне вриједности и значаја приватних информација, и
као резултат тога не обраћају много пажње на то да заштите податке од напада
злонамјерних корисника.
Обрнути напад социјалног инжењеринга је још једна пријетња социјалних мрежа, у
којима злонамјерни нападач обмањује корисника да га контактира помоћу различитих
врста техника. Након што корисник иницира везу, тада је већи степен повјерења
успостављен између нападача и корисника. Након успостављања ове везе са превареним
корисником нападач започиње своје злонамјерне радње, попут phishing-a и spamming-a
[21].
У марту 2012. године догодио се напад на социјални инжењеринг на Facebook-у, у
којем су нападачи створили лажни Facebook налог под именом Admiral James Stavridis,
NATO SACEUR (енг. Supreme Allied Commander Europe), и тако су малициозни корисници
заинтeресовали његове пријатеље и колеге да контактирају тај налог и дају им повјерљиве
информације помоћу техника социјалног инжењеринга [22].
Напади социјалног инжењеринга могу се постићи употребом различитих
механизама. На примјер, „phishing“ је техника која се користи за подстицање корисника да
ради ствари пожељне за нападаче. Злонамјерни корисник ствара лажне mail-ове или веб
странице да би се представљао као поуздан ентитет попут банке како би обмануо
кориснике да открију приватне информације. Примјер социјалног инжењеринга помоћу
phishing-a је приказан на слици 3.1, а фазе напада су:
1. Нападач шаље е-mail жртви,
2. Корисник прима е-mail са PDF (енг. Portable Document Format) фајлом, наводно од
банке,
3. Корисник отвара фајл и тиме покреће малициозни програм,
4. Малициозни програм краде корисникове креденцијале,
5. Малициозни програм шаље украдене податке нападачу.

Слика 3.1 – Примјер напада на социјални инжењеринг помоћу phishing-a.

13
Pretext је још једна техника која се користи за извођење напада социјалног
инжењеринга. Са овом техником нападач привлачи кориснике да открију поверљиве
информације или омогуће приступ сервису или систему, користећи лаж или лажни мотив,
познат као pretext. Примјер Pretext напада је приказан на слици 3.2, а фазе напада су:
1. Нападач се представља као агенција која трага за фото моделима и приликом
пријаве на конкурс захтијева слање личних слика,
2. Жртва шаље примјере својих слика,
3. Нападач поставља фотографије на сајтове са порнографским садржајем.

Слика 3.2 – Примјер напада на социјални инжењеринг помоћу pretext-a.

3.2.2 Крађа идентитета


Крађа идентитета је врста напада на социјалним мрежама, у којем злонамјерни
корисник покушава да сакупи личне податке корисника социјалних мрежа како би могао
да се представља као жртва и тиме стекне неке користи или наштети жртви. Постоје
различите методе за покретање напада на крађу идентитета, укључујући крађу идентитета,
прихватање захтјева за пријатељство од непознатих људи, дијељење података о налогу са
другима, кликање на линкове које воде корисника на друге веб странице, преузимање
бесплатних апликација, ниска подешавања приватности итд. Ова врста напада на
социјалне мреже може потећи из мреже или изван ње. Напади изнутра се дешавају када
легитимни корисник социјалне мреже почиње да се понаша малициозно. С друге стране,
покрећу се друге врсте напада од злонамјерних корисника и изван социјалних мрежа.
Phising - у овој врсти напада злонамјерни корисник покушава да украде жртвине
личне податке, попут његових креденцијала или података о кредитној картици, лажним
представљањем да је легитимни корисник или ентитет као што је банка.
Spear-phishing је посебна врста phishing напада у којем нападач циља ограничену
групу појединаца високог профила, очекујући да ће извући информације о таквим
корисницима. Кључни фактор успјеха напада Spear-phishing је познавање циљаних

14
корисника. Нападач пошаље е-mail жртви, а чини се да је послата од легитимног
корисника, са намјером да украде личне податке попут лозинке, податке о кредитној
картици итд [23].
Нападачу су потребне и e-mail адресе корисника да би покренуо spear-phishing
напад. Може да претражује профиле жртава или да покуша да погоди e-mail адресу
користећи уобичајене формате е-mail адреса. Према спроведеној истрази Trend Micro13 из
2012. године, готово половина е-mail адреса може се лако пронаћи једноставном претрагом
на Google-у, и већину осталих можете открити комбиновањем имена корисника са
доменom е-mail компаније [24]. На слици 3.3 је илустрована разлика између phishing и
spear-phishing напада.

Слика 3.3 – Приказ разлике између Phishing и Spear-phishing14.

3.2.3 Spamming напад


Главна сврха spammer-а је слање огромног броја mail-ова за оглашавање и продају
својих производа и тако добијају осјетљиве информације о корисницима (нпр. корисничко
име и лозинку) маскирајући се као поуздана страна (нпр. банке). Тако осјетљиве
информације могу се добити помоћу лажних корисничких налога на социјалним мрежама
који су креирали злонамјерни корисници. Овим приступом нападач шаље насумичан број
захтјева за пријатељство корисницима социјалних мрежа и чека да они прихвате захтјеве
за пријатељство.
Напад 3-clique може се користити као техника за откривање најрањивијих
корисника социјалних мрежа. Након што било који рањиви корисник прихвати захтјев за
пријатељство, нападач шаље захтјеве за пријатељство пријатељима рањивог корисника
[25]. Прихватање захтјева за пријатељство нападача од било којих пријатеља рањивог
корисника такође повећава шансу нападача да угрози приватност мање доступних чланова
социјалне мреже. Користећи ову технику, информације које дијеле чланови социјалне
мреже постају рањиви на нападе инфилтрације (енг. Infiltration attacks). Ова врста напада
је моћно средство које користe нападачи да изврше spamming (слика 3.4) или phishing
нападе [26].

13
https://www.trendmicro.com/en_us/business.html
14
https://it-seal.de/en/spear-phishing-malware-from-your-boss/, посјећено: 05.03.2021.године.

15
16
Слика 3.4 –Spamming напад15.
3.2.4 Малициозни program
Малициозни програм је дизајниран да нанесе штету рачунарским системима или
преузме контролу над њиховим радом како би добио осjетљиве информације. Малициозни
програм се лако може ширити у социјалним мрежама због главне особине социјалних
мрежа, а то је повезивање великог броја корисника.

Слика 3.5-Koobface порука на Facebook-у16.


На примјер, Koobface је био први злонамjерни софтвер који се ширио у многим
социјалним мрежама, укључујући Facebook и Twitter. 2008 године Koobface се првобитно
15
https://blog.malwarebytes.com/cybercrime/social-engineering-cybercrime/2018/06/social-media-a-treasure-
trove-of-spam-and-scams/, посјећено: 05.03.2021.године.
16
https://www.forcepoint.com/es/blog/x-labs/new-koobface-campaign-spreading-facebook, посјећено:
15.03.2021.године.

17
проширио на Facebook-у достављањем порука од стране зараженог корисника својим
Facebook пријатељима. Порука (слика 3.5) се такође могла послати аутоматски и са лажног
налога који је креирао сам Koobface, који се временом спријатељио са корисницима
социјалних мрежa. У поруку је био уграђен URL који је водио заинтригиране кориснике на
лажну Facebook страницу и тако их преварили да инсталирају Koobface. Главна сврха
Koobface-а је била крађа личних информација корисника, укључујући информације о
њиховој пријави, и покретање неких злонамјерних активности попут слања нежељених
порука [27].

3.2.5 Cross-Site scripting


XSS је врста напада на веб апликације, укључујући социјалне мреже, у којој
нападач убацује злонамјерни код у циљне веб странице и подстиче корисника да покрене
злонамјерни код како би украо његове осетљиве информације.
XSS напад је постао учесталији од када су HTML и AJAX (енг. Asynchronous
JavaScript and XML) интегрисани. Нападач вара корисника да кликне на злонамјерни линк
да би искористио XSS рањивости. Другим рјечима, веб претраживач може да пошаље XSS
захтјеве у име корисника помоћу АJAX технологијe [28].
Нападачи могу да користе XSS скрипте у социјалним мрежама за стварање XSS
црва (енг. XSS worms), познатији као XSS вируси. Овај злонамјерни код се може
проширити међу корисницима социјалних мрежа аутоматски и могу их заразити на
различите начине у зависности од врсте постојеће рањивости.

Слика 3.6-JavaScript код Mikeyy вируса 17.


Samy је пример XSS црва који се проширио у МySpace-у 2005. године. Овај XSS
црв, који је написан у JavaScript-у, успио је да генерише милион захтјева за пријатељство
за мање од 20 сати, што је резултовало готово заустављање Мyspace-а на 2 сата [29]. Још
један примјер XSS напада био је Mikeyy (слика 3.6), који је циљао Тwitter 2009. године.
Микeyy је био XSS црв који је послао скоро 10.000 аутоматизованих твитова (слика 3.7)
који експлоатишу сигурносне рањивости на Тwitter-у [27].

18
Слика 3.7-Аутоматизоване поруке Mikeyy вируса 17.

3.2.6 Data Mining и Inference напад


Истраживање података је моћно средство у рукама истраживача за откривање
драгоцјеног садржаја из велике количине података. Иако су информације прикупљене са
социјалних мрежа коришћењем техника data mining-а, оне могу бити користан ресурс за
процјену социјалних мрежа и побољшању квалитета услуга, нападачи такође могу
користити те информације да извуку податке које могу угрозити приватност корисника.
Напад inference је примјер технике претраживања података који нападачи користе
за прикупљање осјетљивих података анализом релативно безначајних података. Главна
разлика између inference и других врста напада горе поменутих јесте да ово није резултат
непривилегованог приступа подацима. Заправо, то је покушај прикупљања осјетљивих
података које су корисници оставили јавно доступним [30].
Нападачи могу искористити информације које су их открили корисници социјалних
мрежа и потом извући додатне осјетљиве податке о њима. Коришћењем алгоритама учења
(енг. Machine learning), нападачи чак могу да прикупи неке информације за које се
претпоставља да су приватне, на примјер списак пријатеља корисника, склоности и
интересовања или политичка гледишта [30].

17
https://nakedsecurity.sophos.com/2009/04/12/mikeyy-attack-hits-twitter-users-bad-24-hours-web-20-
security/, , посјећено: 15.03.2021.године.

19
3.2.7 Sybil и крађа идентитета
Напади Sybil и крађа идентитета су слични, као и код обе врсте напада, нападач
ствара више јединствених профила и користи их за обављање злонамјерних активности. У
sybil нападу, нападач ствара бројне профиле да започне напад против корисника
социјалних мрежа (слика 3.8). У нападу на крађу идентитета, злонамјерни корисник
клонира профил жртве како би заварао своје пријатеље да вјерују лажном профилу како би
дјелили своје личне податке са њим. Користећи овај механизам, нападач може красти
идентитет и личне податке жртвиних пријатеља. У крађи идентитета, нападач мора имати
неко предзнање о идентитету жртве [31].

S1

S2
Sybil чворови
Промјена идентитета
S
S3

S4

Slika 3.8-Sybil нападач са више идентитета.

3.2.8 Clickjacking, LikeJacking и Cursorjacking


Clickjacking, познат и као „User interface redress attack“ је уобичајена злонамјерна
техника коју нападачи користе за креирање вишеструких компликованих слојева како би
преварили корисника да кликну на дугме или линк на другој веб страници [32].
Помоћу пажљиво изграђене комбинације стилова (енг. stylesheet), оквира (енг.
iframes) и оквира за текст (енг. text boxes), корисник се може навести да вјерује да уноси
лозинку за своју е-mail адресу или банковни рачун, али умјесто тога куца у невидљиви
оквир који контролише нападач.

20
Примјер напада је приказан на слици 3.9, а фазе напада су:
1. Нападач пошаље линк сајта који је малициозан путем е-mail-а, социјалних медија
или других медија,
2. Жртва отвара линк,
3. Веб претраживач приказује сајт који је малициозан,
4. Жртва кликне на визуелно безопасан UI (енг. User Interface) елемент и постаје
заражен.

1. 3.

2.

4.

Слика 3.9-Примјер clickjacking напада.


LikeJacking, нападач користи технике социјалног инжењеринга како би
заинтригирао кориснике да кликну на линкове који укључују уграђене скрипте или код,
који ће затим аутоматски поставити линк сајта нападача на зид корисника или учинити да
корисник лајкује страницу од које нападач зарађује без дозволе зараженог корисника [33].
CursorJacking је друга врста clickjacking напада, која обмањује кориснике кликом на
злонамjерни линк и извођењем нежељених радњи промjеном локација курсора од мjеста
које корисник очекује до локације коју нападач очекује [33].
Као примjер можемо навести Facebook clickjacking напад који се догодио у
децембру 2009. године. У овом нападу, који се проширио путем веб странице
http://fb.59.tо, корисник Facebook-а био је заинтригиран да кликне на линк објављен на
зиду пријатеља која има сличицу (енг. thumbnail) и натпис „New Pix“. Клик на линк води
корисника до Youtube странице док је претходно клинкути линк такође постављен на зид
корисника Facebook-а [34].

21
3.3 Мјере заштите од напада
Иако је криптографија снажно средство за одржавање приватности података у
дистрибуцији, традиционална криптографска рјешења попут криптографије јавног кључа
можда неће бити врло корисна за заштиту приватности корисника на социјалним мрежама
јер сакривање идентитета корисника нема смисла на социјалним мрежама. У ствари,
корисници морају бити у могућности да се идентификују другим корисницима прије него
што им омогуће приступ својим профилима.
Три главна питања која се односе на социјалне мреже су приватност, интегритет и
доступност [35]. Што се тиче приватности, не само да разматрамо заштиту личних
података и садржаја које корисници дијеле на својим профилима, него и желимо да
заштитимо комуникационе канале које користе корисници социјалих мрежа од
унутрашњих или спољашних напада у циљу спрјечавања злонамјерних корисника да
приступе подацима или да их неовлашћено мјењају у току преноса. Поред тога, желимо да
спријечимо било кога да открије који корисници комуницирају. Коначно, за контролу
приступа морају постојати механизми да би се садржај учинио доступним корисницима
који су добили дозволу за приступ таквом садржају. У овом параграфу наводимо мјере
заштите доступне за превенцију или смањивање неких од најчешћих напада на социјалне
мреже.
3.3.1 Мјере заштите од phishing напада
Успјеху phishing напада доприноси неколико фактора. Главни проблем је у томе
што корисници не могу лако да верификују идентитет пошиљаоца е-mail порука. Други
проблем је тај што корисници не могу увијек да направе разлику између легитимног и
нелегитимног садржаја. Могуће је и да корисник није упознат са значењем SSL (енг.
Secure Socket Layer) сертификата, одсуство сигурносних индикатора или разлика између
оригиналних индикатора безбједности и лажних индикатора. Поред тога, корисници
обично не обраћају довољно пажње на URL локације при свакој трансакцији, а можда
корисници неће бити упућени у структуру имена домена и URL адреса. Укратко, напад
крађа идентитета је обично резултат ослањања корисника на одређену веб локацију,
логотип и било који други показатељи повјерења [36].
Постоје различите класе phishing напада, укључујући нападе малициозних
програма, обмањујући напади (енг. deceptive attacks) и напади засновани на DNS-у (енг.
Domain Name System) -pharming, чија је заједничка сврха да краду повјерљиве
информације од корисника. С друге стране, има неколико корака који се могу предузети
како би се корисници заштитили од phishing напада.
Једно од рjешења је употреба филтера за заштиту од нежељене поште заснованих
на потпису у којима могу да се идентификују phishing поруке, потом се такве пoруке
блокирају прије него што им корисници приступе. Провјера аутентичности поруке је
алтернативно рјешење против phishing нападa који корисницима пружају сигурност да су
им поруке послате од поузданог корисника. Личне визуелне информације користе се као
техника за смањење вјероватноће phishing напада. Примјер ове методе је коришћење
личних слика за пренос порука путем мреже или одабир тајне слике за пријављивање на
веб сајт. Примјеном ове технике нападачи не могу слати злонамјерне е-mail поруке, јер
они не знају које личне информације је изабрао циљани корисник. На примјер, ако се тајна

22
слика не приказује кориснику док се пријављује на његов налог, то значи да није на
поузданом веб сајту и не би требало да уноси своје повјерљиве податке [33].
Још једна противмјера phishing напада је скретање пажње корисника на чињеницу
да порука може садржати обмањујуће информације коришћењем јасног језик да објасни
куда одређени линк може да води. На примјер, ако веб страница садржи обмањујуће
линкове, садржај ће бити приказан или истакнут на такав начин да корисник може
визуелно да схвати да је уграђени URL сумњив и да указује на страницу која би могла
бити злонамјерна [33].
Коришћењем техника аутентификације веб сајтова могу помоћи корисницима да
сазнају да ли се налазе на поузданом или лажном сајту. Поред тога, морају благовремено
обновити своје имена домена, како би спрјечили злонамjерне кориснике да преузму
домене који су истекли. Од кључне је важности инвестирати у образовање корисника како
би корисници могли бити способни да направе разлику између легитимних и лажних
сајтова.
3.3.2 Мјере заштите од sybil напада
Као што је раније описано у овом поглављу, sybil напади се заснивају на стварању
вишеструких идентитета искориштавањем карактеристика отвореног налога на социјалним
мрежама. Класично рјешење против sybil напада је употреба поузданих идентитета које су
одобрили овлаштени органи. Иако ово рјешење може бити ефикасно за ублажавање ризика
sybil напада, можда га није могуће практично примјенити у социјалним мрежама због
карактеристикe отвореног налога.

Заједница 2
Заједница 1

Sybil заједница
Слика 3.10-Примјер Sybil шема одбране.

23
Друго рјешење против sybil напада је кориштење једне од главних карактеристика
социјалних мрежа, а то је ниво повјерења изграђен између постојећих корисника. Заиста,
тражећи сумњиве чворове, можемо тражити чланове мреже који имају мање веза са
другима (слика 3.10), на основу претпоставке да чворови sybil не могу успостави велики
број веза са осталим члановима. С друге стране, може се претпоставити да чворови који су
чврсто повезани са non-sybil чворовима поуздани. Ова sybil шема одбране слична је
алгоритму за подјелу графа, гдје у овом случају, граф представља социјалну мрежу, а циљ
је подjелити чворове графа у два скупа и то поузданих и непоузданих чворова. Међутим,
овај приступ има неке недостатке. Главно питање је везано за мреже у којима је тешко
разликовати чворове sybil и чворове који то нису. Другим рјечима, мрежа може
укључивати неке заједнице које међусобно нису добро повезане, узрокујући погрешну
класификацију чворова на основу горе поменутих претпоставки [37].
3.3.3 Мјере заштите од spamming напада
Предложено је неколико рјешења за рјешавање spamming-a. Један од многих
уобичајених техника за откривање spamming-а је коришћење статистичког филтрирања
или филтрирања кључних ријечи поруке. У филтрирању нежељене поште по кључним
ријечима, филтер тражи сумњиве ријечи у поруци помоћу листе критеријума да би се
утврдило да ли је порука непожељна. С друге стране, статистички филтери за нежељену
пошту попут Bayesian филтера, израчунавају статистику колико пута су токени, који могу
бити ријечи или други елементи поруке, појављују у нежељеној и доброј пошти, а затим
израчунавa вјероватноћу да је порука spam, да би могли одлучити да ли је нека е-mail
порука нежељена или не , гледајући токене у њој [33].
Непожељне видео поруке такође су честе на социјалним мрежама за размјену видео
снимака попут Youtube-а [38]. Технике које се користе за препознавање нежељене поште у
текстуалним порукама не могу се лако примијенити и за видео нежељену пошту. Поред
тога, корисници морају да гледају најмање дио постављеног видео записа да бисте сазнали
да ли је у питању нежељена пошта или не.

24
4. ПРИКУПЉАЊЕ ПОДАТАКА О ОСОБАМА ПУТЕМ
СОЦИЈАЛНИХ МРЕЖА

4.1 Типови података


Постоје три врсте података који су доступни на социјалним мрежама за сакупљање
[39]. Први тип су подаци неког садржаја. То могу бити коментари корисника на форумима,
профили корисника на социјалним мрежама, чланци,ѕ вијести на сајтовима, фотографије,
видео снимци итд. Формат података неког садржаја може бити структурисани или
неструктурисани. Структурисани подаци су табеле података организоване у редове и
колоне и могу се директно анализирати. Нажалост, већина података на социјалним
мрежама су у свом изворном облику неструктурисани.
Други тип су подаци о понашању. Корисници читају вијести на сајтовима;
коментаришу постове, блогове, и видео снимке; пишу критике за производе, слушају
музику и гледају видео записе, поред многих других свакодневних активности које се
биљеже на социјалним мрежама са прецизним временским ознакама. Понашање на мрежи
се може класификовати у три категорије:
1. Понашање Корисник-Ентитет се односи на интеракцију између корисника и
ентитета на социјалним мрежама, попут дјељења чланака вијести на Facebook-у.
2. Понашање Корисник-Заједница се односи на интеракцију између корисника и
мрежне заједнице, попут учешћа на форумима за политичку дискусију.
3. Понашање Корисник–Корисник се односи на интеракцију између два
појединачна корисника, попут слања приватних порука.
Трећи тип су подаци о мрежној структури, односно визуелне или скривене везе
корисника и садржаја. Предност сакупљања података на социјалним мрежама је та што
ћемо вјероватно добити цијели друштвени граф (тј. мрежу) о основној популацији
корисника.
4.2 Начини прикупљања података
Постоје три начина за добијање великих података на социјалним мрежама [39].
Први и најдиректнији начин је преузимање података из база података са веб сервера. Ова
врста података је позната као „log-file“. Подаци log-file-а су јединствени за добијање
података о понашању, као што су информације о пријављивању, историја прегледавања,
подаци који нису видљиви на веб страницама. Међутим, готово је немогуће доћи до
оваквих врста података, осим ако истраживачи блиско сарађују са компанијама за
социјалне мреже.
Други метод је прикупљање података путем API-ја. API је интерфејс компјутерског
програма који допушта софтверу да комуницира са другим софтвером. Поједностављено
АPI су посебни URL-ови које су власници веб страница предвидјели за развојне
програмере да могу преузимати податке из њихових база података. Примарна сврха
пружања API-ја је омогућити развој и унапређење услуга социјалних мрежа.
Трећа метода је веб scraping. Овај метод је посебно користан за оне веб странице
које не нуде API. Алтернативни метод је индексирање веб страницa социјалних мрежа

25
помоћу аутоматизованих скрипти које истражују веб страницу и прикупљају податке
помоћу HTTP (енг. Hypertext Transfer Protocol) захтјева и одговора. Веб scraping је процес
узимања неструктурисаних података са веб страница претварајући их у структурисане
информације које се могу користити у наредној фази анализе.
Веб scraping укључује писање рачунарских програма како би аутоматски радили
оно што људи раде ручно када пронађу податке, прво селектују податке, а потом копирају
и залијепе на друго мјесто. Процес је сличан „save as“ функцији када људи претражују веб
странице, а затим рашчлањују веб странице, извлачећи корисне информације које
организују и смјештају у .csv или .txt формат, који могу бити повезани са другим
софтвером за статистику. Ипак, и log-file и API директно комуницирају са базом података
на веб серверима. У том смислу, веб scraping може бити мање робустан, мање ефикасан и
мање информативан од АPI метода.
4.2.1 Прикупљање података путем АPI-ја
Данас је најпопуларнији начин прикупљања података на социјалним мрежама
употребом API-ја [39]. Упити се шаљу социјалним мрежама путем API-ја за добијање
података. Три техничка питања су укључена у процес прикупљања података путем API-ја:
ауторизација, генерисање API веза и рашчлањивање JSON (енг. Java Script Object Notation)
података. Пријавите се, пошаљете захтјев за податке и сачувате одговоре у
структурисаним табелама података. Прије подношења било каквих захтјева за API, многе
платформе социјалних мрежа (укључујући Facebook и Twitter) захтјевају формални
поступак овлашћења. Истраживачи треба да направе апликацију на њиховим веб
страницама и да овласте апликацију да приступа релевантним подацима користећи
стандардизовани протокол под називом ОАuth (енг. Open Authorization), и Facebook и
Twitter користе овај протокол.
Технички мање речено, ОАuth је средство које омогућава корисницима да
ауторизују независне апликације за приступ подацима њихових налога без потребе за
дијељењем осетљивих информација попут лозинки. Kључне информације које
истраживачи треба да посједују су потрошачки кључ (енг. Consumer key), тајни
потрошачки кључ (енг. Consumer secret key), приступни токен (енг. Access token) и тајни
приступни токен (енг. Access token secret). Ова четири креденцијала пружају све што је
потребно да би се апликација овластила.

Слика 4.1-Примјер слања упита путем Facebook Graph API-ја18.

18
https://gwu-libraries.github.io/sfm-ui/posts/2018-01-02-facebook, посјећено: 25.03.2021.године.

26
Како ступити у интеракцију са API-јем за приступ подацима? Најпопуларније
социјалне мреже пружају API и такође имају API документацију на мрежи. API
документација наводи све техничке детаље о томе како истраживачи могу да преузму
различите врсте података. Са малим варијацијама, већина платформи пружају своје API-је
на сличне начине. Слично томе, уобичајени URL за типичну Facebook страницу је
https://www.facebook.com/username, док је одговарајућа API веза
https://www.facebook.com/username?fields=id,name&access_token=ACCESS_TOKEN.
ACCESS_TOKEN је генерисан путем ОАuth за пријављеног корисника. Уобичајени URL
за Тwitter је https://twitter.com/search?q=%40twitterapi, док је еквивалентна API веза
https://api.twitter.com/1.1/search/tweets.json?q=%40twitterapi. Дакле, први задатак
прикупљање података помоћу API-ја је проналажење правила за генерисање API упита.
Онда, слањем АPI упита (слика 4.1) у веб претаживачима или путем скрипти за
програмирање, добијамо податке обично у JSON формату. Једном када се добију ЈSON
подаци, друго питање је како се аутоматски рашчлањује. Једноставно сачувајте ЈSON
податке у .txt датотекама, а затим користите софтвер за конверзију у табеле података [39].
4.2.2 Прикупљање података помоћу веб scraping-а
Поред API-ја, веб scraping је још један уобичајени приступ прикупљања веб
података. Поступак је једноставан. То је заправо процес у којем корисник посматра веб
страницу, проналази релевантне информације, потом их селектује, копира и лијепи у
табеле података. Међутим, допуштање рачунару да аутоматски обавља задатке је
компликованије од копирања и лијепљења, јер захтјева основно разумјевање језика помоћу
којег је веб написан, а то је HTML језик.
Веб странице су написане помоћу HTML језика. Иако истраживачи неће правити
ниједну HTML страницу, потребно је разумијевање структуре HTML-а, јер ће се HTML
елементи користити за издвајања података на вебу.
Основе HTML-а су једноставне. HTML код је видљив у већини популарних веб
претраживача. HTML се састоји од стабла HTML елемената и других чворова, као што су
чворови текста. Елементи такође могу имати садржај, укључујући друге елементе и текст.
Многи HTML елементи имају семантику или значења. На примјер, елемент <title> ...
</title> представља наслов документа.

Слика 4.2-Приmjer HTML странице <!


HTML се састоји од елемената који се називају тагови. Тагови су затворене у лијеве
и десне угаоне заграде, на примјер <html> ... </html>. Неки тагови су упарени и имају
ознаке за отварање и затварање. На примјер, <html> је уводна ознака која се појављује на
почетку сваког HTML документа, а </html> је завршна ознака која појављује се на крају

27
сваког HTML документа. Неки тагови немају завршну ознаку, на примјер, ознака <img>,
која се користи за уметање слике, нема одговарајући завршни таг. Примјер <img> тага је
приказан на слици 4.2 (ознака 1).
HTML тагови могу имати и атрибуте. Атрибути пружају додатне информације о
тагу. Атрибути долазе у облику име/вриједност. На примјер, линк је дефинисан тагом <а>
и адреса линка наведена је у атрибуту href. Примјер једног таквог тага је приказано на
слици 4.3 (ознака 1). Ознака <а> обухвата елемент текста „Kликните овде“ и има атрибут
са именом href, вриједност тог href атрибута је „https://www.google.com“, што је одредишна
URL адреса. Већина HTML елеменaтa могу имати било који од неколико уобичајених
атрибута.

Слика 4.3-Примјер HTML странице. <!


У сврху scraping-а вриjeди истаћи два атрибута. Прво, атрибут id пружа
јединствени идентификатор за HTML елемент у цијелом документу. Такође се може
користити у скриптним језицима за референцирање тага. То значи да се веза може
направити директно са тагом који има одређени id. Друго, атрибут class пружа начин
класификације сличних елемената. Било који број елемената може имати исту вриједност
за разлику од атрибута id. Примјер референцирања тагова на HTML страници (слика 4.4)
помоћу атрибута id и class је приказано на сликама 4.5 и 4.6 респективно.

Слика 4.4-Примјер HTML странице. <!


document.getElementById("link1")
>><a href="www.google.com" id="link1" class="link">Google</a>
Слика 4.5-Референцирање div тагова помоћу атрибута id.

28
document.getElementsByClassName('link')
>>HTMLCollection(3)[a#link1.link, a#link2.link, a#link3.link, link1:
a#link1.link, link2: a#link2.link, link3: a#link3.link]
Слика 4.6-Референцирање div тагова помоћу атрибута class.
У пракси се од истраживача не захтјева да разумију специфично значење сваког од
тих ознака или атрибута. Умјесто тога, истраживачи треба да знају како да користе
комбинације ознака и атрибута за одређивање положаја било којих релевантних ставки на
веб страници. Кад би само једна ставка на веб страници била од интереса, било би
довољно користити одговарајући атрибут id за одређивање положаја. Ако је скуп сличних
тагова интересантан, одређивање положаја помоћу атрибута class је изводљиво у већини
ситуација.
Xpath (енг. XML Path Language), је алтернативна метода коју истраживачи треба да
знају како да je користе за издвајање релевантнih информацијa са HTML страница
комбинацијом ознака и атрибута (табела 4.1). XPath се може користити за навигацију кроз
елементе и атрибуте у XML (енг. Extensible Markup Language) документима. Ови изрази
путања изгледају попут израза при раду са традиционалним рачунарским фајл системом.
XML је био дизајниран да описује податке, док је HTML дизајниран за приказ података на
веб страници. Међутим, слично HTML-у, XML документи се третирају као стабла чворова.
Стога, XPath је примјенљив за издвајање садржаја у HTML документе када су рашчлањени
прикладно [39].

Слика 4.7-Примјер HTML странице. <!


Најкориснији XPath изрази за одабир чворова наведени су у табели 4.1 [39]. На
примјер, //а[@href] бира све елементе хипервезе који имају атрибут по имену href;
//а[@href=”http://www.cnn.com”] бира елементe хипервезе (са вриједношћу атрибута =
„ http://www.cnn.com “); и //а[1]/@href враћа URL (вредност атрибута) првог елемента
хипервезе.
Табела 4.1-Изрази и значење XPath-a.
Израз Опис
Nodename Селектује све чворове са именом
/ Селектује све чворове почевши од root
чвора
// Селектује све чворове у документу од
тренуног чвора који се подударају без

29
обзира гдје су
@ Селектује атрибуте
* Селектује сваки елемент чвора

30
Након увођења HTML -а и XPath -а, scraping веб страница постаје једноставније.
Прво, преузмeте HTML странице и сачувате их. Друго, многи алати (укључујући
уобичајене веб претраживачe) омогућују рашчлањивање HTML докумената и креирају
одговарајућу структуру. Треће, засновано на овој структури истраживачи могу да користе
Xpath изразе за проналажење релевантних података. Неки веб претраживачи попут Google
Chrome-а, нуде функцију „copy Xpath“. На крају, сачувате податке у табеле. Сви ови
кораци се могу извршити аутоматски користећи већину рачунарски језика. Поред XPath-а,
постоје и алтернативне методе за издвајање HTML елемената, као што је коришћење CSS
(енг. Cascading Style Sheets) селектора, регуларних изразa итд. без обзира на све, основна
логика је истa, одабир садржаја према HTML ознакама и атрибутима.
Веб scraping је добар метод за прикупљање веб садржаја када API-ји нису доступни.
Ово је посебно корисно за прикупљање постова на блоговима, форумима за веб дискусије,
и на порталима вијести. Међутим, scraping садржаја на мрежи је мање згодно и тачно него
прикупљање путем API-ја. Иако је текст сигурно на страници, такође је и пуно другог
небитног садржаја као што су заглавља, подножја, огласи, и други небитни садржаји.
Поред тога, HTML странице могу бити написане сасвим другачијом структуром од
очекиване. Понекад програмери можда неће добро пратити HTML стандарде. Сви
проблеми могу продужити вријеме прикупљања и изазвати неочекиване грешке. Веома је
изазовно прикупљати податаке о понашању помоћу веб scraping-а. Временске ознаке
приказане на веб страницама обично су мање прецизне и поуздане од оних добијених
путем API-ја. Понекад приказује само оквирно вријеме, на примјер „постављено прије два
дана“. Готово је немогуће добити било какве информације о понашању корисника,
његовом кликању и пријављивању без приступа log-in датотекама путем API-ја. Стога је
најбоља пракса да користите метод scraping-а само када званични API-ји нису доступни
[39].

31
5. ПРЕГЛЕД СЛИЧНИХ АЛАТА
У овој глави прикaзани су неки од алата за прикупљање података на социјалним
мрежама и за визуелизацију тих података.
5.1 Прикупљање података
5.1.1 Octoparse
Octoparse је савремени софтвер за екстракцију података за визуелизацију. И
искусним и неискусним корисницима било би лако да помоћу овог алата извуку
информације са веб страница. За већину scraping задатака није потребно кодирање. На
слици 5.1 је приказан примјер креирања једноставног бев scraper-a.

Слика 5.1-Примјер процес екстракције података19.


Креирање веб scraper-а се одвија кроз неколико корака [40]:
1. Унесемо URL сајта са којег желимо да прикупимо податке,
2. Страничење (енг. Pagination) - омогућити алату да посјети и покупи податке са
других страница на том истом сајту,
3. Означити елементе од интереса,
4. Означити податке од интереса који се налазе унутар претходно означених
елемената,
5. Покренути процес екстракције података.

19
https://www.octoparse.com/doc-wf/build-your-first-task , посјећено: 05.04.2021.године.

32
Резултат процес екстракције података претходно креираног веб scraper-а је
приказано на слици 5.2

Слика 5.2-Резултат процеса екстракције података19.

Предности овог алата су [41]:


 Једноставан за кориштење-једноставан scrape свих података након што се
позиционирамо изнад елемента и кликнемо на њега. Није потребно писати
програмски код.
 Ради са свим веб сајтовима-scrape веб сајтова који захтјевају логовање, имају
падајући мени, скроловање странице итд.
 Преузимање резултата-преузимање прикупљених података као CSV, Excel, API
или чување у бази података.
 Cloud сервиси-scrape и приступ подацима на Octoparse Cloud Platform-и.
 Креирање распореда извршавања процеса екстракције-распоређивање задатака
екстракције података по сату, по дану, по седмици итд.
 Ротација IP (енг. Internet Protocol address) адреса-.аутоматска ротација IP адреса
да би избјегли блокирање.

5.1.2 Dexi.io
Dexi.io је алат за scraping који омогућава да се издвоје и трансформишу подаци са
било ког веб сајта помоћу mining технологије и робота. Dexi.io омогућава да покупите
податке са било ког веб сајта. Омогућава да дефинишете и изградите процесе и правила
унутар платформе која ће на основу ваших захтјева да врши процес екстракције података
[42].

33
Dexi роботи не омогућавају само читање података са веб странице. Робот за
екстракцију омогућава извршавање пријављивања и претражaвања, одабир елемената на
падајућим листама и датуме у календарима, прелазак курсором преко елемената, дугмади,
слање образаца, чекање да би се елементи појавили, прелазак са странице на страницу да
би извукли жељене податке [43]. Кораци за екстракацију података су приказани на слици
5.3, а резултат процеса екстракције података је приказано на слици 5.4.

Slika 5.3-Кораци за екстракцију података20.

Slika 5.4-Резултат процеса екстракције података21.

5.2 Визуелизација графа


5.2.1 NodeXL
NodeXL је додатак за Microsoft Excel који подржава анализу социјалних мрежа и
анализу садржаја. NodeXL подржава UCINet и GraphML датотеке, као и Excel табеле које
садрже листу веза или матрице сусjедности [44].
NodeXL woorkbook садржи четири worksheet-а: чворове, везе, групе и укупне
метрике. Релевантни подаци о ентитетима на графику и односима између њих налазе се у
одговарајућем worksheet-у у облику реда. На примјер, worksheet веза садржи најмање двије
колоне, а сваки ред има најмање два елемента који представљају два чвора који чине везу
на графу. Метрика графа и визуелна својства чворова и веза појављују се као додатне
колоне у одговарајућем worksheet-у. Ова репрезентација омогућава кориснику да
искористи Excel табелу за брзо уређивање постојећих својстава чвора и за генерисање
20
https://intercom.help/dexiio/en/articles/420882-dexi-basics, посјећено: 01.04.2021.године.
21
https://intercom.help/dexiio/en/articles/420908-getting-started, посјећено: 01.04.2021.године.

34
нових, на примјер примјеном Excel формула на постојеће колоне. NodeXL прави разлику
између усмјерених и неусмјерених графова [44]. Примјер једног графа је приказано на
слици 5.5.

Слика 5.5-Приказ резултата визелизације графа22.


5.2.2 Gephi
Gephi је визуелни рачунарски програм, за истраживање, контролисање,
унапређивање свих врста рачунарских мрежа и сложених система, написан у Java
програмском језику, на NetBeans платформи [45].
Gephi је open-source code који се користи за визуелно истраживање мрежа. Док
већина сличних програма има могућност погледа на мрежу, и анализирање те мреже,
Gephi је посебно опремљен за рад са мрежама које посједују атрибуте чворова. Атрибути
су парови кључ-вриједност повезани са сваким чвором или сваком везом, на примјер
појединац социјалне мреже може имати атрибуте као што су пол, године, мјесто запослења
и сл. Корисници користе атрибуте чворова како би промјенили боју или величину чворова,
у циљу проналажења група или појединаца. Циљ је пронаћи узајамну повезаност атрибута
чворова и мрежне структуре, користећи се визуелним приказом [45].

22
https://www.smrfoundation.org/nodexl/ , посјећено: 05.03.2021.године.

35
Приликом приказивања друштвене мреже могуће је израчунати степен и удаљеност
чвора од центра. Gephi није ограничен на рад само са друштвеним мрежама. Све врсте
мрежа могу бити анализиране, као што су интернет топологија, мрежа за дjељење
података, финансијске мреже, семантичке мреже, организационе мреже, и друге.

Slika 5.6-Приказ резултата визуелизације графа23.


Gephi има за циљ обезбјеђивање цјелог процеса, од уношења података у програм,
преко интеракције између података и програма, до приказивања што љепшег изгледа графа
(слика 5.6). Подаци могу бити убачени и добијени из програма у више врста фајл формата,
и такође могу бити преузети из базе података.

23
https://alternativeto.net/software/nodexl/, посјећено: 25.03.2021.године.

36
6. ПРАКТИЧНИ РАД
У практичном раду је приказан начин прикупљања података о особама који су
активни на социјалној мрежи Facebook, као и визуелизација тих података. Апликација је
реализована као веб апликација чији је изворни код написан у програмском језику Java
помоћу технологије JSP M2, а подаци су смјештени у MySQL бази података. У овој глави
осим што су наведени начини реализовања ове апликације, наведена су и нека ограничења
која су наметнута од стране Facebook-a и тиме отежавају прикупљање података.
6.1 Архитектура
Кориштена је MVC (енг. Model View Controller) архитектура, приказана на слици
6.1. Aрхитектура система се састоји од сљедећих компонената:
 Model – представља Java bean-задужен за креирање објекта који представља
граф конекција. Scrape података са веб странице је реализован помоћу
ChromeDriver-а, а податке складишти у базу података.
 View – презентациони слој који је задужен за унос имена профила за претрагу и
омогућавање интеракције крајњег корисника са креираним графом. View је
представљен JSP (енг. JavaServer Pages) страницама.
 Controller – контролише интеракције између Model-a i View-a на бази
корисничког догађаја (миш, тастатура) – све промјене на појединим погледима
су инициране од стране контролера у зависности од тренутног контекста
апликације и одговарајућих података којима модел располаже.

Controller (Servlet)
Захтјев за
генерисање графа Креирање Graph
Приказ графа bean
Подаци о
конекцијама

Захтјев за
генерисање графа
Model (Java
View(JSP)
Корисник bean)
Приказ графа

Chrome
driver База
података

Слика 6.1-Архитектура.

37
6.2 Прикупљање података
Приступ подацима на Facebook-у употребом Facebook API-ја је ограничен, а и сам
процес ауторизације је веома сложен. Као што се види на слици 6.2 корисник мора да
опише на који начин ће да користи податке које добија путем API-ја, некада је потребно да
посједујемо веб апликацију на неком домену, да се налог на Facebook-у идентификује као
предузеће како би смо добили приступ неким функцијама (слика 6.3).

Слика 6.2-Примјер захтјева за приступ подацима путем Facebook Graph API-ја.

Слика 6.3-Примјер захтјева који захтјевају верификацију предузећа.


Због ограничења и услова које намеће Facebook API прикупљање података у
практичном раду је реализовано помоћу веб scraping-а кориштењем Selenium библиотеке.
Selenium је библиотека за аутоматизацију веб претраживача. Најчешће се користи за
тестирање веб апликација и може се користити за било који задатак који захтјева
аутоматизацију интеракције са веб претраживачем [46].
За аутоматизацију интеракције са веб претраживачен Selenium не користи веб
претраживач који корисник у том тренутну користи, него користи свој ChromeDriver који
путем JSON wired протокола комуницира са Chrome претраживачeм, у суштини
ChromeDriver је мост између Selenium кода и Chrome претраживача [46].

38
6.2.1 Пријава на Facebook профил
Након креирања ChromeDriver објекта мора се извршити логовање на кориснички
налог чија је намјена првенствено да нам омогући приступ јавно доступним подацима
других корисничких налога. Сваки наредни новокреирани ChromeDriver објекат захтијева
поновни пролазак кроз процес логовања јер нема потребне колачиће (енг. cookies) за
аутентикацију корисника, што није случај када отворимо нови Chrome претраживач на
свом рачунару и покушамо да приступимо некој Facebook страници, а при том смо се већ
једном улоговали. Колачићи који су потребни да би се извршила аутентикација корисника
су [47]:
 xs
 c_user
Проблем понављања процеса логовања је ријешен кориштењем Singleton обрасца.
Singleton обрасац нам обезбјеђује да постоји један живи објекат на нивоу апликације и
обезбјеђује начин за приступ њему. Када креирамо ChromeDriver објекат и улогујемо се,
сваки сљедећи пут користимо првобитнo креирани објекат када је потребно да приступимо
јавно доступним подацима на некој Facebook страници без да поново пролазимо кроз
процес логовања.
public static WebDriver getInstance() {
if (driver == null) {
System.setProperty("webdriver.chrome.driver","putanja do chrome.exe");
ChromeOptions options = new ChromeOptions(); //1
options.addArguments("--disable-notifications"); //2
options.addArguments("--headless"); //3
driver = new ChromeDriver(options);
ResourceBundle bundle =
PropertyResourceBundle.getBundle("dao.FacebookDriver");
driver.get("http://www.facebook.com/login"); //4
String email = bundle.getString("email");
String password = bundle.getString("password");
try {
WebElement elementUserName =
driver.findElement(By.name("email"));//5
insertData(elementUserName, email);
WebElement elementPassword =
driver.findElement(By.name("pass"));//6
insertData(elementPassword, password);
WebElement click = driver.findElement(By.name("login"));//7
click.click();
Thread.sleep(2000);
} catch (Exception e) {
e.printStackTrace();
}
}
return driver;
}

Слика 6.4-Креирање ChromeDriver објекта.

39
ChromeDriver објекат садржи атрибут типа ChromeOptions (слика 6.4, ознака 1)
помоћу којег можемо да подешавамо опције Chrome претраживача, на примјер
онемогућимо JavaScript код, промијенимо језик, промијенимо user-agent-а и друго. Прва
опција --disable-notifications (слика 6.4, ознака 2) омогућава нам да уклонимо рекламе које
нам се појављују приликом посјете некој веб страници и тиме нам онемогућe приступ
садржају HTML странице све док те рекламе не уклонимо. Друга опција --headless (слика
6.4, ознака 3) -омогућава нам покретања веб претраживача без корисничког интерфејса. Да
би приступили неком веб сајту користи се метода get(url) ChromeDriver објекта (слика 6.4,
ознака 4). Метода findElement прихвата објекат типа By као параметар, а враћа објекат типа
WebElement. By објекат омогућава проналазак неког елемента на веб страници помоћу
различитих стратегија као што је проналазак помоћу id-ја, className, Name, Xpath итд.
(слика 6.4, ознака 5,6 и 7).
Начин аутоматизованог уношења креденцијала одлучује да ли ћемо моћи да
посјећујемо Facebook странице или ће Facebook-ов механизам заштите да нас детектује као
робота и неће нам допустити приступ другим страницама након логовања.
Аутоматизовани унос креденцијала мора да буде што приближнији начину уносу
креденцијала од стране корисника путем тастатуре. На слици 6.5 је приказан код који
симулира унос креденцијала путем тастатуре тако да унос карактера буде сваких 300 до
500 милисекунди.
private static void insertData(WebElement element, String data) throws
InterruptedException {
Random r = new Random();
for (int i = 0; i < data.length(); i++) {
element.sendKeys(String.valueOf(data.charAt(i)));
Thread.sleep(r.nextInt(300) + 200);
}
}

Слика 6.5-Симулирани унос креденцијала путем тастатуре.


6.2.2 Проналазак корисничког налога за генерисање графа
Потребно је пронађи жељени кориснички налог који ће представљати коријен ново-
креираног графа. Број корисничких налога које је потребно приказати кориснику након
уноса имена за претрагу је дефинисано у Facebook.properties фајлу (слика 6.6, ознака 1).
Уколико је број тражених корисничких налога већи од броја налога које нам Facebook
иницијално приказује на страници за претрагу (слика 6.6, ознака 2), онда је потребно
скроловати добијену страницу док не добијемо жељени број профила или док не дођемо до
посљедњег корисничког налога који одговара траженом имену. Скроловање странице је
ријешено кориштењем објекта JavascriptExecutor-a (слика 6.6, ознака 3) који нам
омогућава извршавање JavaScript кода у веб претраживачу. Прво пронађемо посљедњи
видљиви елемент (слика 6.6, ознака 4) у колекцији елемената који представљају видљиве
корисничке налоге који су приказани од стране Facebook-а као одговор на тражено име, а
потом скролујемо до посљедњег елемента (слика 6.6, ознака 5), како би нам се приказали
остали кориснички налози који нису одмах видљиви. Резултат функције getUsers(String
name) је колекција објеката типа User који садрже атрибуте URL профила, слику
корисничког профила и пуни назив профила.

40
41
public List<User> getUsers(String name) {
List<User> users = new ArrayList<User>();
ResourceBundle bundle = PropertyResourceBundle.getBundle("dao.Facebook"); //1
try {
WebDriver driver = DriverConnection.getInstance();
int
numberOfProfile=Integer.parseInt(bundle.getString("numberOfProfiles"));
HumanBehaviour.typeKeyboard("search/people/?q=" + name +
"&epa=SEE_MORE");
driver.get("https://www.facebook.com/search/people/?q=" + name +
"&epa=SEE_MORE"); //2
List<WebElement> elementsAfter = new ArrayList<WebElement>();
List<WebElement> images = new ArrayList<WebElement>();
while (true) {
List<WebElement> elementsBefore =
driver.findElements(By.xpath(bundle.getString("search_a_xpath")));
JavascriptExecutor js = (JavascriptExecutor) driver;//3
WebElement lastUser = elementsBefore.get(elementsBefore.size()
- 1); //4
int y = lastUser.getLocation().y;
js.executeScript("window.scrollTo(0," + y + ")");//5
Thread.sleep(2000);
elementsAfter =
driver.findElements(By.xpath(bundle.getString("search_a_xpath")));
images =
driver.findElements(By.cssSelector(bundle.getString("search_image_css")));
if (elementsAfter.size() == elementsBefore.size() ||
elementsAfter.size() > numberOfProfile){
break;
}
}
for (WebElement e : elementsAfter) {
String nameOfProfile = e.getAttribute("aria-label");
String imgSrc =
images.get(elementsAfter.indexOf(e)).getAttribute("xlink:href");
String urlUser = e.getAttribute("href");
String userName =
e.getAttribute("href").split("https://www.facebook.com/")[1].split("\\?")[0];
if (userName.startsWith("profile.php")) {
userName =
e.getAttribute("href").split("https://www.facebook.com/")[1].split("\\&")[0];
}
User u = new User(nameOfProfile, userName,imgSrc,urlUser);
users.add(u);
}} catch (Exception e) {e.printStackTrace();}
return users;}
Слика 6.6-Проналазак колекције профила који одговарају траженом имену.

42
6.2.3 Креирање листе пријатеља
public List<String> getUserFriends(String username) throws
InterruptedException {
WebDriver driver = DriverConnection.getInstance();
if (!username.startsWith("profile.php")) {
HumanBehaviour.typeKeyboard(username + "/friends");
driver.get("https://facebook.com/" + username + "/friends");
} else {
HumanBehaviour.typeKeyboard(username + "&sk=friends");
driver.get("https://facebook.com/" + username + "&sk=friends");
}
Random r = new Random();
List<WebElement> elementsAfter = new ArrayList<WebElement>();
ResourceBundle bundle = PropertyResourceBundle.getBundle("dao.Facebook");
List<String> urls = new ArrayList<String>();
while (true) {
List<WebElement> elementsBefore =
driver.findElements(By.xpath(bundle.getString("friends_xpath")));
if (elementsBefore.size() > 0) {
WebElement lastFriend =
elementsBefore.get(elementsBefore.size() - 1);
int y = lastFriend.getLocation().y;
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("window.scrollTo(0," + y + ")");
Thread.sleep((r.nextInt(3) + 4) * 1000);
elementsAfter =
driver.findElements(By.xpath(bundle.getString("friends_xpath")));
}
if (elementsAfter.size() == elementsBefore.size()) {
for (WebElement e : elementsAfter) {
if (!
e.getAttribute("href").startsWith("https://www.facebook.com/pages")
&& !e.getAttribute("href").endsWith("/")) {
WebElement spanName =
e.findElement(By.tagName("span"));
urls.add(e.getAttribute("href") + "#" +
spanName.getText());
} else {
break;
}
}
break;
}
}
if (elementsAfter.size() == 0) {urls =
getFriendsUsingImages(username);}return urls;}

Слика 6.7-Креирање листе пријатеља

43
На слици 6.7 је приказан начин креирања листе пријатеља на основу јавно доступне
листе пријатеља корисничког налога. Приступ листи пријатеља може бити отежан уколико
нам кориснички налог није дао дозволу за приступ његовој листи пријатеља, у том случају
морамо користити друге начине за креирање листе пријатеља. Један од начина је да
кориснички налог који тренутно посјећујемо пронађемо у листи пријатеља неког другог
налога којег смо већ посјетили, па како је веза између корисничких налога на Facebook-у
неусмјерена, онда налог који је већ посјећен сигурно један од пријатеља корисника којег
тренутно посјећујемо.
Други начин јесте да прикупљамо информације о објавама тренутно посјећеног
корисничког налога. Можемо да прикупимо информације ко је све коментарисао објаву, ко
је лајковао, па ако је кориснички налог дозволио те функционалности само својим
пријатељима, онда можемо претпоставити да генеришемо листу са „правим“ пријатељима.
Трећи начин јесте прикупљање информација о објављеним сликама. Овај начин је
реализован у практичном раду, тако да генеришемо листу пријатеља са оне слике која има
највише лајкова. Иницијални приказ листе свих слика које је корисник објавио (слика 6.8,
ознака 1) не даје нам довољно потребних информација, јер су приказане умањене слике
без информација о броју лајкова и броју коментара за сваку слику, па је потребно је да
погледамо сваку слику појединачно у изворној величини да би смо имали приступ
потребним информацијама.
public static List<String> getFriendsUsingImages (String userName) throws
InterruptedException {
ResourceBundle bundle = PropertyResourceBundle.getBundle("dao.Facebook");
List<String> friendsUrl = new ArrayList<>();
HumanBehaviour.typeKeyboard("/photos_all");
WebDriver driver = DriverConnection.getInstance();
driver.get("https://www.facebook.com/" + userName + "/photos_all");//1

Слика 6.8-Приказ слика које је корисник објавио


Прво прикупимо неколико URL адреса објављених слика, а потом посјетимо прву
слику (слика 6.9, ознака 2 и 3).
Random r = new Random();
List<WebElement> elementsImage =
driver.findElements(By.xpath(bundle.getString("friends_image_xpath"))); //2
String urlBefore = null;
String urlAfter = null;
if (elementsImage.size() > 0) {
HumanBehaviour.typeKeyboard(elementsImage.get(0).getAttribute("href");
driver.get(elementsImage.get(0).getAttribute("href"));//3

Слика 6.9-Приказ прве објављене слике


Након приступа првој слици и њеним информацијама потребно је да прикупимо и
информације од осталих слика тако што ћемо да симулирамо листање слика, а током
листања ћемо да прикупљамо број лајкова за сваку слику и сачувамо URL слике која има
највише лајкова (слика 6.10, ознака 4 и 5), док не дођемо до краја, односно дугме за
прелазак на наредну слику више није доступно (слика 6.10, ознака 6). Потом је потребно

44
посјетити ону слику која има највише лајкова (слика 6.10, ознака 7) и погледати који су то
профили који су лајковали слику.
int maxNumber = 0;
int numOfLikes = 0;
String maxUrl = null;
while (true) {
urlBefore = driver.getCurrentUrl();
int i = 0;
while (true) {
WebElement nextPicture =
driver.findElement(By.cssSelector(bundle.getString("nextImageCss")));
try {
numOfLikes =
Integer.parseInt(driver.findElement(By.xpath(bundle.getString("numberOfLikesX
Path"))).getText()); //4
} catch (Exception e) {
}
if (numOfLikes > maxNumber) {
maxNumber = numOfLikes;
maxUrl = driver.getCurrentUrl(); //5
}
Thread.sleep((r.nextInt(3) + 2) * 1000);
try {
nextPicture.click(); //6
break;
} catch (Exception e) {
if (i > 1) {
break;
}
}
}
Thread.sleep(2000);
urlAfter = driver.getCurrentUrl();
if (urlAfter.equals(urlBefore)) {
break;
}
}
 
Thread.sleep(2000);
driver.get(maxUrl); //7

Слика 6.10-Прикупљање података о сликама

45
Резулат функције getFriendsUsingImages је колекција string-ова облика „корисничко
име# име профила“ који су лајковали слику са највећим бројем лајкова (слика 6.11).
WebElement likeClick =
driver.findElement(By.xpath(bundle.getString("clickToShowListOfProfileXpath")
));
Thread.sleep(2000);
likeClick.click();
Thread.sleep(2000);
List<WebElement> likedElementsAfter = new ArrayList<WebElement>();
int prethodnaPozicija = 0;
while (true) {
List<WebElement> likedElementsBefore =
driver.findElements(By.xpath(bundle.getString("urlOfProfiles")));
WebElement lastLike =
likedElementsBefore.get(likedElementsBefore.size() - 1);
int y = lastLike.getLocation().y + prethodnaPozicija;
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("var
offSet=document.getElementsByClassName(\"j83agx80 cbu4d94t lzcic4wl ni8dbmo4
stjgntxs oqq733wu l9j0dhe7 du4w35lb cwj9ozl2 ue3kfks5 pw54ja7n uo3d90p7
l82x9zwi nwpbqux9 gc7gaz0o k4urcfbm\")
[0].offsetTop;document.getElementsByClassName('q5bimw55 rpm2j7zs k7i0oixp
gvuykj2m j83agx80 cbu4d94t ni8dbmo4 eg9m0zos l9j0dhe7 du4w35lb ofs802cu
pohlnb88 dkue75c7 mb9wzai9 l56l04vs r57mb794 kh7kg01d c3g1iek1 otl40fxz
cxgpxx05 rz4wbd8a sj5x9vvc a8nywdso')[0].scroll(0,"+ y + ")");
prethodnaPozicija = y;
Thread.sleep((r.nextInt(3) + 4) * 1000);
likedElementsAfter =
driver.findElements(By.xpath(bundle.getString("urlOfProfiles")));
if (likedElementsAfter.size() == likedElementsBefore.size()) {
for (WebElement e : likedElementsAfter) {
if (!
e.getAttribute("href").startsWith("https://www.facebook.com/profile.php")) {
friendsUrl.add(e.getAttribute("href").split("\\?")[0] + "#" + e.getText());
} else {
friendsUrl.add(e.getAttribute("href").split("\\&")[0] +
"#" + e.getText());
}
}
break;
}
}
}
return friendsUrl;}

Слика 6.11-Креирање листе пријатеља

46
6.2.4 Креирање графа
Креирање и обилазак корисничких налога на социјалној мрежи и креирање графа
помоћу програмског кода захтјева познавање алгоритама за обилазак графа. Приликом
обиласка корисничких налога кориштен је алгоритам обилазак по ширини BFS (енг.
Breadth First Search). Уколико би користили обилазак по дубини DFS (енг. Depth-first
Search) јако брзо би дошли до жељене дубине, али листа пријатеља неког корисничког
налога не би била потпуна, јер првенствена намјена DFS алгоритма није пронаћи све
конекције у графу.
Због ограничења која су наведена у тачки 6.2.6 јављају се два случаја приликом
припремања графа прије него што кренемо у његову изградњу. Први случај јесте да
креирамо граф од почетка (слика 6.12, ознака 1), у том случају додајемо један чвор који је
коријенски чвор. Други случај - настављамо креирање недовршеног графа (слика 6.12,
ознака 2), па је потребно да раздвојимо оне чворове које су већ посјећени од оних који
нису. Након што је граф припремљен почињемо са његовом изградњом (слика 6.12, ознака
3).
public Graph getGraph(Graph graph, User root) {
Queue<String> toVisit = new LinkedList<>();
HashMap<String, Boolean> visited = new HashMap<String, Boolean>();
if (graph == null) { //1
visited.put(root.getId(), true);
toVisit.add(root.getId());
graph = new Graph();
fbUserDAO.setUserData(root);
graph.getNodes().add(root);
graphDAO.addGraph(root, graph);
} else { //2
String userName = userDAO.getLastUserName(graph.getId());
boolean dodaj = false;
if (userName == null) {
toVisit.add(root.getId());
visited.put(root.getId(), false);
} else {
visited.put(userName, true);
for (User u : graph.getNodes()) {
if (!u.getId().equals(userName) && !dodaj) {
visited.put(u.getId(), true);
} else if (u.getId().equals(userName) && !dodaj) {
visited.put(u.getId(), true);
toVisit.add(u.getId());
dodaj = true;
} else if (dodaj) {
toVisit.add(u.getId());
}
}
}}long startTime = System.currentTimeMillis();
graph = bfsGraph(graph, toVisit, visited, startTime); //3

47
return graph;}
Слика 6.12-Фаза припремања графа.
Фаза изградње графа подразумијева креирање листе пријатеља (слика 6.13, ознака
1) сваког посјећеног корисничког налога као и прикупљање података о сваком пријатељу
понаособ помоћу методе setUserDatа. Метода setUserData прикупља сљедеће податке:
датум рођења корисника, мјесто пребивалиштва, мјесто рођења и подаци о школи или
послу (слика 6.13, ознака 2).
public Graph bfsGraph(Graph graph, Queue<String> toVisit, HashMap<String,
Boolean> visited, long startTime)throws InterruptedException {
WebDriver driver = DriverConnection.getInstance();
String root = graph.getNodes().get(0).getId();
int depth = Integer.parseInt(bundle.getString("depth"));
int numberOfProfileToVisit = r.nextInt(6) + 5;
while (!toVisit.isEmpty()) {
if (graph.dfs(root) > depth) {
System.out.println("Kraj");
break;
}
String currentUserName = toVisit.remove();
visited.put(currentUserName, true);
if (!currentUserName.startsWith("profile.php")) {
driver.get("https://facebook.com/" + currentUserName +
"/friends");
} else {
driver.get("https://facebook.com/" + currentUserName +
"&sk=friends");
}
List<String> urls = fbUserDAO.getUserFriends(currentUserName); //1
for (String e : urls) {
try {
String[] rez = e.split("#");
String userNameFriend =
rez[0].split("https://www.facebook.com/")[1].split("\\?")[0];
String nameFriend = rez[1];
if (!userNameFriend.startsWith(currentUserName)) {
if (userNameFriend.startsWith("profile.php")) {
userNameFriend =
rez[0].split("https://www.facebook.com/")[1].split("\\&")[0];
}
Link link = new Link(currentUserName,
userNameFriend, 1);
graph.getLinks().add(link);
if ((visited.get(userNameFriend) == null || !
visited.get(userNameFriend))) {
if (!toVisit.contains(userNameFriend))
{
User u = new User();
u.setId(userNameFriend);

48
u.setName(nameFriend);
fbUserDAO.setUserData(u); //2
graph.getNodes().add(u);
Слика 6.13-Фаза изградње графа.
Након креиране листе пријатеља стављамо оне корисничке налоге који нису
посјећено у ред, односно колекцију чворова које је потребно посјетити (слика 6.14, ознака
5 и 6) .
Сваки новододати чвор као и везу између тих чворова стављамо у базу података
(слика 6.14, ознака 3,4 и 7). Фаза креирања графа се зауставља ако је граф достигао
жељену дубину при чему се дубина графа израчунава помоћу методе која је приказана на
слици 6.15, а процес изградње графа се паузира ако је вријеме прикупљања података
премашило два сата.
userDAO.addUser(u); //3
nodeDAO.addNode(graph.getId(),
u.getId(), "child"); //4
toVisit.add(userNameFriend); //5
visited.put(userNameFriend,
false); //6
 
if (numberOfProfileToVisit == 0)
{
visitPages();
visitGroups();
numberOfProfileToVisit =
r.nextInt(6) + 5;
} else {
numberOfProfileToVisit-;
}
long currentTime =
System.currentTimeMillis();
if ((currentTime - startTime) >=
7200000) {
System.out.println("Pauzaaa..");
DriverConnection.close();
Thread.sleep(r.nextInt(3600000)
+ 3600000);
driver =
DriverConnection.getInstance();
startTime =
System.currentTimeMillis();
}
 
}
 
}
linkDAO.addLink(link, graph.getId()); //7
}

49
} catch (Exception ex) {
ex.printStackTrace();;
}}}DriverConnection.close();return graph;}

Слика 6.14-Приказ слика које је корисник објавио

50
public int dfs(String root) {
HashMap<String, Boolean> visited = new HashMap<String, Boolean>();
for (User n : nodes) {
visited.put(n.getId(), false);
}
Queue<String> toVisit = new LinkedList<String>();
int depth = 0;
toVisit.add(root);
toVisit.add(null);
while (!toVisit.isEmpty()) {
String v = toVisit.remove();
if (v == null) {
toVisit.add(null);
if (toVisit.peek() == null) {
break;
} else {
depth++;
continue;
}
}List<Link> child = links.stream().filter(e -> {return
e.getSource().equals(v);}).collect(Collectors.toList());
for (Link c : child) {
if (!visited.get(c.getTarget())) {
visisted.put(c.getTarget(), true);
toVisit.add(c.getTarget());
}
} }
return depth;} 
Слика 6.15- Израчунавање дубине графа помоћу алгоритма обиласка по дубини.
6.2.5 Ограничења
Постоји неколико начина како да избјегнете да будете блокирани приликом
scraping-а веб страница. Један од главних разлога блокирања неког корисника је
преоптеређивање веб сервера [48].
 Kориштење proxy сервера - подразумијева да при сваком сљању HTTP или
HTTPS (енг. Hyper Text Transfer Protocol Secure) захтјева тај захтјев долази
sа различите IP адресе, па се чини као да тај захтјев не шаље увијек иста
особа. Овакав начин сакривања на Facebook-у пролази, али не на очекивани
начин, јер приликом наше прве пријаве Facebook запамти географску
локацију корисника, па уколико упутимо захтјев са тог истог профила, али
путем друге IP адресе која припада некој другој географској локацији у
кратком временском периоду, Facebook ће то да детектује као да неко
користи наш профил са друге локације па ће нам забрани приступ било којој
страници док не потврдимо да смо то ми у питању, а не неко други. Овакав
начин нам само отежава веб scraping.
 Промјена user-agent-а - сакрива корисника на такав начин да изгледа као да
сваки захтјев долази са различитог веб претраживача. Промјеном user-agent-

51
а на Facebook-у може довести до промјене структуре HTML странице. Ако
промјенимо user-agent-а, може се десити да добијемо старију верзију веб
сајта, у овом случају Facebook-а, па неки елемент чији је положај претходно
референциран помоћу атрибута или Xpath-а услијед промјене user-agent-а тај
исти елемент није могуће референцирати на исти начин.
 Успорити веб scraping. Ово је један од начина који је примјењен у
реализацији практичног рада, тако да свака нова аутоматизована интеракција
с веб претраживачем буде насумична.
 Промјена шаблона веб scraping-a. Уколико будемо константно посјећивали
корисничке налоге, Facebook ће да примјети такав шаблон. Шаблон scraping-
а у практичном раду се константно мијења тако да се прво посјетимо
насумичан број корисничких налога, а потом се посјетимо насумичан број
страница на којима се врши насумичан број скроловања да се чини као да
читамо садржај на тим страницама и на исти начин посјећујемо и Facebook
групе. Чак и након креирања оваквог шаблона Facebook не допушта слање
захтјева током читавог дана. На слици 6.16 је приказана порука која
забрањује Facebook налог да посјећује друге корисничке налоге.

Слика 6.16-Приказ обавјештења о ограничињу корисничког налога.

6.3 Визуелизација графа


Да бисмо нацртали граф потребно је: да креирамо површину на којој ће бити
исцртан граф, креирамо објекат који ће да буде приказан, нацртамо чворове, нацртамо везе
између чворове и позиционирамо визуелне елементе. У практичном раду визуелизација
графа је рјешена употребом D3 и Pixi библиотеке.
D3.јs је JavaScript библиотека која се користи за манипулисање документима
заснованим на подацима. D3 помаже да се подаци прикажу и оживе користећи HTML,
SVG и CSS [49]. Приказивање података у облику графа помоћу D3 библиотеке је добар
уколико имате јако мали број чворова, јер за сваки чвор овога графа креира се један <g>
таг. Број чворова у графу некада може да пређе и преко 50.000 чворова, а то значи исто
толико <g> тагова, при чему HTML страница постаje јако тешка.

52
Проблем креирања тагова за сваки чвор у графу је ријешен употребом додатне
библиотеке Pixi. Ова библиотека креира један <canvas> таг у којем се смјешта читав граф,
тако да умјесто да имамо онолико тагова колико имамо чворова у графу сада имамо само
један таг без обзира на број чворова и веза. За рад са Pixi и D3 библиотеком потребно је
додати тагове као на слици 6.17

<
Слика 6.17-Тагови за унос библиотека у JavaScript код.
Да бисмо креирали површину на којој ће бити приказан граф потребно је прво да
креирамо контејнер за друге објекте (слика 6.18, ознака 1). PIXI.Container је основна класа
свих објеката који дјелују као контејнер за друге објекте, укључујући графику, потом
креирамо објекат PIXI.CanvasRenderer (слика 6.18, ознака 2) који исцртава садржај на 2D
canvas тагу. Да бих граф био видљив потребно је да у тијелу HTML документа додамо
елемент renderer.view, што предстаља додавање canvas тага. (слика 6.18, ознака 3).
let width = 1075, height = 750;
var stage = new PIXI.Container(); //1
let renderer =new PIXI.CanvasRenderer(width,height,{width:width,
height:height,transparent: !0,antialias:true}); //2
var div=document.getElementById("div")
div.appendChild(renderer.view); //3

Слика 6.18-Креирање површине за визуелизацију графа


var data='{"nodes":[{"id":"A","group":1},{"id":"B","group":2},
{"id":"C","group":3},{"id":"D","group":4}],"links":
[{"source":"A","target":"B","value":10},{"source":"A","target":"C","value":
10},{"source":"B","target":"C","value":10},
{"source":"D","target":"C","value":10}]}'
var graph=JSON.parse(data)

Слика 6.19-Креирање објекта за визуелизацију


Објекат који ове библиотеке визуеализују мора бити у одговарајућем JSON
формату, обликa {“nodes”:[{“id”:id, ..}, …], ”links”:[{“source”:idsource, ”target”:idtarget},
…]}. Value одређује дебљину везе између чворова, a source и target морају да имају
вриједност id-ја неког од чворова. Примјер једног таквог објекта је приказан на слици 6.19.

53
За сваки чвор и везу у графу се креира нови објекат типа PIXI.Graphics (слика 6.20,
ознака 1 и слика 6.21, ознака 1). PIXI.Graphics првенствено се користи за приказивање
примитивних облика попут линија кругова и правоугаоника на екрану.
graph.nodes.forEach((node) => {node.gfx = new PIXI.Graphics(); //1
node.gfx.interactive=true;
node.gfx.lineStyle(1.5, 0xffffff);
node.gfx.beginFill(0x5e42a6);
node.gfx.drawCircle(0, 0, 5);
stage.addChild(node.gfx); //2
});
graph.nodes.forEach((node) => {var { x, y, gfx } = node;
gfx.position = new PIXI.Point(x, y);
var text = new PIXI.Text(node.id,{fontFamily: 'Helvetica',
fontSize: 12,fill: 0x000000});
text.x = x;
text.y = y;
node.gfx.addChild(text);
});
function ticked() {
graph.nodes.forEach((node) => {
let { x, y, gfx } = node;
gfx.position = new PIXI.Point(x, y);
});
links.clear();
links.alpha = 0.6;
graph.links.forEach((link) => {
let { source, target } = link;
links.lineStyle(Math.sqrt(link.value), 0x999999);
links.moveTo(source.x, source.y);
links.lineTo(target.x, target.y);
});
links.endFill();
renderer.render(stage);
}

Слика 6.20-Креирање чворова


let links = new PIXI.Graphics();//1
stage.addChild(links);

Слика 6.21-Креирање веза између чворова.


Да би смо позиционирали визуелне елементе користимо симулатор заснован на
физици (слика 6.22, ознака 1), који омогућава да се између елемената поставе силе као на
примјер: сви елементи се међусобно одбијају или привлаче (слика 6.22, ознака 3), повезани
елементи су на фиксној дужини (слика 6.22, ознака 2), центрирање елемената око
централне тачке (слика 6.22, ознака 4) итд.

54
let simulation = d3.forceSimulation() //1
.force('link', d3.forceLink().id((d) => d.id)) //2
.force('charge', d3.forceManyBody()) //3
.force('center', d3.forceCenter(width / 2, height / 2)); //4
simulation.nodes(graph.nodes)
.on('tick', ticked);
simulation.force('link').links(graph.links);

Слика 6.22-Позиционирање визуелних елемената.

55
7. ПРИЛОГ
7.1 Примјер креираног графа

Слика 7.1-Визуелизација креираног графа

Слика 7.2-Филтрирање графа по називу мјеста.

56
Слика 7.3-Филтрирање графа по полу.

Слика 7.4-Филтрирање графа по образовању/послу.

57
Слика 7.5-Филтрирање графа по називу корисничког налога

58
8. ЗАКЉУЧАК
Настајање социјалних мрежа је довело до тога да се начин интеракције са другим
корисницима веба значајно промијени. Социјалне мреже својим корисницима омогућавају
проналазак старих пријатеља, ступање у интеракцију са њима, играње игрица са
пријатељима, објављивање слика и видео записа, измјену налога итд. Социјалне мреже
константно унапређују своје функционалности што доводи до повећања броја корисника
социјалних мрежа. Карактеристике које издвајају социјалне мреже од других веб страница
су: корисници сами граде и усмјеравају социјалнe мреже, успјевају на везама корисничких
налога, интерактивне су, изграђене су и напредују од концепта заједнице и пружају
емотивну сигурност.
Повећавањем броја корисника, повећава се и количина података на социјалним
мрежама. Подаци о корисничким налозима су најчешће јавно доступни, јер корисници
нису свјесни стварне вриједности и значаја приватних информација, па не предузимају
ништа по питању подешавања приватности својих налога. Неки корисници нису довољно
обучени да би знали измјенити иницијална подешавања приватности на социјалним
мрежама. Све то олакшава прикупљање података о корисничким налозима, а такве податке
злонамјерни корисници могу да искористе да би наштетили жртви или да изврше
различите типове напада као што су социјални инжењеринг, крађа идентитета и други.
Напади на социјалне мреже се брже шире од осталих врста мрежних напада због
повјерења које постоје међу корисницима мреже. Узимајући све у обзир, корисници имају
критичну улогу у заштити својих података.
Прикупљање података о корисничким налозима се може реализовати на два начина:
 Путем API-ја и
 Помоћу веб scraping-а
Веб scraping је задужен за екстракцију података са веб странице. За прикупљање
података на веб страници је потребно разумјевање основне структуре HTML странице. У
сврху scraping-а вриједи истаћи два атрибута, а то су: id и class. Када би само једна ставка
на веб страници била од интереса, било би довољано користити одговарајући атрибут id, а
ако је скуп сличних елемената од интереса, одређивање положаја помоћу атрибута class
изводљиво у многим ситуацијама. Постоје и алтернативне методе за издвајање садржаја са
веб странице помоћу Xpath, CSS селектора и других.
У овом раду је презентован начини реализације веб scraper-a употребом selenium
библиотеке. Осим кориштене библиотеке постоје и многе друге као што су request и
beautiful-soup, scrapy. Веб scraping користи ресурсе са посјећених страница и често
посјећују странице без одобрења. Због тога се могу десити одређени проблеми, попут
нарушавања приватности или преоптерећења веб сајта, што доводи до тога да будемо
блокирани приликом scraping-a. Постоји неколико начина како да избјегнемо да будемо
блокирани а то су: кориштење proxy сервера, промјена user-agent-а, успоравање рада веб
scraping-а и мијењање шаблон веб scraping-а.
У овом раду је демонстриран начин креирања графа конекција на социјалној мрежи
Facebook. Овакав вид имплементације може послужити као референца за неки нови алат
који ће да прикупља податке са неке друге социјалне мреже.

59
60
ЛИТЕРАТУРА

[1] D. Shin, „Interacting with Computers,“ The effects of trust, security and privacy in social
networking: A security-based approach to understand the pattern of adoption, т. 22, бр. 5, pp.
428-438, 2010.
[2] D. &. E. N. Boyd, „Social network sites: definition, history and scholarship,“ Journal of
Computer-Mediated Communication, т. 13, бр. 1, pp. 210-230, 2007.
[3] M. Zuckerberg, „Facebook“, https://www.facebook.com/notes/facebook/an-open-letter-
from-mark-%20zuckerberg/2208562130 , посјећено: 02.03.2021.године.
[4] C. Chapman, http://www.webdesignerdepot.com/2009/10/the-history-and-evolution-of-
social- media/ , посјећено: 03.01.2021.године.
[5] L. Prall, http://ezinearticles.com/?SixDegrees---Social-Networking-In-Its-
Infancy&id=5064109 , посјећено: 02.01.2021.године.
[6] M. Roser, H. Ritchie и E. O. Ospina, https://ourworldindata.org/internet ,
посјећено:05.01.2021.
[7] L. Prall, https://ezinearticles.com/?Friendster---Paving-The-Way-for-Todays-Social-
Networks&id=5384366 , посјећено: 05.03.2021.године.
[8] D. Hendricks, http://smallbiztrends.com/2013/05/the-complete-history-of-social- media-
infographic.html , посјећено: 05.03.2021.године.
[9] A. M. M. G. P. D. P. &. B. B. Mislove, „Proceedings of the 7th ACM SIGCOMM
Conference on Internet Measurement,“ у Mislove, A., Marcon, M., GumMeasurement and
analysis of online social networks., 2007, pp. 29-42.
[10] https://help.twitter.com/en/using-twitter/how-to-tweet , посјећено: 02.01.2021.године.
[11] J. Donath, „Signals in social supernets,“ Journal of Computer-Mediated Communication, т.
13, бр. 1, pp. 231-251, 2007.
[12] W. L. J. L. J. &. F. C. Luo, „An analysis of security in social networks,“ у Eight IEEE
International Conference on Dependable, Autonomic and Secure Computing, Chengdu, 2009.
[13] Y. E. Y. C. A. A. N. &. P. A. Altshuler, Security and privacy in social networks, New York:
Springer, 2013.
[14] M. Chi, https://www.sans.org/reading-room/whitepapers/policyissues/reducing-risks-social-
media-organization-33749 , посјећено: 03.01.2021.године.
[15] M. A. Johani, „Personal Information Disclosure and Privacy in Social Networking Sites“,
https://core.ac.uk/download/pdf/80334091.pdf , посјећено: 01.01.2021.године.
[16] A. &. S. V. Narayanan, „De-anonymizing social networks,“ Presented at the 30th IEEE
Symposium on Security and Privacy,, Berkley, 2009.
[17] L. Cutillo, https://pastel.archives-ouvertes.fr/file/index/docid/932360/filename/
these_Cutillo_V2.pdf , посјећено 02.01.2021.године.

61
[18] Y. P. J. &. S. R. Cheng, „Preserving user privacy from third-party applications in online
social networks,“ у Proceedings of the 22nd International Conference on World Wide Web,
2013.
[19] K. B. S. &. L. W. Singh, „Redesigning privacy control in social networking platforms,“ у
USENIX Security Symposium , 2009.
[20] M. J. A. E. Z. H. P. L. R. &. T. Q. Beye, Literature overview-privacy in online social
networks, Twente: Centre for Telematics and Information Technology, University of Twente,
2010.
[21] D. B. M. B. D. K. E. P. C. Irani, „Detection of Intrusions and Malware, and Vulnerability
Assessment,“ у Reverse social engineering attacks in online social networks, New York, 2011,
pp. 55-74.
[22] E. Protalinski, https://www.zdnet.com/article/chinese-spies-used-fake-facebook-profile-to-
friend-nato-officials/ , посјећено: 04.01.2021.године.
[23] D. Swinhore, https://www.csoonline.com/article/3334617/what-is-spear-phishing-why-
targeted-email-attacks-are-so-difficult-to-stop.html , посјећено 02.02.2021.године.
[24] T. A. R. Team, https://www.trendmicro.de/cloud-content/us/pdfs/security-intelligence/
white-papers/wp-spear-phishing-email-most-favored-apt-attack-bait.pdf , посјећено:
02.02.2021.године.
[25] R. C. B. N.-R. C. Potharaju, 3-clique attacks in online social networks. Tec, 2011.
[26] C. S. J. Z. X. F. Y. Zhang, „Privacy and security for online social networks: challenges and
opprtunities,“ у IEEE Netw., 2010.
[27] M. G. R. E. Y. Fire, „Online social networks: threats and solutions,“ IEEE Communications
Surveys & Tutorials, т. 16, бр. 4, 2014.
[28] M. S. H. Faghani, „Malware propagation in online social networks,“ у Proceedings of the
4th International Conference on Malicious and Unwanted Software, 2009.
[29] Zonk, https://it.slashdot.org/story/05/10/14/126233/cross-site-scripting-worm-floods-
myspace , посјећено 04.02.2021.године.
[30] R. K. M. T. B. Heatherly, Preventing private information inference attacks on social
networks, 2013.
[31] L. L. X. T. H. J. J. Jin, „Sybil attacks vs identity clone attacks in online social networks,“ у
Proceedings of the 6th International Conference on Information Security and Assurance,
Shangai, 2012.
[32] https://websetnet.net/bs/%C5%A1ta-su-saveti-za-za%C5%A1titu-i-prevenciju-napada-
klik--ckingom/ , посјећено 04.02.2021.године.
[33] S. Deliri и A. Massimiliano, „Security and Privacy Issues in Social Networks“,
https://www.researchgate.net/publication/300335107_Security_and_Privacy_Issues_in_Social_N
etworks , посјећено 05.02.2021].
[34] S. Schroeder, https://mashable.com/2009/12/21/facebook-clickjacking/ , посјећено:
05.02.2012.године.

62
[35] L. M. R. S. T. Cutillo, Safebook: a privacy-preserving online social network leveraging on
real-life trust, 2009.
[36] R. T. J. Dhamija, „The battle against phishing: dynamic security skins,“ Proceedings of the
Symposium on Usable Privacy and Security, Pittsburgh, 2005.
[37] B. P. A. G. K. M. A. Viswanath, An analysis of social network-based sybil defenses, 2011.
[38] F. R. T. A. V. A. J. Z. C. R. K. Benevenuto, „Identifying video spammers in online social
networks,“ у Proceedings of the 4th International Workshop on Adversarial Information
Retrieval on the Web, 2008.
[39] J. J. Z. Hai Lian,
https://www.researchgate.net/publication/320929016_Big_Data_Collection_of_Social_Media_H
arvesting , посјећено: 04.01.2021.године.
[40] https://www.octoparse.com/doc-wf/build-your-first-task , посјећено: 04.03.2021.године.
[41] https://www.octoparse.com/ , посјећено: 15.03.2021.године.
[42] https://www.capterra.com/p/141533/dexi-io/ , посјећено: 20.03.2021.године.
[43] https://www.getapp.com.au/software/110685/dexi-io, посјећено: 01.04.2021.године.
[44] https://en.wikipedia.org/wiki/NodeXL, посјећено: 02.04.2021.године.
[45] https://sr.wikipedia.org/sr-ec/%D0%93%D0%B5%D1%84%D0%B8 . посјећено:
01.04.2021.године.
[46] J. Unadkat, https://www.browserstack.com/guide/selenium-webdriver-tutorial, посјећено:
02.04.2021.године.
[47] https://techexpertise.medium.com/facebook-cookies-analysis-e1cf6ffbdf8a, посјећено
02.04.2021.године.
[48] https://www.octoparse.com/blog/scrape-websites-without-being-blocked, посјећено:
02.04.2021.

63

You might also like