openseodata [quick] API Doku – was liefert die API an Daten?

Wie man erfährt, wird sich die API wohl in naher Zukunft ändern. Dennoch möchte ich schnell ein paar Infos posten um mehr Licht in die jetzige API zu bringen.

Hier liste ich einmal auf, was die einzelnen Funktionen für Daten im Array zurückliefern.
Was man damit anfangen kann überlasse ich jedem selbst.

 


  • bei der Funktion Google-Rankings ($api->getRankings()):
Array
(
    [0] => Array
        (
            [id] => 11840222
            [keywordID] => 2748964
            [urlID] => 138118887
            [domainID] => 27073
            [position] => 1
            [url] => Array
                (
                    [id] => 138118887
                    [domainID] => 27073
                    [url] => de.wikipedia.org/wiki/Regenschirm
                    [anzahlRankendeKeywords] => 24
                    [wordpressBlog] =>
                )

            [domain] => Array
                (
                    [id] => 27073
                    [domain] => de.wikipedia.org
                    [linkPop] => 2795
                    [pagerank] => 8
                    [expired] =>
                    [subdomain] => 1
                    [anzahlRankendeKeywords] => 99171
                    [sichtbarkeit] => 0
                    [datumDenicPruefung] => Array
                        (
                            [@class] => sql-timestamp
                            [$] => 2010-11-15 22:19:01.0
                        )

                    [datumIpPruefung] => Array
                        (
                            [@class] => sql-timestamp
                            [$] => 2010-09-03 22:02:37.0
                        )

                    [ip] => 91.198.174.232
                    [domainID] => 67606
                    [prGespiegeltFormatiert] => Nein
                    [datumDenicPruefungFormatiert] => 15.11.2010 22:19:01
                    [anzahlIpPruefungen] => 0
                    [anzahlDenicPruefungen] => 0
                    [wordpressBlog] =>
                    [datumPagerankErmittlung] => Array
                        (
                            [@class] => sql-timestamp
                            [$] => 2010-09-17 20:20:18.0
                        )

                    [datumWordpressPosting] => Array
                        (
                            [@class] => sql-timestamp
                            [$] => 2010-11-15 21:12:28.0
                        )

                    [datumWordpressPingback] => Array
                        (
                            [@class] => sql-timestamp
                            [$] => 2010-11-15 21:12:28.0
                        )

                    [followBlog] =>
                )

            [datum] => Array
                (
                    [@class] => sql-timestamp
                    [$] => 2010-12-16 19:49:37.0
                )

            [maps] =>
            [seite] => 1
        )
)
  • Bei der Funktion Backlinkquellen finden ($api->getBacklinkQuellen()):
Array
(
    [0] => Array
        (
            [position] => 3
            [url] => Array
                (
                    [url] => board.pennergame.de/showthread.php?t=40458
                    [anzahlRankendeKeywords] => 0
                    [typ] => PHPbb Forum
                    [wordpressBlog] =>
                )

            [datum] => 2011-06-23 13:53:59.528 CEST
            [keyword] => Array
                (
                    [keyword] => regenschirm b
                    [googleSuggestAbfrage] =>
                    [produkt] =>
                    [datumGefunden] => 2011-06-23 13:53:59.528 CEST
                    [projektKeyword] =>
                )

            [maps] =>
        )
)
  • Bei der Funktion Keyword-Recherche ($api->getKeywords()):
Array
(
    [0] => Array
        (
            [id] => 2748964
            [keyword] => regenschirm
            [googleTreffer] => 587000
            [lokalesSuchvolumen] => 5400
            [globalesSuchvolumen] => 6600
            [cpc] => 0.64
            [mitbewerberdichte] => 42
            [staerksterMonat] => 5
            [datumRankingErmittlung] => Array
                (
                    [@class] => sql-timestamp
                    [$] => 2010-12-16 19:54:08.0
                )

            [datumAdwordsdatenErmittlung] => Array
                (
                    [@class] => sql-timestamp
                    [$] => 2010-12-17 05:19:19.0
                )

            [datumAdwordsdatenErmittlungVersuch] => Array
                (
                    [@class] => sql-timestamp
                    [$] => 2010-12-17 05:18:38.0
                )

            [anzahlLeerzeichen] => 0
            [googleSuggestAbfrage] => 1
            [produkt] => 1
            [datumGefunden] => Array
                (
                    [@class] => sql-timestamp
                    [$] => 2010-09-24 23:49:42.0
                )

            [projektKeyword] =>
        )
)

Ich bleibe dabei. Die API liefert wirklich gute und nützliche Daten. Einziges Manko bleibt, dass es noch zu wenig Daten für meine SEO-Gebiete sind… aber scheinbar sind das nur Nieschen :-).

Weiter so Fabian und hoffentlich nimmst du es mir nicht übel, dass ich das hier detailliert aufliste.

Erste Erfahrung mit openseodata

Schon im letzten Jahr viel mein Augenmerk auf „openseodata“, nur leider hatte ich es zeitlich nicht geschafft mir die API einmal genauer anzuschauen. Nachdem der Entwickler (Fabian Rossbacher) mich mal über XING kontaktierte (Taktisch natürlich sehr klug, indem er mir erst einmal Honig um den Mund schmierte :-)) kam mir die API wieder in Erinnerung und ich überlegte, was man damit anfangen könnte.

Nach ein paar Tagen herumspielen mit der API habe ich auch ein paar gute Ideen für SEO Tools entwickelt, die die API anzapfen. Das ein oder andere Tool hat schon einen guten Status und dürfte vielen (kleinen) SEO’s helfen ihr tägliches Leben auch ohne teure Softwareaccounts gut über die Bühne zu bekommen. Ein komplettes ersetzten der großen Tools ist im Moment aber auf Grund von „zu wenig Daten über die API“ nicht wirklich ratsam oder möglich.

Weiteres zu den Tools möchte ich jetzt nicht weiter verraten, da ich die neuen Tools eigentlich erst nach dem Relaunch (der schon ewig überfällig ist 🙁 ) von www.seo-ranking-tools.de anpreisen möchte.

Ist jemand aber besonders interessiert an den Tools, so kann er mich gerne über Tobias Glomb kontaktieren… dann reden wir mal über einen Gastzugang :-).

Also, zurück zur API:

Die API von (openseodata) ist recht einfach und übersichtlich aufgebaut. Es gibt zwar noch nicht sonderlich viele Funktionen aber die Daten die zurückgeliefert werden sind brauchbar und logisch aufgeteilt. Zurück kommt meist ein Array, welches man gut mit „print_r()“ analysieren kann, denn eine API Dokumentation fehlt leider(… hint to Fabian 🙂 ).

Leider ist die Datenbank noch nicht mit allzu vielen Keywords und URL’s gefüllt, so dass viele Anfragen ohne Ergebnis zurückkommen. Der Fabian will dies mit einem „Community Sammler“ zeitnahe nachbesser, so dass schnell Daten nachfließen.

Ich persönlich hoffe, dass das Projekt nicht einschläft und der „Sammler“ jetzt schnell folgt. Ich werde sicherlich noch das ein oder andere Tool um die Datenbank herum bauen.

Schaut euch die API doch einmal an und wer ne Idee für ein Tool hat, kann mich auch kontaktieren :-).

 

Euer Tw!tch

Magento Extension via SSH installieren

Es gibt Serverkonfigurationen, die es irgendwie nicht zulassen, dass sich Magento Connect öffnen lässt. Irgendein „include_once“ PHP Error, den ich noch nicht ausfindig machen konnte, trotz eigener PHP include_path – Erweiterungen.

