Hi,
(Achtung: langer Post mit mathematischem Problem)
vielleicht gehört diese Sache eher in Projekthilfe, aber ich fang einfach mal an.
Ich schreibe gerade ein Google Tracking Tool in dem man verfolgen kann wo die eigene Seite bei Google gelistet ist und wieviele Leute von Google auf die eigenen Seite kommen. Dazu gehört natürlich auch der Google-PageRank. Ich dachte natürlich, meldest dich als developer an - da gibts sicherlich ne API. Leider nein, an die Google-Developer-API die das ganze kann kommt man nicht mehr ran. Es werden keine Developer-Keys mehr für diese Schnittstelle ausgegeben.
Ich hab mich also auf die Suche gemacht um eine Lösung zu finden. Da ich das ganze "selbst" implementieren muß um meine Meßdaten auch zu speichern, fällt für mich irgend ein Webservice aus.
Ich hab mir dann mal das FireFox-PageRank-Plugin angeschaut. Überraschung
Das Plugin tut so als sei es die Google-Toolbar. Ich also noch ein bischen weiter gegoogelt und sogar schon was fertiges in PHP gefunden. Daraufhin hab ich das ganze angepasst und mal einen kleinen Test inszeniert.
Es wird bei der Anfrage an toolbar.google.com ein (Sicherheits-)Hash generiert und zwar durch eine (für mich) sehr komplizierte berechnung. Mit WireShark hab ich mir mal einen Beispielwert durch die Google-Toolbar generieren lassen und dann mit der selben Domain das Script gefüttert. Leider kam bei dem gefundenen PHP-Script ein anderer Wert raus, als ihn die Google-Toolbar erzeugt. Das JavaScript des Firefox-Plugins errechnet zB den richtigen Wert.
Ich hab mich also hingesetzt und mich ein bischen mehr in das Plugin gewühlt und, oh wunder, das PHP-Script hat sich wohl vom Firefox-Plugin inspirieren lassen![Wink](https://www.php-resource.de/forum/core/images/smilies/wink.gif)
Die Funktionen die die Berechnung ausführen sind "identisch" - sprich sie machen das selbe unter PHP wie auch unter JavaScript. Nur leider kommt in PHP ein anderes Ergebnis raus und ich verstehe nicht warum. Ich häng das ganze mal mit Beispielwerten an den Post dran...
Aktuell habe ich das ganze funktionierend, allerdings über Java -> Rhino -> JavaScript -> PHP. Rhino ist ein JavascriptInterpreter der in Java geschrieben wurde. D.h. ich nehme momentan mein JavaScript, führe es mit Rhino über Java per PHP aus um an das Ergebnis ds Hashes zu kommen. Ich will halt versuchen das ganze nur in PHP laufen zu lassen, bin aber nicht so das Mathegenie um genau zu verstehen was passiert und vor allem warum es in PHP nicht funktioniert.
Über das moralische Dilemma bin ich mir im klaren - aber es gibt leider keine andere Möglichkeit an den PageRank ran zu kommen. Falls ihr doch eine kennt, sagt mir bitte bescheid...
Wäre schön wenn jemand ein bischen Licht ins Dunkel bringen könnte. Wenn ich mit meiner sehr vagen Vorstellung von höherer Mathematik richtig liege, liegt es wahrscheinlich an den Bitverschiebungen in der mix-Funktion die wohl irgendwie über den 32Bit Integer hinaus kommen. Hier macht JavaScript wohl Unterschiede in der Behandlung...
Ich danke euch schonmal
(Achtung: langer Post mit mathematischem Problem)
vielleicht gehört diese Sache eher in Projekthilfe, aber ich fang einfach mal an.
Ich schreibe gerade ein Google Tracking Tool in dem man verfolgen kann wo die eigene Seite bei Google gelistet ist und wieviele Leute von Google auf die eigenen Seite kommen. Dazu gehört natürlich auch der Google-PageRank. Ich dachte natürlich, meldest dich als developer an - da gibts sicherlich ne API. Leider nein, an die Google-Developer-API die das ganze kann kommt man nicht mehr ran. Es werden keine Developer-Keys mehr für diese Schnittstelle ausgegeben.
Ich hab mich also auf die Suche gemacht um eine Lösung zu finden. Da ich das ganze "selbst" implementieren muß um meine Meßdaten auch zu speichern, fällt für mich irgend ein Webservice aus.
Ich hab mir dann mal das FireFox-PageRank-Plugin angeschaut. Überraschung
![Wink](https://www.php-resource.de/forum/core/images/smilies/wink.gif)
PHP-Code:
$url = 'www.example.de';
//6168324459 ist referenzwert, rausgefunden mit wireshark für die angegeben $url
$ch = 61154359128;
//selbst zusammengesetze $data_url
$data_url = 'http://toolbarqueries.google.com/search?client='.
'navclient-auto&ch='.$ch.'&features=Rank&q='.
urlencode('info:'.$url).'&num=100&filter=0';'
$context = array(
'http' => array(
'header' => "User-Agent: Mozilla/4.0 ".
"(compatible; GoogleToolbar 2.0.114-big;".
" Windows XP 5.1)\r\n"
)
);
$xcontext = stream_context_create($context);
echo $data_url."\n\n";
echo file_get_contents($data_url, false, $xcontext);
Ich hab mich also hingesetzt und mich ein bischen mehr in das Plugin gewühlt und, oh wunder, das PHP-Script hat sich wohl vom Firefox-Plugin inspirieren lassen
![Wink](https://www.php-resource.de/forum/core/images/smilies/wink.gif)
Die Funktionen die die Berechnung ausführen sind "identisch" - sprich sie machen das selbe unter PHP wie auch unter JavaScript. Nur leider kommt in PHP ein anderes Ergebnis raus und ich verstehe nicht warum. Ich häng das ganze mal mit Beispielwerten an den Post dran...
Aktuell habe ich das ganze funktionierend, allerdings über Java -> Rhino -> JavaScript -> PHP. Rhino ist ein JavascriptInterpreter der in Java geschrieben wurde. D.h. ich nehme momentan mein JavaScript, führe es mit Rhino über Java per PHP aus um an das Ergebnis ds Hashes zu kommen. Ich will halt versuchen das ganze nur in PHP laufen zu lassen, bin aber nicht so das Mathegenie um genau zu verstehen was passiert und vor allem warum es in PHP nicht funktioniert.
Über das moralische Dilemma bin ich mir im klaren - aber es gibt leider keine andere Möglichkeit an den PageRank ran zu kommen. Falls ihr doch eine kennt, sagt mir bitte bescheid...
Wäre schön wenn jemand ein bischen Licht ins Dunkel bringen könnte. Wenn ich mit meiner sehr vagen Vorstellung von höherer Mathematik richtig liege, liegt es wahrscheinlich an den Bitverschiebungen in der mix-Funktion die wohl irgendwie über den 32Bit Integer hinaus kommen. Hier macht JavaScript wohl Unterschiede in der Behandlung...
Ich danke euch schonmal
![Smilie](https://www.php-resource.de/forum/core/images/smilies/smile.gif)
Kommentar