Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

google cache abfragen und mit php auswerten

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
AKraisser
PostRank 2
PostRank 2
Beiträge: 38
Registriert: 04.03.2009, 09:29
Wohnort: Tirol Österreich

Beitrag von AKraisser » 28.12.2010, 21:16

Wer kennt eine Möglichkeit oder kann mir einen Tipp geben wie ich mit PHP eine URL bei google prüfen kann ob diese im cache ist (cache:https://xyz.de). Super wäre es auch noch wenn ich mit php auf das Cachedatum zugreifen könnte.

Danke
SEO & Webentwicklung
https://www.kramoo.de

Anzeige von ABAKUS

von Anzeige von ABAKUS »


Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

nerd
PostRank 10
PostRank 10
Beiträge: 4023
Registriert: 15.02.2005, 04:02

Beitrag von nerd » 28.12.2010, 22:42

fopen() um die url zu lesen und "php simple dom parser" um das datum auf der seite zu finden.

(solche fragen obwohl du laut signatur webentwicklung anbietest :o )

800XE
PostRank 10
PostRank 10
Beiträge: 5223
Registriert: 02.12.2004, 03:03

Beitrag von 800XE » 28.12.2010, 23:31

Code: Alles auswählen

$buffer =
file_get_contents ( 
'http://webcache.googleusercontent.com/search?q=cache:www.kramoo.de' );

$sSTART = 'wie diese am';
$sEND  = 'angezeigt wurde';
$iSTART = strpos( $buffer, $sSTART );
$iEND  = strpos( $buffer, $sEND );

$sDATUM = substr( $buffer, $iSTART+strlen($sSTART) , $$iEND);
das dann noch zerlegen und in https://www.php.net/manual/de/function.mktime.php
oder https://www.php.net/manual/de/function.strtotime.php

Anzeige von ABAKUS

von Anzeige von ABAKUS »

Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

nerd
PostRank 10
PostRank 10
Beiträge: 4023
Registriert: 15.02.2005, 04:02

Beitrag von nerd » 29.12.2010, 02:04

das wird so nicht funktionieren, lieber Andy 8)

du erwartest das die angezeigte seite in deutsch ist wenn du versuchst die position des datums mit substring zu finden. Google verlaesst sich allerdings auf das 'Accept-Language' feld im http header wenn es bestimmt in welcher sprache das ergebniss ausgegeben werden soll; und mit einem einfachen file_get_contents() werden keine browser-ueblichen header gesetzt (was dir eventuell nach ein paar versuchen auch nur noch einen captcha request von google zurueckliefert), und nicht die gecachte seite die du hier erwartest.
Deshalb brauchst du entweder einen dom parser oder fischst das datum gleich manuell per regex raus.

800XE
PostRank 10
PostRank 10
Beiträge: 5223
Registriert: 02.12.2004, 03:03

Beitrag von 800XE » 29.12.2010, 08:58

nerd hat geschrieben:das wird so nicht funktionieren, lieber Andy 8)
Wie ich eben hingeklickt habe, um zu schauen ob was neues geschrieben wurde
da war mir schon klar das ich da nen Bug eingecodet hatte

Code: Alles auswählen

$sDATUM = substr( $buffer, $iSTART+strlen($sSTART) , $$iEND); 
der 3.Parameter ist falsch ....
Positionsangabe gemacht ..... Längenangabe erwartet

Code: Alles auswählen

$iSTART +=  strlen($sSTART);
$iEND  = $iEND - $iSTART;
$sDATUM = substr( $buffer, $iSTART, $iEND); 
nerd hat geschrieben: mit einem einfachen file_get_contents() werden keine browser-ueblichen header gesetzt
ähm, dein fopen() hat dann aber das selbe Problem
dann eben über "Socken"

Code: Alles auswählen