Nunja, aber da schreib ich mal wann anders drüber. Hier und heute will ich in ein paar kurzen Schritten erklären, wie man diverse Magento Erweiterungen trotz nicht funktionierendem Magento Connect im Adminbereich via SSH installiert.

  1. Loggt euch via SSH auf euren Server ein.
  2. Wechselt in das Magento Root-Verzeichnis.
  3. Gebt euch für die Installation und Einrichtung unbedingt root-Rechte am Server. Zum Beispiel kurz mit dem Befehl „su“ :-).
  4. Tippt in die Konsole folgenden Befehl ein: „./pear mage-setup“
    Wenn alles glatt läuft solltet ihr folgende Ausgabe sehen:
    Running initial setup…
    config-set succeeded

    config-set succeeded
    Adding Channel „connect.magentocommerce.com/core“ succeeded
    Discovery of channel „connect.magentocommerce.com/core“ succeeded
    Adding Channel „connect.magentocommerce.com/community“ succeeded
    Discovery of channel „connect.magentocommerce.com/community“ succeeded
  5. Anschließend könnt ihr jedes beliebige Modul installieren. Zum Beispiel für einen deutschen Online-Shop das wichtigste freie Plugin von symmetrics. Nämlich „Market Ready Germany
  6. Tippt folgendes in die Konsole ein: „./pear install -f magento-community/market_ready_germany“
  7. Wenn die Installation erfolgreich war, gibt es die Ausgabe in der Konsole auch an.
  8. Wechselt ihr dann in den Adminbereich des Magento Shops sind die Erweiterungen vorhanden.

… so, das wars auch schon.

Enjoy FloodBot based on OverKill… not in my house!

Vor kurzem war die Auslastung eines Web-Servers extrem hoch, so auch heute den ganzen Tag. Also machte ich mich auf die Suche nach der Ursache und stolperte über eine lustige Sicherheitslücke im „phpMyAdmin“ worüber sich ein FloodBot einschlich. Er nutze eine Datei worüber er schön den Bot mit passender Berechtigung herunterlud und ausführte. Ich war doch ein wenig verwundert und probierte das gleich an einem Testsystem aus.

Jo! Dickes Ding…

Schwupps, war der Bot drauf und startete. Das sah dann per „ps aux“ so aus:

bot1Den genauen Befehl gebe ich hier mal nicht Preis. Wer weiß wer was damit bei anderen anrichten möchte.

 

Wow!… immer noch erstaunt :-).

Die Datei udp.pl mithilfe der Lücke und „sh -c perl“ über die config.inc.php von phpMyAdmin einfach gestartet.

Irre!

Die Lücke ist so riesig, dass man über ein paar witzige Handgriffe den Server darüber so gut wie steuern kann (Vorausgesetzt man hat bei der Rechtevergabe geschlampt!). Mit Aufruf: 
http://…/php_my_admin/config/config.inc.php?p=phpinfo(); kann man sich schön die Komplettinfo zum Server holen oder mit http://…/php_my_admin/config/config.inc.php?c=ps%20aux den Inhalt des tmp-Ordners. Dieser war in diesem Fall angefüllt mit dem BOT.

bot2

Mehr poste ich nicht, animiert nur zu wilden Gedanken :-). Habs aber gleich auf befreundeten Systemen mal ausgetestet und siehe da, viele haben die Lücke nicht geschlossen. Denjenigen habe ich mal schnell ne Mail geschrieben.

 

Schnell mal mit „last -i“ nach komischen Logins gefahndet, dann noch known_hosts und ssh-key’s überprüft und die /etc/passwd nach lustigen neuen Usern mit UIDs „0“ durchsucht. War aber nix ungewöhnliches. Glück gehabt. Schnell phpMyAdmin aktualisiert, die tmp-Verzeichnisse geleert, und restliche Komponenten wie php, apache usw. aktualisiert und Server neu gestartet (Windows angewohnheit :-)).
Nun noch mit „apt-get rkhunter install“ nen RootKitHunter installiert und das System durchgecheckt und mit „netstat -nap“ und „netstat -tulpe“ die Ports gecheckt … Und auch alles in Ordnung.
Anschließend den eaccelerator neu kompiliert und schwupps… Livesystem nach 3 Stunden wieder clean. Downtime… summiert ca. 5 min… klasse Job! Blog schreiben 30 min :-). Schöner Sonntagabend.

Anschließend Serverseitig noch weitere Möglichkeiten mit ein paar Tricks unterbunden. Alles soll man nicht verraten :-).

Was ich daraus gelernt habe:

  1. Öfters mal ins Error und Accesslog vom Apachen schauen,
  2. apt-get upgrade/update/install sollte ein Freund werden,
  3. … meine Linux-Kenntnisse sind noch gut 🙂

Wollen wir mal schauen, ob das alles war. Der Server bleibt die Tage unter Beobachtung.