DrPagel-FavIcon « »

Verfasst am 23.07.2009 18:41:35 Uhr
Ob im Freenet-Weblog auch Backlinks funktionieren?

Endlich habe ich an einem praktischen Beispiel in einem anderen meiner Tagebücher verstanden, was backlinks sind, die google angeblich in seine Bewertung mit einbezieht. Vermutlich funktionieren sie unter freenet nicht, weil man mit JavaScript arbeiten muss. Aber vielleicht teste ich es auf meiner Tagebucharchiv-Seite.

Backlinks sind keine Links im herkömmlichen Sinne, sondern die Links der Besucher. Das heisst, falls der Webmaster von http://drpagel.log.ag/2009_07_2009_07_23_weblog.html#Beitrag2 einen Link» auf http://tb-archiv.drpagel.de/TB_2009-07-23Beitrag2.html angelegt hat, so ist dies nur ein Link. Auch ein Gegenlink» http://drpagel.log.ag/2009_07_2009_07_23_weblog.html#Beitrag2 des Webmasters von http://tb-archiv.drpagel.de/TB_2009-07-23Beitrag2.html ist nur ein einfacher Link und noch kein Backlink.

Ich glaube: erst wenn wirklich jemand diesen Link angeklickt hat und auf meiner zugehörigen Tagebucharchivseite gelandet ist, so wird er über ein JavaScript "Referrer" erfasst und dort als Backlink gelistet und google findet, wie ist noch unklar, diese Backlinks. Vielleicht wird durch das JavaScript ein von google anerkannter Backlink-Counter gefüttert, der diesen Vorgang in einer von google gelesenen Liste festhält.

P.S.: natürlich gibt es 10 Fehlermeldungen wegen invalidem HTML-Code auf der Original-Referenzseite http://drpagel.blogger.de/stories/1079765/ , die mich zu diesem Backlink-Test inspiriert haben. (dp)(0,25h)

nachfolgend:     Javascript-TESTBEREICH     "Backlinks"    

Wenn man etwas testen möchte, muss man seinen Test verstehen. Oftmals versteht man aber erst durch learning-by-doing. So geht es mir jetzt. Javascript kennt die Variable document.referrer. Falls gerade javascript zugelassen ist, müsste man hier seine Referenzseite lesen:



Falls man diese Seite über die Adresszeile des Browsers geöffnet hat, sollte hier anstatt "o.k." das Wort "missing" stehen. Das nachfolgende JavaSkript wird vermutlich (noch unklar!) vom Server mit Hilfe von PHP angelegt, denn woher sollte sonst die Liste von verschiedenen vorher besuchten URL's kommen? Oder vom Cookie? Für die Verlaufskontrolle eines Javascriptes bestens geeignet kann von mir das Entwicklertool des I.E.8. wärmstens empfohlen werden (siehe: tb-archiv.drpagel.de/TB_2009-07-18Beitrag1.html). Der in der js-Datei verwendete Bezeichner "replace" ist fest durch javascript vorgegeben (siehe: Selfhtml).

Im nachfolgenden Beispiel seien z.B. zwei URL's (URL1 = http://www.url1.de, URL2 = http://www.url2.de) referriert (referenziert) worden, und zwar URL1 5 mal und URL2 nur 1mal, so stünde gelistet:

var referrers = []; // das Feld "referrers initialisiert (zurücksetzt, geleert, neu angelegt)
referrers.push(new Antville.Referrer(URL1, Text(URL1), 5)
referrers.push(new Antville.Referrer(URL2, Text(URL2), 1)
Mit Hilfe des Javascript-Bezeichners "push" wird an das zunächst leere Array "referrers" das in Klammern gesetzte Element angehangen; in meinem Beispiel sollten also zwei Objekte erzeugt worden sein: "referrers[0]" und "referrers[1]".

Mein Entwicklungstool auf dem I.E.8 gibt die Feldelement-Bezeichnungen von referrers mit "url", "text", "count" an. Doch wo ist dies deklariert? Den neugierigen Blicken entzogen ist dies in der javascript-Datei "main.js" angegeben. Ebenfalls in "main.js" sind die js-Funktionen "Antville.Referrer", "Antville.Query", "Antville.Filter" und die namenlosen Hilfsfunktionen "compose", "key" und "test" deklariert (open source von www.antville.org/).

Text(URL) bedeutet, so wie dort angegeben, wird die URL publiziert. Dies erlaubt z.B. Kurzformen: falls URL = "http://bandwurm.url1.de/dies-ist-eine-lange-zeichenkette" könnte Text(URL) sein: "http://bandwurm.url1.de/..."

var query = new ... ; // initialisiert die Variable "query"
var spamFilter = new ... ; // initialisiert die Variable "spamFilter", die hier aus Feldelementen zusammengesetzt ist
var searchFilter = new ... ; // initialisert die Variable "searchFilter"

var searchEngineFilters = [ new ..., new ..., new ..., new ..., ] // initialisiert das Feld "searchEngineFilters". Die jeweils ersten Feldelemente von spamFilter sind folgenden Suchbegriffe "def" reserviert: "http:\/\/.*google.*\?", "http:\/\/.*search\.msn.*\?", "http:\/\/.*altavista.*\?", http:\/\/.*search\.yahoo.*\?", "http:\/\/search\.live\.com.*\?" .

Allerdings ist unklar, warum im Original (v.23.7.2009 auf meiner blogger-Tagebuchseite) die fünfte Suchmaschinenadresse "http:\/\/search\.live\.com.*\?" unter Erzeugung eines javascript-Syntaxfehlers (nach dem letzten Komma steht nichts) entfernt ist. Möglicherweise ist diese Adresse genauso veraltet wie (soeben herausgefunden!) "search.msn". Das Impressum titelt: "MSN Deutschland & Windows Live & Bing™" und so wird auch die Suchanfrage an "search.msn" direkt an "www.bing" weitergeleitet. Daher habe ich hier auf meiner Testseite auch "http:\/\/.*search\.msn.*\?" durch "http:\/\/.*bing.*\?" ersetzt.

Die zweiten Feldelemente (Bezeichnung "key") lauten "q" für die Suchmaschinen google, search.msn, altavista, search.live und "p" für search.yahoo. Der Bezeichner "key" wird beim Zusammenbau der Suchanfrage-URL benötigt, z.B.:

  • http://de.search.yahoo.com/search;_ylt=A03uv8Yr_2pKwhoA_wMyCQx.?p=tb-archiv.drpagel.de&fr=sfp&fr2=&iscqry=
  • http://www.google.de/search?hl=de&client=firefox-a&rls=org.mozilla%3Ade%3Aofficial&q=tb-archiv.drpagel.de&btnG=Suche&meta=
  • http://www.bing.com/search?q=tb-archiv.drpagel.de&FORM=MSNH2&mkt=de-de
  • http://de.altavista.com/web/results?itag=ody&q=tb-archiv.drpagel.de&kgs=1&kls=0
Klar ist, dass falls nur 4 Suchmaschinen gelistet sind, kann "searchEngineFilters[i]" auch nur 4 definierte Objekte haben: "searchEngineFilters[0]", "searchEngineFilters[1]", "searchEngineFilters[2]", "searchEngineFilters[3]". Jedes weitere Objekt wäre undefiniert. (An dieser Stelle lasse ich mal unbeantwortet, wie ich über das Ergebnis von 0 Treffern bei der Bing-Suche denke).

Anschließend wird ein in einer nachfolgenden mit "for (var" beginnenden For-Schleife benötigter Counter "cnt" initialisert und einer Variablen "prefix" ein konstanter Hilfstext zugewiesen.

Klar ist, dass zu Ende der for-Schleife, aus der man auch eine Javascript-Funktion machen könnte, eine Backlink-Liste ausgegeben wird. Doch was passiert vorher?

Zunächst war diese Schleifenart für mich neu. Man nennt sie for-in-Schleife. Sie läuft so lange, wie es verfügbare Objekteigenschaften gibt.

In der for-Schleife wird einer Hilfsvariable "ref" das erste (oder "solange der Vorrat i reicht" nachfolgende) referrers-Feldinhalt zugewiesen. Damit erbt "ref" auch alle Bezeichnungen (hier "url", "text", "count") von "referrers[i]" und es ist nun klar woher "ref.count" seine Information bezieht, nämlich von "referrers[i].count". Einer Hilfsvariable "text" wird der zugehörige Text(URL) zugewiesen.

Falls in einer wahren (erfüllten) if-Bedingung "continue" steht, wird sofort der nächste Schleifendurchgang gestartet, falls dort "break" steht, wird die Fortführung der for-Schleife sofort abgebrochen. (dp)(6h (24.7.2009))

Nun bin ich Tor noch nicht viel schlauer als zuvor!

Das javascript findet heraus, wie oft ein Wagenrücklaufzeichen "\r" in dem gesamten zu durchsuchenden Bereich von "def" vorkommt und ersetzt es ("replace") durch ein Zeilenvorschubzeichen "\n". Die Fundstellen werden intern in einem Array gespeichert. Der String in "def" wird dann an den Stellen mit Zeilenvorschubzeichen in einzelne Strings zerlegt ("split"). In meinen Beipielen keine Wagenrücklaufzeichen, weswegen auf die "this.items" die Strings des Bezeichner "def" unverändert übertragen werden, so das z.B. das erste "this.items = 'http://.*google.*?'" ist.

Anschließend wird eine test-Funktion für einen String "str" gestartet. Der logische Operator ! prüft, ob ein Ausdruck unwahr ist. Der Ausdruck if (!str) trifft zu, falls "str" gleich null, 0, ein Leerstring oder undefiniert ist. Da in diesem ganzen test-Block kein Element "str" gesetzt wird, fragt sich, wo ist "str" definiert? Es wird einmal in "Antville.encode", zum anderen in "Antville.Query" und in "Antville.decode" erzeugt bzw. manipuliert.

Der javascript-Bezeichner "instanceOf" in einer if-Abfrage prüft, ob ein Objekt eine Instanz eines Prototyp-Objektes ist (ab JavaScript-Version 1.4). In unserem Beispiel wird geprüft, ob "def" ein "Array" ist - nein: 'http://.*google.*?' ist kein Array. Na, dann ist's ja gut.

Der erste Wert der Variable "re" nach der Zuordnung durch "RegExp" ist "/http://.*google.*?/i". Der Buchstabe i gibt an, dass Groß- und Kleinschreibung nicht berücksichtigt werden soll.

Aber der step-by-step-Ablauf der unbenannten (rekursiven) Test-Funktion ist noch unverstanden. Zur Zeit sehe ich noch nicht, dass die "re"-Ausdrücke (wie beispielsweise der letztgenannte) irgendwo verwendet werden, um im Test die "referrers[i]" (hier: 0≤i≤1) zu verifizieren (z.B.: "http://www.google.de/search?q="+referrers[0]). Vermutlich bin ich jetzt bereits betriebsblind.

Nach einer kleinen Pause ist nun die test-Funktion grob verstanden. Würde man diese Testseite von einer Suchmaschinen-Fundliste aus angeklickt haben, dann würde der lange URL-String, z.B.
http://www.google.de/search?hl=de&client=firefox-a&rls=org.mozilla%3Ade%3Aofficial&q=tb-archiv.drpagel.de&btnG=Suche&meta=
für die Anzeige von "text" wie folgt gekürzt:
"Search request:" tb-archiv.drpagel.de
Die Analysewebseite "http://wieistmeineip.de" hätte diesen Verweis so formuliert:
Sie waren eben auf (google) und haben nach "tb-archiv.drpagel.de" gesucht
Eine referrer-Liste mit mehr als einem Eintrag kann damit aber noch nicht angelegt werden.

Merke: Es gibt kein Instant-Verständnis! (dp)(7,25h (25.7.2009))

Nun bin ich Tor etwas schlauer als zuvor!

Beim Öffnen der Original-Referenzseite wird nur ein Cookie von blogger.de mit
  • Name: HopSession
  • Inhalt: IP-nummer+Zusatzcode
  • Domain: .blogger.de
  • Pfad: /
  • Senden für: Jeden Verbindungstyp
  • Gültig bis: am Ende der Sitzung
... angelegt. Also hiervon entstammt die referrer-Linkliste nicht. Eine dortseitige Unterseite bringt etwas Licht ins Dunkel:
Referrers in the last 24 hours of drpagel - blogger (dp)(0,35h)

ANMERKUNG: Das script-Element darf nicht innerhalb eines table-Elemenes stehen. Erlaubt ist aber, es innerhalb eines td-Elementes zu platzieren. Daher kann das table-Starttag und -Endetag auch mit Hilfe von "document.writeln" ausgegeben werden. (validome sei Dank!)
archiviert (tbid2818.559): (dp) 23.07.2009 (+0,75h (+favicon +flagcounter +2navi +w3c_LiCh))
Haftungsausschluss
free counters
© drpagel.de Alle Rechte vorbehalten.