function httpheader( $url ,$headonly=0)
{ 
	$tok =    strtok($url,'/');
	$host=    strtok(     '/');
	$path='/'.strtok(      '');
	
	$domain['host'] =       @gethostbyname( $host );
	$domain['host'].=' @ '. @gethostbyaddr( $domain['host'] );
	
	$fp = @fsockopen ($host, 80, $error_number, $error_string, 30);
	if ($fp)
	{
		fputs ($fp, "GET $path HTTP/1.0\r\nHost: $host\r\n\r\n");
		
		$buffer=''; $block=256; $httph=0;
		while (!feof($fp) && ++$httph) 
		{
			$line=fgets($fp,$block);
			if ( !strlen( trim($line) ) ) $httph=-1;
			elseif ( $httph==1 )
			{
				$domain['tp']  =strtok($line,' ');
				$domain['stat']=strtok(       '');
			}
			else
			{
				$tok         =strtolower(strtok($line,':'));
				$domain[$tok]=           strtok(       '');
			} $domain[http].=$line;
		}
		while (!feof($fp) && !$headonly) 
		{
			$line=fgets($fp,$block);
			$domain[html].=$line;
		}
		fclose($fp);
nerd hat geschrieben:(solche fragen obwohl du laut signatur webentwicklung anbietest :o )
drüben im "18 Monate und dan AdSensZusatzRente bzw Beschäftigungsterapie" Fred

da schien es auch erst ein Ahnungsloser zu sein
und nu steht er in einem ganz Anderen Licht

mein Code ist "Like C ohne ++" .... lange sind sie her die 90ger und 80ger
( mit "Socken" hatte ich damals nur an den Füßen zu tun )
"einen dom parser" = HTMLgerüstZerleger?
dann ist das Dateum aber immer noch in einem DivContainer





egal .... nochmal "18 MonateFred"
Computer und Programierung ist ein "Universum"

superProgrammierer.TLD
(der alles über PHP und SQL weiss)
fragt "Wie funktioniert AjaX?"
Antwort "und so eine Frage vom SuperProgrammierer *kopfschüttel*"

AKraisser
PostRank 2
PostRank 2
Beiträge: 38
Registriert: 04.03.2009, 09:29
Wohnort: Tirol Österreich

Beitrag von AKraisser » 29.12.2010, 09:54

Danke Andy.
Zu meinem Webentwickler. Es gibt ja verschiedene Richtungen in der Webentwicklung. Man kann nicht alles wissen.

Habe mich jetzt entschlossen das ganze mit curl zu machen. Da kann man einen header mitsenden und bekommt gleich die Seite in einem String den ich dann nach merkmalen durchsuchen kann.

DOM wäre auch eine Möglichkeit da sich das ergebniss immer im ersten div container befindet. Vielleicht mit xpath die div Container herausfiltern und den ersten durchsuchen nach dem Datum.

so habe ich es mir gedacht :-)

müsste gehen oder?
SEO & Webentwicklung
https://www.kramoo.de

AKraisser
PostRank 2
PostRank 2
Beiträge: 38
Registriert: 04.03.2009, 09:29
Wohnort: Tirol Österreich

Beitrag von AKraisser » 29.12.2010, 22:51

Die abfrage steht zwar jetzt aber nach einigen abfragen wird meine IP gesperrt obwohl ich die Abfrage mit cURL und einer echten Browsersimulation mache. Anscheinend merkt sich aber google die IP meiner Abfragen und sperrt diese dann.

mit https://webcache.googleusercontent.com/ ... neseite.de frage ich ob die Seite im cache ist.

Kennt jemand eine andere Möglichkeit mit der es gehen könnte und meine IP nicht gesperrt wird?
SEO & Webentwicklung
https://www.kramoo.de

nerd
PostRank 10
PostRank 10
Beiträge: 4023
Registriert: 15.02.2005, 04:02

Beitrag von nerd » 30.12.2010, 01:42

wie sieht denn dein http request im moment aus? alle browser-typischen header gesetzt? cookie requests mit verarbeitet? zu viele abfragen zu schnell hintereinander geschickt?

AKraisser
PostRank 2
PostRank 2
Beiträge: 38
Registriert: 04.03.2009, 09:29
Wohnort: Tirol Österreich

Beitrag von AKraisser » 30.12.2010, 10:30

Sieht genau so aus wie von meinem Browser. Habe es auch kontrolliert mit Wireshark und den Lanverkehr mitgeschnitten.

Code: Alles auswählen

function get_url( $url )  // Auslese des Inhaltes einer URL mit einer Browsersimulation
{
		$header[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
		$header[] = "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3";
		$header[] = "Accept-Encoding: gzip,deflate";
		$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
		$header[] = "Keep-Alive: 115";
		$header[] = "Connection: keep-alive";
		$header[] = "Pragma: no-cache";
		$header[] = "Cache-Control: no-cache";

		$cookie = tempnam ("../tmp", "CURLCOOKIE");
		$ch = curl_init();
		curl_setopt( $ch, CURLOPT_URL, $url );
		curl_setopt( $ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 GTB7.1" );
		curl_setopt( $ch, CURLOPT_HTTPHEADER, $header );
		curl_setopt( $ch, CURLOPT_COOKIEJAR, $cookie );
		curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1 );
		curl_setopt( $ch, CURLOPT_ENCODING, 'gzip,deflate' );
		curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
		curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
		curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 10 );
		curl_setopt( $ch, CURLOPT_TIMEOUT, 10 );
		curl_setopt( $ch, CURLOPT_MAXREDIRS, 5 );
		//curl_setopt( $ch, CURLOPT_REFERER, 'http://www.google.com');
		//curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );    # wird für https urls benötigt
		//curl_setopt( $ch, CURLOPT_USERPWD, 'user:passw' );

  $html = curl_exec($ch); // führt curl aus
  curl_close($ch); // schließt curl wieder

  return $html; // gibt den Inhalt der Seite zurück 
} // schließt die Funktion get_url
Es kann dann nur noch sein das zu schnell hintereinander abgefragt wird.
Die Frage ist dann wie schnell darf man abfragen und macht es dann überhaupt sinn da ich ja mehrere hunderte Links abfragen muss.
SEO & Webentwicklung
https://www.kramoo.de

nerd
PostRank 10
PostRank 10
Beiträge: 4023
Registriert: 15.02.2005, 04:02

Beitrag von nerd » 30.12.2010, 10:56

mehrere hundert links? fuer sowas hab ich mir google alerts eingerichtet was mich auf dem laufenden haelt. wenn google wollte das du fuer ein paar hundert seiten das crawl datum auslesen koenntest, haetten sie bestimmt selbst ein interface dafuer bereitgestellt....

Synonym
PostRank 10
PostRank 10
Beiträge: 3708
Registriert: 09.08.2008, 02:55

Beitrag von Synonym » 30.12.2010, 10:59

Wo läuft das ganze denn? Lokal oder auf dem Server? Wenn Du zu viele Anfragen startest, dann wird die IP gesperrt, das kannst Du nur verhindern, wenn Du weniger Anfragen sendest oder eben die IP wechselst.

Lokal die IP wechseln ist mit einer Fritzbox ja nicht weiter schwer. Abfragen starten, 5-10, dann Fritzbox eine neue IP ziehen lassen und weiter mit den Anfragen.

Auf dem Server hast Du da schlechte Karten. Höchstens über zahlreiche fremde Proxys gehen und die immer schön abwechseln und das Captcha sollte auch automatisch gelöst werden.

AKraisser
PostRank 2
PostRank 2
Beiträge: 38
Registriert: 04.03.2009, 09:29
Wohnort: Tirol Österreich

Beitrag von AKraisser » 30.12.2010, 16:40

Läuft noch lokal aber wird mal auf einem Hoster laufen. Und es soll auch mal der Öffentlichkeit zugänglich sein.

Dann muss ich mir was anderes einfallen lassen um zu testen ob die Linkgebende-Seite im Index ist.
Mann könnte ja einen Teilstring aus der Seite nehmen so ca. 30 Wörter und diese mittels google suche abfragen. Also mit https://www.google.de/search? . Wenn die 30 wörter gefunden werden müsste die URL auf position 1 sein. Wenn nicht ist die seite nicht im index. Aber dann habe ich das gleiche Problem wahrscheinlich mit der Suche das man gesperrt wird!?
SEO & Webentwicklung
https://www.kramoo.de

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag