Jak analizować akcje dezinformacji na przykładzie użytkowników portalu Wykop.pl

dodał 24 kwietnia 2020 o 20:35 w kategorii Info, Socjo  z tagami:
Jak analizować akcje dezinformacji na przykładzie użytkowników  portalu Wykop.pl

Od dawna wiadomo, że portale społecznościowe służą nie tylko do wymiany zdjęć i wspomnień ze znajomymi, lecz także do szybkiego udostępniania różnego rodzaju linków i informacji, które mogą zostać wykorzystane do manipulowania opinią społeczną.

Przykładów jest mnóstwo, jednak ten najgłośniejszy – ingerowanie Rosji w wybory w Ameryce – został dokładnie opisany w raporcie Muellera, a pewne propagandowe metody używane przez rosyjskich agentów zostały zdemaskowane. Ich główną bronią było kupowanie reklam wspierających pasującego im kandydata, tworzenie grup zrzeszających zwolenników oraz sianie dezinformacji – kreowanie stron zawierających materiały przychylne dla kandydata Republikanów oraz udostępnianie ich, a także ukrywanie niewygodnych informacji. Większość zadań była wykonywana automatycznie przez tzw. sieć botów, a głównymi wykorzystanymi mediami społecznościowymi były Facebook i Twitter.

Czytacie Wpis Gościnny
Jego autorem jest Wojciech, autor bloga offensiveosint.io, którego możecie obserwować także na Twitterze: @the_wojciech.

W związku z wyborami w Polsce, które odbędą się niedługo, postanowiłem dokonać analizy znanego każdemu portalu społecznościowego wykop.pl. Wykop jest stale oskarżany o słabą moderację, pozwalanie na manipulowanie głosami czy propagowanie fake newsów. Według użytkowników niektóre ze znalezisk lub wpisów na Mikroblogu są cenzurowane oraz usuwane przez moderatorów, ponieważ nie są do końca poprawne politycznie, jednakże dostają mnóstwo wykopów (łapek w górę).

Przyjrzałem się znaleziskom z tagu #wybory (od grudnia 2019) oraz #polityka (od kwietnia), a także obserwującym je użytkownikom, którzy najczęściej zakopują znaleziska w wymienionych tagach. Dane zostały przedstawione w czytelny sposób. Szukałem różnych anomalii, które wskazywałyby na manipulowanie głosami oraz dużej liczby zakopów przez tych samych użytkowników, co implikowałoby używanie sieci botów, które nie dopuszczają do przebicia się niewygodnych znalezisk na stronę główną.

Zdobywanie danych

Wykop posiada API (https://www.wykop.pl/dla-programistow/api/), jednakże dostęp do niego jest nieco utrudniony, dlatego zdecydowałem się na ręczne sprawdzenie strony pod względem możliwości zeskrobania (scraping) wszystkich niezbędnych informacji.

Na początku potrzebowałem artykułów z poprzednich tygodni, a nawet miesięcy. Przeglądając jeden z tagów zobaczyłem żądanie AJAX wysyłane do

https://www.wykop.pl/ajax2/tag/znaleziska/wybory/wszystkie/next/link-[ID]//hash/c01b50d81489f5db09f2705560e5c9b5-1587293366

które zwraca ostatnie 25 znalezisk w formacie HTML, które z kolei można łatwo parsować Pythonem i Beautiful Soup. Aby przejść do kolejnych znalezisk, wystarczy zamienić “link-[ID]” na id ostatniego artykułu. Parametr hash jest niepotrzebny.

Posiadając znaleziska w bazie Elastic (timestamp oraz id), należy sprawdzić wszystkich zakopujących, do których dostęp daje poniży link

https://www.wykop.pl/ajax2/links/downvoters/[ID]//hash/c1f0b92d0082cb4cbaf67ea495780cd8-1587293852

gdzie ID to id znaleziska.

Tym samym baza zapełniła się nazwami użytkowników, którzy zakopywali znaleziska.

Ostatni etap to wizualizacja powiązań pomiędzy użytkownikami i do tego potrzebowałem zeskrobać użytkowników obserwujących (przez wykopowiczów, którzy najczęściej zakopują). Również i do tego dostęp nie jest utrudniony

https://www.wykop.pl/ludzie/followers/USERNAME/ - obserwujący użytkownika
https://www.wykop.pl/ludzie/followed/USERNAME - obserwowani przez użytkownika

Po zdobyciu danych można zacząć ich wizualizację oraz szukać schematów i anomalii.

Wizualizacja i interpretacja danych

Jak już wspomniałem wcześniej, pierwszym punktem było sprawdzenie liczby znalezisk danego dnia i zestawienie jej z liczbą zakopów tego samego dnia.

Poniższy wykres prezentuje tę zależność dla tagu #wybory:

Rozsądnie jest zakładać, że im więcej znalezisk, tym większa ilość zakopów, taki schemat powinien utrzymywać się niezależnie od znalezisk. Jeśli natomiast jest mało znalezisk, a duża liczba zakopów, wtedy można stwierdzić, iż któreś z tych znalezisk było silnie minusowane, żeby nie przebiło się wyżej.

Jednym z takich przykładów może być dzień 18.11.2019, gdzie zostało dodane tylko jedno znalezisko, które otrzymało 127 zakopów (przy 515 wykopach), podczas gdy w innych dniach proporcje były bardziej zrównoważone.

https://www.wykop.pl/link/5219641/kandydaci-konfederacji-w-prawyborach-prezydenckich-ogloszeni/

Podobna sytuacja miała miejsce dnia 16.12.2019, jedyne dodane znalezisko owego dnia otrzymało 158 zakopów (235 wykopów).

https://www.wykop.pl/link/5258313/najlepsze-wypowiedzi-malgorzaty-kidawy-wystawionej-przez-po/

Natomiast dnia 18.01.2020 zostały dodane 4 znaleziska przy całkowitej liczbie 166 zakopów. Pamiętając, że mamy wszystkie dane w bazie, możemy szybko sprawdzić, które znaleziska z danego dnia otrzymały najwięcej “minusów”. Znaczną większość zakopów dostało znalezisko:

https://www.wykop.pl/link/5299135/prawybory-w-konfederacji-to-wzor-dla-innych-partii/ (97)

Inne z tego dnia otrzymywały znacznie mniej zakopów.

https://www.wykop.pl/link/5298995/dobromir-sosnierz-zdenerwowany-na-korwina-i-berkowicza-po-ogloszeniu-wynikow/ (16)
https://www.wykop.pl/link/5298921/wyniki-prawyborow-konfederacji-krzysztof-bosak-kandydatem-na-prezydenta-rp/ (53) 
https://www.wykop.pl/link/5298677/no-coty-to-naprawde-kandydaci-na-samochod-roku/ (5 zakopów, zły tag)

I w taki sposób możemy znajdować znaleziska z największą liczbą minusów w konkretnych dniach. Następnie – sprawdzając każde znalezisko (jego zakopy i wykopy) – należy upewniać się, czy nie zostało ono w jakiś sposób zmanipulowane.

Tag #polityka jest częściej używany ze względu na uniwersalność, zatem więcej znalezisk jest dodawanych każdego dnia. Poniższy wykres przedstawia zależność zakopów do znalezisk danego dnia.

Jeśli porównamy początkowe dni kwietnia ze sobą:

  • 04.04 – 83 znaleziska i 854 zakopy,
  • 05.04 – 82 znaleziska i 1640 zakopów,
  • 06.04 – 141 znalezisk i 1560 zakopów.

Widać wyraźnie anomalie 5 kwietnia – duża liczba zakopów przy małej liczbie znalezisk oznacza, że kilka znalezisk z tego dnia musiało być nadzwyczaj minusowane. Możemy przyjrzeć się bliżej każdemu ze znalezisk danego dnia.

Kilka znalezisk zdecydowanie się wyróżnia:

https://www.wykop.pl/link/5432323/prezydent-czech-mowi-o-porazce-ue-i-ke-ws-koronawirusa/
156 (240 wykopów)
https://www.wykop.pl/link/5432507/co-probuje-nam-zaaplikowac-wielki-brat/ (134)
https://www.wykop.pl/link/5432043/kaczynski-nie-chce-stanu-wyjatkowego-bo-przestalby-byc-naczelnikiem/ (102)
https://www.wykop.pl/link/5432023/zaraz-bedziemy-mieli-wiecej-samobojstw-i-bankructw-z-powodu-epidemii-niz-wirusa/ (88)
https://www.wykop.pl/link/5431519/bosak-rozsadnikiem-koronawirusa-w-polsce-stala-sie-ochrona-zdrowia/ (116)
https://www.wykop.pl/link/5431513/zmarla-wdowa-po-premierze-janie-olszewskim/ (99)
https://www.wykop.pl/link/5430873/teraz-juz-rozumiecie-dlaczego-polska-przez-tyle-lat-byla-pod-zaborami/ (118)

Spośród wszystkich 1640 zakopów aż 813 należało do 7 znalezisk z 82.

Natomiast 15 kwietnia – ze wszystkich dodanych 107 znalezisk i 1535 zakopów – 8 znalezisk dostało 900 minusów.

https://www.wykop.pl/link/5449905/kaczynski-nie-dorosl-do-demokracji-i-nie-radzi-sobie-ze-skutkami-epidemii/ (177)
https://www.wykop.pl/link/5450175/26-02-2020-lukasz-szumowski-ujawnil-ze-byl-w-tym-roku-na-nartach-we-wloszech/ (143)
https://www.wykop.pl/link/5450719/pis-popiera-zakaz-edukacji-seksualnej-i-kary-wiezienia-za-nia/ (66)
https://www.wykop.pl/link/5450813/grzegorz-braun-pokazuje-swoje-prawdziwe-oblicze/ (240)
https://www.wykop.pl/link/5451133/mati-sobie-harrego-pottera-zatrudnil-w-mf-szykujcie-sie-na-magie-portfelach/ (77)
https://www.wykop.pl/link/5450911/piec-wielkich-klamstw-jaroslawa-kaczynskiego/ (63)
https://www.wykop.pl/link/5450639/ustawa-stop-447-w-sejmie-robert-bakiewicz/ (61)
https://www.wykop.pl/link/5449009/krakow-baner-na-wiadukcie-wybory-to-zbrodnia/ (73)

Niektóre znaleziska mogą się pokrywać, ponieważ zostały oznaczone zarówno tagiem #polityka, jak i #wybory.

Czy to jest jakaś zorganizowana akcja?

Użytkownicy są sercem każdego portalu społecznościowego, o jakości i treści materiałów, które trafiają na stronę główną, jednocześnie zyskując zasięg, decydują sami wykopowicze. Wszystkie wykopane znaleziska można znaleźć na profilu danego użytkownika, jednak do materiałów zakopanych dostęp jest niemożliwy. Czytając uważnie rozdział o gromadzeniu danych, mogłeś zauważyć, że dane o użytkownikach, którzy zakopali znaleziska, są już w bazie.

Użytkownicy, którzy zakopali ponad 100 znalezisk w tagu #polityka w dniach 01.04–16.04

Użytkownicy, którzy zakopali ponad 70 znalezisk w tagu #wybory w dniach 17-11.2019–16.04.2020

Wykres pokazuje, iż pewni użytkownicy byli bardziej aktywni w zakopywaniu niż inni. Spośród wszystkich użytkowników wybrałem tych najbardziej zaangażowanych w zakopywanie i sprawdziłem ich obserwowanych (followed), tworząc graf.

Graf przedstawia wszystkich obserwujących (followed) użytkowników, którzy zakopali ponad 100 znalezisk oznaczonych tagiem #polityka w dniach 01.04–16.04.

Mając taki graf, można zacząć poszukiwanie wspólnych cech, w tym wypadku kont, które łączą użytkowników. W ten sposób również operują sieci botów na Twiterze, także w kwestii malware’u – konto obserwuje swoje “konto matkę”, która działa jak command & control server, wysyłając rozkazy do zrealizowania.

Graf został pokolorowany według modułowości, pokazując, jak rozprzestrzenia się na poszczególne społeczeństwa/klastry. Widzimy, że każdy użytkownik ma swoją grupę obserwujących i zauważalne są jedynie nieliczne 2-stopniowe powiązania.

Oficjalne konto Wykopu obserwuje prawie każdy użytkownik, więc nie dziwi wiele powiązań innych użytkowników z tym kontem. Wizualizacja danych na podstawie powiązań w postaci grafu znacząco ułatwia pracę z różnego rodzaju sieciami zależności i jest wykorzystywana w tropieniu między innymi sieci botów.

Od surowych danych, zeskrobanych bezpośrednio ze strony, przeszliśmy do zestawiania zakopów w danym przedziale czasowym oraz tworzenia grafu zależności między danymi użytkownikami, których wyodrębniliśmy z wcześniejszych informacji.

Podsumowanie

Oczywiście jest to jedynie możliwa część całej kampanii dezinformacyjnej, inne zasługujące na uwagę aspekty to nieprzychylne lub odbiegające od tematu komentarze lub fake newsy. Warto zwrócić uwagę na konta, które zostały przejęte przez hakerów poprzez złośliwe oprogramowanie lub słabe hasło użytkownika. Po ich aktywności nie rozpoznamy, że bierze udział w kampanii dezinformacyjnej, lecz jeżeli spojrzymy na szerszy obraz i zaprezentowane przykładowe wykresy, można wyłapać takie konta oraz odpowiednio zawiadamiać użytkowników. Podobnych kampanii na różne tematy odbywa się mnóstwo prawie na każdym portalu i trzeba być przygotowanym na możliwe nadużycie zasad działania każdego medium społecznościowego w celu narzucania własnych poglądów oraz propagandy.