Yttrandefrihet på riktigt är också konsekvenser på riktigt

26 besökare inne nu. Läs om vår integritetspolicy och cookies i menyn uppe till höger.

Spara ner Flashbacks postningar – Del 1

Extremt mycket poster

Flashback består av extremt mycket postningar. Sammanlagt finns det mer än 56,3 miljoner postningar (2016-02-13 Kl: 1346), borttagna postningar inräknat. Nya postningar inkommer med mellan 5.000 och 25.000 per dygn. Om du vill veta exakt hur mycket som postats får du testa dig fram. Börja med att skriva in denna länken i webbläsaren:

https://www.flashback.org/sp56336900

Ändra sedan talet uppåt tills du kan läsa:

Du angav ett ogiltigt Inlägg. Om du följde en giltig länk, var vänlig och kontakta den webbansvarige.

Testa några tal ytterliger uppåt. Om du får samma meddelande varje gång har du nått det sista inlägget. Medan du testar kan det dock rullat in ytterligare några hundra…

Definiera en algoritm

Vårt mål är att hitta näthatare och för att kunna göra det behöver vi bland annat läsa en användares alla postningar. Flashbacks sökmotor kan bara hitta de 1000 senaste postningarna, dessutom är det tidsödande att läsa dessa poster genom sökmotorn. Sökmotorn överbelastas också ofta. Vi behöver alltså kunna ladda ner det vi vill läsa och för det behövs en algoritm i ett datorprogram och för det behöver vi undersöka hur Flashback fungerar.

Flashbacks postningar

Varje post på Flashback tilldelas en bokstavskombination, ”sp”. Bokstavskombinationen följs av ett postnummer, ex. 56336900 som då blir sp56336900. Numreringen är obruten, dvs att borttagna postningar bildar en lucka i numreringen. Det utnyttjar vi till att också ladda ner borttaget genom en egen algoritm, mer om det senare.
Det finns dock ett problem med nummerserien. En bit efter att man startat Flashback forum hoppade man plötsligt över ett antal tusen i nummerserien som återkom några år senare. När den överhoppade nummerserien återkom lade sig plötsligt de posterna först, dvs vid vanlig bläddring genom postningarna dyker det upp poster från 2006 före postningar från 2003. Detta medför att algoritmen blir betydligt mer komplicerad.

Koppla ifrån Flashback

Varje post på Flashback innehåller länkar till Flashback som bla styr utseendet och lägger in bilder i posten:

<link rel=”search” type=”application/opensearchdescription+xml” href=”/opensearch.xml” title=”Search” />

<link rel=”stylesheet” href=”https://static.flashback.org/css/default_new.css?v=23322323″ type=”text/css” />

<script type=”text/javascript” src=”https://static.flashback.org/js/vbulletins.min.js?v=23322323″></script>

<link rel=”alternate” type=”application/rss+xml” title=”Flashback Forum RSS Feed” href=”/external.php?type=RSS” />

<link rel=”shortcut icon” href=”https://static.flashback.org/img/favicon.ico” type=”image/x-icon” />

<link rel=”apple-touch-icon” href=”https://static.flashback.org/img/mobile-icon.png” />

<a class=”post-user-avatar” href=”/u665879″><img src=”https://static.flashback.org/img/avatar/162/665879.jpg” alt=”Svenne-i-Banans avatar” /></a>

<img src=”https://static.flashback.org/img/buttons-new/lastpage.gif” target=”_blank”>

<a href=”newreply.php?do=newreply&amp;p=50000002″ class=”fr icon-post-quote” rel=”nofollow”></a>

<a href=”/u665879″>Visa allm&auml;n profil</a></td></tr>

<a href=”/private.php?do=newpm&amp;u=665879″>

<a href=”/find_posts_by_user.php?userid=665879″ rel=”nofollow”>

<a href=”/find_posts_by_user.php?userid=665879&amp;threadid=2427910″ rel=”nofollow”>

Ovanstående är alla länkar tillbaka till Flashbacks olika delar som behövs för att bygga upp en enda post. Detta gör att Flashback suger mycket kraft för varje öppnad post. Detta kan utnyttjas för att överbelasta systemet, mer om det i en annan artikel. Alla rader med länkar här ovan måste alltså tas bort då våra poster annars skulle knalla in på Flashback varje gång vi öppnar en sådan. Vår postskaparalgoritm måste alltså vara skapad så att den tar bort ovanstående.

Vidare finns det en hel del skriptanrop i varenda en av posterna:

<script type=”text/javascript” src=”https://static.flashback.org/js/vbulletins.min.js?v=23322323″></script>

<a href=”#” onclick=”self.close()”>

<script type=”text/javascript”> vbmenu_register(”postmenu_50000002”, true); </script>

<script type=”text/javascript”>
<!–
// Main vBulletin Javascript Initialization
vBulletin_init();
// Initialize ‘Active’ Table Cells
//activecells_init();
//–> </script>

 

<script type=”text/javascript” src=”https://static.flashback.org/js/jquerys.min.js?v=23322323″></script>

<script type=”text/javascript” src=”https://static.flashback.org/js/jquery.ticker.js?v=23322323″></script>

<script type=”text/javascript” src=”https://static.flashback.org/js/jquery.main.js?v=23322323″></script>

<script type=”text/javascript” src=”https://www.flashback.org/ads/77?t=1419350339″></script>

Ovanstående måste också tas bort med algoritmen för att inte posten skall hitta på några konstigheter eller/och koppla upp sig mot Flashback.

Det är inte slut än, alla ”klasser” (class) måste nämligen också tas bort ur våra poster då vi inte använder några klasser i vår version:

<table class=”tborder” style=”width:100%;border-bottom-width:0px”>

<td class=”tcat”>

<div class=”fr”>

class=”alignc p4 post”

class=”thead post-date”

<div class=”fl icon-post-old”></div>

<span class=”fr”>

<div class=”clear”></div>

<td class=”alt2 post-left”>

<div class=”post-user”>

class=”bigusername”

<table class=”post-user-title”>

<div class=”icon-user-online” title=”Online”></div>

<a class=”post-user-avatar”

<div class=”post-user-info smallfont”

<td class=”alt1 post-right”

<div class=”post_message”

<div class=”post-quote-holder”>

<div class=”smallfont post-quote-title”

<table class=”p2-4″

<td class=”alt2 post-quote”>

<div class=”post-quote-holder”>

<div class=”smallfont post-quote-title”

<table class=”p2-4″ style=”width:100%”>

<td class=”alt2 post-quote”>

<td class=”alt2 post-left-bottom”>

<td class=”alt1 post-icons”>

<div class=”fl”>

<div class=”clear”></div>

<div class=”vbmenu_popup” id=”postmenu_50000002_menu” style=”display:none”>

<table class=”p4″ cellspacing=”0″>

<td class=”thead”>

<td class=”vbmenu_option”>

<td class=”vbmenu_option”>

<td class=”vbmenu_option”>

<td class=”vbmenu_option”>

<div class=”overlay” id=”overlay”>

<div class=”contentWrap”></div>

Postningarna innehåller också ”metataggar” som inte heller skall vara med i våra omgjorda postningar:

<meta name=”keywords” content=”flashback, forum” />
<meta name=”description” content=”Flashback Forum” />

Subkod skall också bort:

<!–[if lte IE 6]>
<style type=”text/css”>
img, div, input { behavior: url(”/css/iepngfix.htc”) }
</style>
<![endif]–>
<!–[if lte IE 7]>
<style type=”text/css”>
#top-menu ul.top-menu-sub li {display:inline !important;}
#top-menu {position:static !important}
#site{padding-top:0px !important}
</style>
<![endif]–>

<!– post #50000002 –>

<!– post 50000002 popup menu –>

<!– / post 50000002 popup menu –>

<!– / post #50000002 –>

Som ni förstår innehåller varenda en av alla 56 miljoner posterna väldigt mycket kod där var och en av koden drar ner prestandan hos Flashback. Vill man jävlas går det också att öppna alla poster i hög takt med ett datorprogram, men det är en annan historia…

Man kan se att koden Flashback valt att använda (vBulletin) är från 90-talet med en del nyare kod inblandad. Vi gissar att det är Flashbacks egna programmerare som lagt till den nyare koden. vBulletin-koden är alltså nästlad med nyare kod där mycket gammalt fått ligga kvar. Detta skapar ett mycket sårbart system med flera säkerhetsproblem som följd. Flashback skulle helt enkelt migrera in en nyare upplaga av vBulletin eller gå över till en forumkod som ständigt uppdateras och enkelt byts ut utan att störa forumet. Men det är inte våra problem, vi är till och med glada för att det är som det är.

Postbilder

Postningarna på Flashback innehåller en hel del bilder även om det inte syns. Bilderna kräver också prestanda vilket tynger ner Flashback en hel del. Om varje läsare öppnar 100kb bilder kommer alltså det ständigt att vara öppet mellan 2 och 6 Tb av bara bilder som ständigt far fram till läsarnas datorer. Du kan själv se alla bilder utan att gå via en postning:

  • De flesta Flashbacks forumbilder ligger här:
    https://static.flashback.org/img/misc/fb_new/sprite-forum.gif
    Komplettering av ovanstående:
    https://static.flashback.org/img/misc/fb_new/sprite-icon-share.gif
  • Flashbacls ”favicon”, dvs den ikon som webbläsaren visar uppe till höger i webbläsaren.
    https://static.flashback.org/img/favicon.ico
  • Mobilikonen:
    https://static.flashback.org/img/mobile-icon.png
  • Avatarerna ligger här:
    https://static.flashback.org/img/avatar
    Ett exempel (vem tror du har avatar nr 1?):
    https://static.flashback.org/img/avatar/0/1.jpg
  • En högerpil:
    https://static.flashback.org/img/buttons-new/lastpage.gif
  • Vänsterpil:
    https://static.flashback.org/img/buttons-new/prevpage.gif
  • Gradient:
    https://static.flashback.org/img/gradients/gradient_thead3.gif
  • Röd linje:
    https://static.flashback.org/img/misc/containerback.gif
  • Annonsstreck:
    https://static.flashback.org/img/bg_admarking.gif
  • Flashbackloggan:
    https://static.flashback.org/images/logo-top.jpg
  • Röd stjärna:
    https://static.flashback.org/img/misc/navbits_start_start.gif
  • Grå stjärna:
    https://static.flashback.org/images/round_star_small.png
  • Stäng (gammal?):
    https://static.flashback.org/img/misc/fb_new/icons/close.png

Postfiler

  • Lista över alla konton:
    https://www.flashback.org/memberlist.php
  • Här är en xml-fil:
    https://www.flashback.org/opensearch.xml
  • Flashbacks CSS-fil (välj ”Spara” om du får frågan):
    https://static.flashback.org/css/default_new.css
  • En fil som skall fixa png-fil övergång för InternetExplorer (välj ”Spara” om du får frågan):
    https://static.flashback.org/css/iepngfix.htc
  • Ladda ner några skriptfiler (välj ”Spara” om du får frågan):
    https://static.flashback.org/js/vbulletins.min.js
    https://static.flashback.org/js/jquerys.min.js
    https://static.flashback.org/js/jquery.ticker.js
    https://static.flashback.org/js/jquery.main.js
    https://www.flashback.org/ads/302
  • En Feed (välj webbläsarens ”Visa källa” för att se):
    https://www.flashback.org/external.php
  • Om du väljer ett ogiltigt ämne:
    https://www.flashback.org/showpost.php
  • Om du söker användare utan att ange användare:
    https://www.flashback.org/find_posts_by_user.php
  • Vill du få ett snällt meddelande att du lämnar Flashback?:
    https://www.flashback.org/leave.php
  • Försök att komma åt administrativa delar:
    https://www.flashback.org/report.php
  • Gå direkt till din inkorg (måste vara inloggad på Flashback):
    https://www.flashback.org/private.php
  • Gå direkt till din panel:
    https://www.flashback.org/usercp.php
  • Admins senaste 1000 postningar:
    https://www.flashback.org/find_posts_by_user.php/?userid=1
  • Admins allmänna profil (byt ut 1:an till annan siffra för annan profil):
    https://www.flashback.org/u1

Postningar utan datum

Den första dagen det postats noteras datum ”Idag” och nästa dag ändras det till ”Igår”. På tredje dagen läggs datumet in och det är det vi vill ha. Därför är datorprogrammet så konstruerat att den kan köra nedladdning sekventiellt vid två olika tidpunkter samtidigt så här:

  1. Föst laddas de senaste posterna ner och formateras enligt nästa stycke
  2. Därefter laddas det ner 75.000 poster efter föregående som byter ut de föregående med datummärkning.
  3. De poster som inte fått något datum är borttagna poster. På så sätt får vi också ner poster som moderatorer raderat.

Hur går nedladdningen till

Efter lite experimenterande har vi valt följande struktur:

  1. En post (sp) öppnas från Flashback
  2. Posten läses in i en sträng
  3. Strängen gås igenom i en loop och strippas på allt vi skrivit om här ovan
  4. Nästa loop lägger in våra egna bildlänkar och css-kod
  5. Användarnamnets begynnelsebokstav utgör mappnamnet posten skall ligga i. Den mappen letas upp
  6. Användarnamnet utgör den slutliga mappen som skapas, om den inte finns redan, och som posten sparas i
  7. Avatarerna sparas i samma mapp som punkt 6 samt i en egen avatarmapp
  8. 75.000 postningar efter punkt 6 (minst 3 dygn efter) sparas samma post ner igen
  9. 75.000 postningar efter punkt 7 sparas avataren återigen ner

Programmet kan köra med enkel nedladdning om alla poster skall laddas ner i första skedet. Alltså punkt 8 och 9 här ovan körs inte då. Med den inställningen tog det 3000 timmar att ladda ner och formatera 54 miljoner poster. Dvs programmet stod dygnet runt och laddade ner och formaterade 5 poster i sekunden i 4 månader och två veckor. Alla 54 miljoner postningar tar upp 270 Gb på hårddisken i omkring en halv miljon mappar. Avatarmappen innehåller 220.000 avatarer. Det bästa av allt är att mappen ”borttaget” innehåller alla postningar som moderatorerna tagit bort. Dock kan vi bara få ner de borttagna posterna som togs bort sedan vi nådde fram till 54 miljoner poster. Därefter laddas varje post ner och formateras i samma ögonblick som det postas. Jag vill påstå att posten ligger på vår hårddisk formaterad och klar 0,2 sekunder efter att den postats på Flashback. Om någon moderator tar bort posten har vi den kvar i tryggt förvar.

Hur ser formateringen ut

Admins allra första postning som ”admin” set ut så här i Flashbackformat:

674

Samma postning nedladdat och formaterat till en femtedels filstorlek av originalet ser ut så här:

674ny

För att kunna formatera en html-fil med programvara utan att förstöra innehållet måste ”pekare” användas i hög utsträckning. Men med pekare bli koden väldigt svår att läsa. Jag använder då istället ”indexerade variabler”. De gör samma sak som pekare men ställs upp på ett annat sätt som är betydligt enklare att läsa för ett mänskligt öga. Det är helt nödvändigt att göra så då koden är någorlunda omfattande med 5000 rader kod. Jag har inte för avsikt att visa koden men jag gör ett litet undantag. Betänk att koden är i ”C” och att jag använder mitt eget kodbibliotek ”Cover”.

Så är ser en liten del av meddelandeslingan ut:

1

 

Innan något laddas ner initieras nedladdningen. Så här ser en liten snutt av det ut:

2

 

Nedladdningen av poster sker i en nästlad nedladdningsslinga. Så här ser en liten del av den ut:

3

 

Varje post som laddas in i programmet modifieras till att passa vårt ändamål och går därför igenom en transformeringsfunktion. Det är hjärtat av programmet och det är det som tagit längst tid att utveckla. Så har ser en mycket liten del av den funktionen ut:

Tar bort delar:

4

 

Lägger till våra delar:

5

 

Jag avslutar kodvisningen med hur vi sparar borttagna poster:

6

 

Programmet, FBNickLoader, som utvecklas hela tiden ser just nu ut så här när det kör:

FBNL

 

I del 2 skall jag visa resultatet av nedladdningarna och hur vi bläddrar bland postningarna. Flashback har backupper för sitt forum, lite kul är det att vi har en av backupperna.

x

REDAKTÖREN

Uppdaterad: 2016-02-13 — 22:41

Kommentera

E-postadressen publiceras inte.

REGLER:
1. Svensk lag gäller
2. Netikett gäller (sök på Google)
3. Oförskämdheter, förtal och personuppgifter tas bort
4. Mejladress och webbadress behövs inte skrivas in

Ut sementem feceris, ita metes

FN:s mänskliga rättigheter Artikel 12
Ingen får utsättas för godtyckligt ingripande i fråga om privatliv, familj, hem eller korrespondens och inte heller för angrepp på sin heder eller sitt anseende. Var och en har rätt till lagens skydd mot sådana ingripanden och angrepp.

………………………..

De som fått sina liv förstörda eller tagit sina liv på grund av uthängningar och förtal kommer att bli Jan Axelssons historiska minne av sajten Flashback.
Upphovrätten © till allt material i "I folkets intresse" ägs av "I folkets intresse". Upphovrätten © till bilder ägs av upphovsmakaren till bilden. Inlägg från Flashback (bilder eller text) är copyleft.