kostenloser Webspace werbefrei: lima-city


PHP: mein Script soll wie ein Browser wirken...

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    mathesoft

    Kostenloser Webspace von mathesoft

    mathesoft hat kostenlosen Webspace.

    Hallo, folgende Aufgabenstellung:
    Eine Seite von Facebook als String einlesen und ein paar Texte suchen.

    Problem:
    Wenn ich die URL zB in Chrome direkt aus der Adresszeile aufrufe, lädt Facebook wie gewohnt die Seite (eingeloggt sein ist nicht notwendig!).
    Wenn ich die URL von meinem Script aufrufe, sagt Facebook, ich solle den Browser aktualisieren.

    Lösungsweg:
    Ich sende mit der Anfrage einen Header mit, der Facebook erzählt, daß mein Script so ein Browser wie Chrome ist:
    $opts = array(
    	  'http'=>array(
    		'method'=>"GET",
    		'header'=>	"User-Agent: " . $_SERVER['HTTP_USER_AGENT'] . " \r\n" .
    					"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 \r\n" .
    					"Accept-language: en-us,en;q=0.5\r\n" .
    					"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n" .
    					"Connection: close\r\n"					
    	  )
    	);
     $cx=stream_context_create($opts);
     $fbpc=file_get_contents($fburl,false,$cx);

    Facebook reagiert darauf schon besser, sagt mir aber, daß die gewünschte Seite nicht zur Verfügung steht.

    Also fehlt noch irgendwas im Header, ich finde aber nicht genau heraus, was es ist.
    Es liegt wahrscheinlich daran, daß Fb HTTPS ist, ich habe aber nachgelesen, daß in der Zeile " 'http'=>array( " KEIN 'https' gesetzt wird. Es geht auch nicht, wenn es so gesetzt ist.

    Was muss ich ergänzen, damit mein Script-Aufruf der Fb-Seite genauso ist wie wenn ich die Seite aus der Adresszeile aufrufe?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. openssl ist aktiviert auf dem Server, wo dein Script läuft?

    Eventuell läuft Facebook auf einem IIS Server, dann kann es sein, dass es mit file_get_contents nichts wird.

    Mit Curl sollte es funktionieren, wenn die Extension denn auch auf dem Server zur Verfügung steht.
  4. Autor dieses Themas

    mathesoft

    Kostenloser Webspace von mathesoft

    mathesoft hat kostenlosen Webspace.

    Ich habe XAMPP daheim, da ist SSL aktiviert. Und LC... hm, weiß nicht genau?!

    Ich habe heute einen Gedankengang gehabt, so: wenn der fbserver SSL erwartet, muss ich dann ein Key zum Verschlüsseln bereitstellen bzw mitsenden? Der Server verschlüsselt dann mit meinem Key die Seite, sendet sie mir und ich schließe diese dann mit dem Key wieder auf?

    Falls das so läuft, gibt es bestimmt so eine Funktion, den Key zu generieren und den sollte ich wahrscheinlich im Header mitschicken, lokal als Cookie speichern.

    Ich frag lieber, ob das so ist, bevor ich wieder 10 Stunden Seifenblasen in einen Sack einsammle...
  5. mathesoft schrieb:
    Ich frag lieber, ob das so ist, bevor ich wieder 10 Stunden Seifenblasen in einen Sack einsammle...

    Dein Sack läuft schon fast über. :lol: Mein Vorposter hats eigentlich schon beantwortet, aber du bist nicht gross darauf eingegangen:
    all-in1 schrieb:
    Mit Curl sollte es funktionieren, wenn die Extension denn auch auf dem Server zur Verfügung steht.


    Mit Curl kannst du SSL Content abfragen. Also stell da mal am besten um, anders wirds nicht funktionieren. Ich hab jetzt einfach mal das erste Beispiel von Google rausgenommen, kannst dir ja mal ansehen: Link.

    Beitrag zuletzt geändert: 13.5.2014 20:41:07 von c143
  6. mathesoft schrieb:
    Ich habe XAMPP daheim, da ist SSL aktiviert. Und LC... hm, weiß nicht genau?!


    Es geht nicht darum, ob du SSL aktiviert hast, sondern openssl aktiviert ist. Und es gibt mit file_get_contents immer wieder Probleme gerade bei SSL. Und den Header kannst du fast gar nicht manipulieren über das PHP-Script, sondern besser über die php.ini

    Wie schon gesagt, Curl ist die bessere Variante.

    Und zweitens solltest du auch immer eine Fehlerbehandlung mit einbauen. Dann weiss man besser wo es hakt, denn bei file_get_contents werden die Fehlermeldungen oft aus Sicherheitsgründen unterdrückt.


    mathesoft schrieb:
    Ich frag lieber, ob das so ist, bevor ich wieder 10 Stunden Seifenblasen in einen Sack einsammle...
    Nun dann kommen bei dir ja wenigstens Seifenblasen raus anstelle von heisser Luft.
  7. Autor dieses Themas

    mathesoft

    Kostenloser Webspace von mathesoft

    mathesoft hat kostenlosen Webspace.

    Danke für die Tipps und den Hinweis auf cURL...

    :scared: das sieht alles ziemlich komplex und kompliziert aus ... :spammer:

    Jetzt muss ich mich da erstmal reinlesen,
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!