Wylogowanie z serwisu a zmiana IP – co robić?

The background: jest sobie pewien serwis AKA aplikacja WWW. Z pewnych względów (bezpieczeństwo) zmiana IP użytkownika powoduje wylogowanie z aplikacji. Do tego – z innych względów – nie bardzo jest wola, by inwestować w zmianę takiego zachowania tejże aplikacji.

The problem: kolejny popularny operator (Plus) zmienił(?) działanie swojej sieci tak, że klientom często zmienia się IP w trakcie połączenia z Internetem, co skutkuje wylogowaniem z serwisu. Mam pewne podejrzenia, że może to dotyczyć tylko niektórych taryf, ale nie to jest przedmiotem rozważań. Wylogowuje i już.

The question: jak można w prosty sposób (dla laika) obejść problem od strony użytkownika aplikacji? Jedno rozwiązanie już znam – użycie Opery i turbo mode. Niby fajne, bo Opera jest darmowa, ale… nie jest to open source i nie każdy ma możliwość instalacji oprogramowania. Pewnie dowolne tunelowanie ruchu przeglądarki załatwi sprawę, ale dla laika to zbyt skomplikowane. Być może pomogłoby proxy, ale nie znalazłem informacji na stronach Plusa o tym, żeby coś takiego udostępniał. No i problem dotyczy nie tylko Plusa… Pomysły?

Automatyczne wykrywanie spamu na Blox.

Trochę z rozpędu po ostatnim spojrzeniu na beznadziejną captchę na Blox, trochę zażenowany brakiem działania administratorów Blox w tak wydawałoby się prostej sprawie, trochę chcąc odkurzyć stare skrypty i znajomość Perla, trochę ze względu na zainteresowaniem tematem spamu, a w końcu trochę dla zabawy, postanowiłem zrobić przymiarkę do automatycznego wykrywania spamu na Blox. Chodzi o określanie, czy dany blog służy wyłącznie spamowaniu, oczywiście automatycznie, a co za tym idzie nie ze stuprocentową pewnością.

Administratorzy zapowiedzieli, że captcha zostanie poprawiona w kwietniu (trzymam za słowo i liczę na to, zapewne nie tylko ja), więc spamblogów nie powinno od tej pory przybywać. Zatem postanowiłem skupić się nie na liście nowozałożonych blogów, tylko na liście nowych wpisów, czyli aktywnych spamblogach. Co prawda pierwotny plan zakładał przeiterowanie się po wszystkich blogach i określenie prawdopodobieństwa, czy jest to spamblog, ale nie znalazłem niestety listy wszystkich blogów na Blox. Owszem, można próbować robić rzeźbę pod tytułem „przeiterujmy się po tagach”, ale nadal nie daje to gwarancji uzyskania listy wszystkich blogów – wystarczy, że ktoś nie taguje i system nie dotrze do jego bloga, więc stanęło na tym, że obserwuję listę nowych wpisów i stamtąd biorę dane. Przy okazji oceniam nie tyle cały blog, co poszczególne wpisy, co może być przydatne.

Podejście pierwsze – pobierz i oceń. Na samym początku stwierdziłem, że będę pobierał wpis do oceny i oceniał na podstawie arbitralnych kryteriów. Pomysł szybko upadł – zmiany w algorytmie oceniania powodowały niekompatybilność z poprzednimi danymi, a zmiany były konieczne – wychodziły coraz to nowe kryteria i ich wagi. Wersjonowanie algorytmu przy ocenie nie pomagało, bo dane były tracone. OK, nie jest to wszystko aż tak proste, jak się wydawało na początku.

Podejście drugie – pobierz i zapisz jak najwięcej cech wyróżniających dla danego wpisu/bloga, a potem pomyśli się nad algorytmem. No niestety, zapisywanie dużej ilości danych może być ciekawe, szczególnie, że potem można sięgnąć do wiedzy ze studiów i określić poziomy istotności poszczególnych parametrów (albo popytać kumpla o gotowca, może jeszcze ma…). Wytrenuje się AI na próbce kontrolnej, a potem AI sama zrobi resztę. Brzmi fajnie, ale trochę overkill, poza tym, mało odporne na dołożenie kolejnych parametrów, gdyby przyszło mi do głowy ich wyciąganie.

Podejście trzecie, aktualne,kompromisowe – pobierz i zapisz istotne (wybrane arbitralnie przeze mnie) cechy wyróżniające dany wpis. Osobny skrypt ma algorytm procentowy, każda cecha może przyjmować wartości 0-100% prawdopodobieństwa bycia spamem. Następnie w zależności od ilości cech wylicz prawdopodobieństwo dla całego wpisu przy pomocy średniej ważonej. Rezultaty są dość interesujące.

Tutaj lista blogów (praktycznie nikt nie korzystał, więc wywaliłem), które sklasyfikowałem jako spamerskie z prawdopodobieństwem 80% i więcej. Format prawdopodobieństwo bycia spamem (%), spacja, link do bloga. Nie widzę (szybko patrząc) żadnego false positive, a wy? Aktualnie jest takich blogów 375 na 2404 wszystkich sprawdzonych blogów. Jasne, nie jest to cud techniki, ale przy dodaniu pewnych prostych whitelist myślę, że można spokojnie blokować automatem wszystkie blogi z prawdopodobieństwem od 70% w górę.

Szczegółów badanych cech oraz algorytmu nie chcę na razie opisywać, bo po co spamerzy mają się bronić? Jak będzie utrudnione zakładanie nowych blogów, to pomyślę o tym. Na razie cały czas zbierają się dane… Gdyby byli chętni do przeglądania wyniku w celu wychwytywania false positive’ów (wpisujcie miasta, które przeglądają ;-)), to mogę pomyśleć o wystawianiu listy spamów automatem co jakiś czas.

Całość napisana oczywiście w Perlu, główny moduł zbierający z użyciem WWW::Mechanize (genialna sprawa do crawlerów).

UPDATE: Drobny update statystyk z dnia 27.04.2012 – 13481 unikatowe blogi (wcześniej chyba były unikatowe wpisy, ale mniejsza), w tym 1094 do natychmiastowego wycięcia (80% i więcej). Dla porządku 70% i więcej to 2438 sztuki. Listy nie zamieszczam, bo zainteresowanie było znikome. A captcha nadal nie została poprawiona, choć koniec kwietnia…

Facebook takes it all.

Niedawno znajomy napisał, na Facebooku zresztą, coś w stylu „wygląda, że Facebook chce przejąć rolę LinkedIn”. Chodziło o to, że można dodać swoje miejsce pracy i wskazać, kto ze znajomych też tam pracuje. Czyli, upraszczając okrutnie, posocjalizować się na temat pracy.

Jest to oczywiście prawdziwe, ale IMO niepełne. Facebook to, moim zdaniem, praktycznie państwo w państwie, Internet w Internecie. Nisza trochę na wzór wewnętrznych serwisów tworzonych przez Tora czy Freenet, z tą różnicą, że dostępna w prosty sposób, skrajnie nieanonimowa i… powszechna. Dodatkowo, co chyba najważniejsze, publiczna. O ile Tor czy Freenet tworzą wewnętrzne, separowane sieci, to FB wręcz przeciwnie – jest otwarty na wszystko i wszystko chce wchłonąć lub przyłączyć.

Szybki przegląd serwisów/usług, które występują w wersji Facebookowej.

  • Poczta email – oczywiście możemy wysłać wiadomość do innej osoby z Facebooka, co w sumie odpowiada wysłaniu maila przez WWW. I bez spamu praktycznie. Przynajmniej u mnie. Póki co. Zintegrowanie z tradycyjną pocztą to w zasadzie formalność, chyba tylko spam ich powstrzymuje, bo podawanie hasła do poczty w celu „znalezienia znajomych” jest popularne.
  • Komunikator tekstowy (głosowego chyba jeszcze nie ma?) – jak najbardziej istnieje, zarówno przez stronę, jak i – o czym mniej osób wie – przez zewnętrznego klienta. Oparty o XMPP, czyli otwarty.
  • Uwierzytelnianie – OpenID nigdy nie zdobyło szerokiej popularności, mimo, że wielu dostawców oferowało usługę, a „zaloguj z Facebookiem” już jest popularne.
  • Gry online – można pograć „na Facebooku” i podzielić się tym ze znajomymi (pochwalić osiągnięciami, zaprosić do gry).
  • Reklamy – można kupić dokładnie sprofilowaną reklamę. A wydawca jest jeden – FB.
  • Strony WWW – zespoły, firmy itp. – wiadomo, ale często nawet portale internetowę mają… stronę na FB. Taka strona o stronie.
  • Blog/miniblog – w prosty sposób można prowadzić coś na kształt (mini)bloga na FB.
  • LinkedIn – opisana na początku wpisu funkcjonalność. W sumie bez problemu każda społecznościówka się łapie…
  • Album ze zdjęciami – można podzielić się ze znajomymi fotkami z wakacji? Można.
  • Newsy/forum – chyba nie wymaga komentarza, bo to podstawowa funkcja.
  • Wyszukiwarka – przede wszystkim znajomych, ale nie tylko. Z racji trzymania wszystkiego u siebie nawet nie muszą specjalnie kombinować z indeksowaniem.
  • Antymalware – tylko teoretycznie, bo chyba w tej chwili łatwiej złapać szkodnika przez FB, ale mają potencjał do monitorowania wszystkich linków już w momencie ich dodawania.

Coś pominąłem? Zapewne tak. Niezależnie od tego Facebook to taki Internet cyferka.zero (modna numeracja, mylę się w numerkach, nie wiem który dać ;-)) – wszyscy są zalogowani, monitorowani, uwierzytelnieni (zgodnie z regulaminem nie można mieć konta na nieprawdziwe dane, odpada problem multikont), bezpieczni… Wszystko pod pełną kontrolą – wiadomo dokładnie, który użytkownik co klika, kiedy klika, co pisze itd. Oczywiście najwięcej wiadomości ma sam Facebook – zna zainteresowania, wie, czym chcemy się z kim dzielić, z jakich IP i urządzeń się łączymy, dzięki widgetom na stronach WWW wie, jakie strony WWW odwiedzamy i to niekoniecznie w momencie, gdy jesteśmy zalogowani do Facebooka. Prywatność cierpi okrutnie, ale… chyba większości ludzi to nie przeszkadza.

W komentarzach do wpisu na temat śmierci Steve’a Jobsa (dead link) zasugerowałem, że Mark Zuckerberg już zasługuje na stawianie w szeregu z najlepszymi. I moim zdaniem dokładnie tak jest. Już w tej chwili, bo już tej chwili jesteśmy bliscy sytuacji, kiedy nowi użytkownicy mogą zacząć korzystać z Internetu właśnie przez Facebooka. I wyłącznie przez Facebooka (oczywiście także logując się do innych serwisów, pytanie na ile świadomie). Podobnie, jak kiedyś utożsamiano Internet z przeglądarką. Tylko o poziom dalej.

Polecam też dzisiejszy ciekawy artykuł na Antyweb o Facebooku, o którym dowiedziałem się praktycznie po napisaniu tego wpisu (OK, zainspirował drobne zmiany).