Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15
  1. #1
    W32.Lovgate
    Registriert seit
    05.11.2008
    Beiträge
    367

    Standard [PHP]Warum kann ich diese Seite nicht parsen ?

    Hallo,

    ich versuche jetzt schon eine ganze weile aus einer Seite die Werte einiger ' type="hidden" ' felder zu parsen aber aus irgendeinem Grund finden preg_match und preg_match_all nur viel zu wenige davon.

    Seite: https://accounts.google.com/SignUp?s...mpl=googlemail

    Ich hab mal ein Stück aus dem Code kopiert

    PHP-Code:
    //(code eingerückt)
    <input type="hidden" name="service" id="service" value="mail">
    <
    input type="hidden" name="continue" id="continue" value="https://mail.google.com/mail/?tab=wm">
    <
    input type="hidden" name="ltmpl" id="ltmpl" value="googlemail">
    <
    input type="hidden" name="timeStmp" id="timeStmp" value='1327619779492'/>
    <
    input type="hidden" name="secTok" id="secTok" value='.AG5fkS8jUtSwWdEnj9zz3-FprJMxQvLqgA=='/>
    <
    input type="hidden" name="dsh" id="dsh" value="7956360192668651999">
    <
    input type="hidden" name="ktl" id="ktl" value="">
     <
    input type="hidden" name="ktf" id="ktf">
     <
    input type="hidden" id="_utf8" name="_utf8" value="+++9731;"/> 
    Wenn ich jetzt versuche z.b. secTok zu parsen finde ich nichts, hab jetzt schon ein paar Variationen durch probiert, aber ich komme nicht an die value´s hier mal ein Beispiel:

    PHP-Code:
    preg_match_all('#id="secTok" value=(.*)>#'$site$secTok);
    array(
    1) {   +++91;0+++93;=>   array(0) {   } } 
    So finde ich gar nichts, das $secTok array bleibt leer. Wenn ich jetzt so suche:

    PHP-Code:
    preg_match_all('#id="secTok"#'$site$secTok);
    array(
    1) {     +++91;0+++93;=>     string(11"id="secTok""   } } 
    Finde ich den String 'id="secTok"', aber sobald ich 'value=' ranhängen will finde ich wieder nichts.

    PHP-Code:
    preg_match_all('#id="secTok" value=#'$site$secTok);
    array(
    1) {   +++91;0+++93;=>   array(0) {   } } 
    Irgendwie hab ich den Eindruck, der Fehler liegt bei dem Leerzeichen zwischen dem 'id="secTok"' und 'value=', aber wenn ich andererseits nur nach 'type=hidden' suche finde ich auch nichts(!), obwohl davon ja auf jeden fall diverse in dem code stehen.

    PHP-Code:
    preg_match_all('#type=hidden#'$site$secTok);
    array(
    1) {   +++91;0+++93;=>   array(0) {   } } 
    Was meint ihr woran das liegt ?

  2. #2
    Support-Hure Avatar von sn0w
    Registriert seit
    18.09.2007
    Beiträge
    1.919

    Standard AW: [PHP]Warum kann ich diese Seite nicht parsen ?

    An fehlendem Wissen über Regular Expressions.
    http://www.php.net/manual/de/pcre.pattern.php

    Boardregeln | SuFu | Blackmarket | PM

    Fragezeichen und Ausrufezeichen sind keine Rudeltiere!


  3. #3
    W32.Lovgate
    Registriert seit
    05.11.2008
    Beiträge
    367

    Standard AW: [PHP]Warum kann ich diese Seite nicht parsen ?

    Muss ich mich durch die komplette Manual quälen, oder kannst das noch irgendwie eingrenzen ?

  4. #4

    Registriert seit
    17.06.2009
    Beiträge
    559

    Standard AW: [PHP]Warum kann ich diese Seite nicht parsen ?

    Das liegt wohl an den Zeilenumbrüchen. Probier es so:
    Code:
    preg_match('#id="secTok"\s+value=\'([^\']+)\'#i', $site, $secTok);

  5. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    Freak1936 (27.01.2012)

  6. #5
    W32.Lovgate
    Registriert seit
    05.11.2008
    Beiträge
    367

    Standard AW: [PHP]Warum kann ich diese Seite nicht parsen ?

    Ja wunderbar, danke inout so klappt es!

    Muss das /s genau an der Stelle, wo der umbruch steht, sein ?

  7. #6

    Registriert seit
    17.06.2009
    Beiträge
    559

    Standard AW: [PHP]Warum kann ich diese Seite nicht parsen ?

    \s+ steht in dem Fall für mindestens ein whitespace-Zeichen, also auch wenn dort kein Zeilenumbruch, sondern nur ein oder mehrere Leerzeichen stehen, so sollte es immer funktionieren.
    Am besten im Pattern immer alle Leerzeichen durch \s+ oder \s* ersetzen, dann gibt es keine Probleme.

  8. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    Freak1936 (27.01.2012)

  9. #7
    Anfänger
    Registriert seit
    15.01.2012
    Beiträge
    11

    Standard AW: [PHP]Warum kann ich diese Seite nicht parsen ?

    Normalerweise gilt es als Sünde, HTML mit Regular Expressions zu parsen...

  10. #8

    Registriert seit
    17.06.2009
    Beiträge
    559

    Standard AW: [PHP]Warum kann ich diese Seite nicht parsen ?

    Zitat Zitat von d3mux Beitrag anzeigen
    Normalerweise gilt es als Sünde, HTML mit Regular Expressions zu parsen...
    Recht hast Du, ich wollte den Link vorhin schon posten, habe es dann aber doch gelassen, also hier ist er:
    http://www.codinghorror.com/blog/200...hulhu-way.html

  11. #9
    W32.Lovgate
    Registriert seit
    05.11.2008
    Beiträge
    367

    Standard AW: [PHP]Warum kann ich diese Seite nicht parsen ?

    Hmmmm, mir wurde zwar dazu geraten wann immer möglich RegEx zu nutzen, aber ich lass mich na klar auch eines besseren belehren. Wird Cthulhu mich jetzt erwischen, oder hab ich noch eine Chance der ewigen Verdammnis zu entkommen
    Was gibt es denn da für alternative zum RegEx parsen, sollte ich das lieber nur mit PHP Bordmitteln machen, oder lieber die DOM´s mit z.b. JQuery parsen statt mit RegEx zu arbeiten ?

    Ich hab noch eine Frage, auf meiner Zielseite ist noch ein dubioser Wert der beim Registrieren übertragen wird, dieser wert heißt: "bgresponse=".
    Leider ist dieser wert aber keine übergabe eines "hidden" field, sondern wird aus einem Stück Javascript errechnet.

    http://nopaste.info/1572a72c7e.html

    Hmm gaia_botguard klingt nicht gut! Wie könnte ich diesen wert denn jetzt "simulieren", einfach den JS Code so parsen wie die "hidden" Felder und einfach in das Script schreiben, oder wie würdet ihr das machen ?

    (Ich bin nicht wirklich Fit in JS, deshalb frage ich mich wie man diese Protektion am besten umgehen könnte. Ich möchte hier auch nicht nach einem SRC betteln, es geht mir eher darum zu verstehen, wie ein Ansatz aussehen sollte ...)
    Geändert von Freak1936 (27.01.2012 um 17:44 Uhr)

  12. #10

    Registriert seit
    17.06.2009
    Beiträge
    559

    Standard AW: [PHP]Warum kann ich diese Seite nicht parsen ?

    Zitat Zitat von Freak1936 Beitrag anzeigen
    Was gibt es denn da für alternative zum RegEx parsen [...]
    Die DOM und XML Funktionen z.B.
    Für ein solches kleines Script würde ich aber auch RegEx benutzen...

    Zum anderen Problem:
    Man könnte jetzt natürlich den gesamten Algorithmus von JS nach PHP übersetzen, allerdings scheint das doch recht viel Arbeit zu sein.
    Ansonsten könnte man es mit einem PHP JS Interpreter wie z.B. J4P5 probieren, allerdings habe ich da so meine Zweifel ob das funktioniert.

    Ich würde dafür einfach die MSHTML Interfaces des IE missbrauchen.
    Ob und wie das in PHP geht, kann ich Dir aber nicht sagen.

    Ein kleines Beispiel in Delphi (aus einem alten Projekt von mir):
    Code:
    uses
      MSHTML;
    
    function CreateDocument(const markup: string): IHTMLDocument2;
    var
      doc: OleVariant;
    begin
      Result := CoHTMLDocument.Create as IHTMLDocument2;
      doc := Result;
      doc.Open;
      doc.Write(markup);
      doc.Close;
    end;
    
    WriteLn(CreateDocument('<script>document.write(668.5*2);</script>').body.innerHTML);
    (Ausgabe: 1337)

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 19.10.2010, 14:10
  2. Antworten: 17
    Letzter Beitrag: 20.07.2010, 21:40
  3. WICHTIG: ist Diese Seite SeriÖs oder nicht?
    Von monstermaschiene im Forum Hardware
    Antworten: 27
    Letzter Beitrag: 29.10.2008, 17:38

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •