Quelltext auslesen

  • Hallo,

    ich lese mit

    Code
    $source = BinaryToString(InetRead("http://downloadcenter.trendmicro.com/index.php?pattern_file=1&regs=de",1))


    den Quellcode ein, um dann mit Stringbetween innerhalb des Codes die Versionsnummer aus dem nachgelagerten Text "Malware CPR - Windows"
    auszulesen.
    Das hat in der Vergangenheit immer prima geklappt. Trendmicro hat nun aber die Seiten geändert und im HTML-Quellcode kann ich die Versionsnummer nicht mehr abfragen.
    Sieht hier jemand eine Möglichkeit anders vorzugehen ?

    Merci im voraus.
    Gruss ExBerliner

    2 Mal editiert, zuletzt von ExBerliner (28. April 2010 um 02:16)

  • Mit nem IEFrame könntest du anstatt den Quelltext auch den Text auslesen. ich probiere trotzdem mal weiter...

  • da das ganze nun über ajax läuft bleibt nur noch:

    WinHTTP, TCP, IE.au3, FF.au3

    es läuft nämlich über diesen post:

    Spoiler anzeigen

    und POSTs sind mit InetRead nicht machbar, soweit ich weiß

  • [autoit]

    $str = "POST /ajx/pattern_result.php HTTP/1.1" & @crlf & _
    "Host: downloadcenter.trendmicro.com" & @crlf & _
    "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)" & @crlf & _
    "Accept: */*" & @crlf & _
    "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3" & @crlf & _
    "Accept-Encoding: gzip,deflate" & @crlf & _
    "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" & @crlf & _
    "Keep-Alive: 115" & @crlf & _
    "Connection: keep-alive" & @crlf & _
    "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" & @crlf & _
    "X-Requested-With: XMLHttpRequest" & @crlf & _
    "Referer: http://downloadcenter.trendmicro.com/index.php?pattern_file=1&regs=de" & @crlf & _
    "Content-Length: 23" & @crlf & _
    "Pragma: no-cache" & @crlf & _
    "Cache-Control: no-cache" & @crlf & _
    "q=patresult_page&reg=de" & @crlf & @crlf

    [/autoit][autoit][/autoit][autoit]

    TCPStartup()
    $con = TCPConnect(TCPNameToIp("downloadcenter.trendmicro.com/"), 80)
    TCPSend($con, $str)
    $recv = ""
    do
    $recv &= TCPRecv($con, 1024)
    until @error
    msgbox(0, "", $recv)

    [/autoit]
  • danke für die antworten.

    mit _IECreate und _IEBodyReadHTML gehts genausowenig, also auch nicht mit IE.au3.

    @tkausl 
    die MessageBox bringt bei mir kein Ergebnis ? Habe IE8 und AutoiT 3.3.6.0.

    Gruss ExBerliner

  • Versuchs mal so: (kanns leider nicht testen da ich hinter nem proxy sitze...)

    [url='http://translation.autoit.de/onlinehilfe/intro/lang_variables.htm']

    [autoit]

    $str = "POST /ajx/pattern_result.php HTTP/1.1" & @crlf & _
    "Host: downloadcenter.trendmicro.com" & @crlf & _
    "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)" & @crlf & _
    "Accept: */*" & @crlf & _
    "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3" & @crlf & _
    "Accept-Encoding: gzip,deflate" & @crlf & _
    "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" & @crlf & _
    "Keep-Alive: 115" & @crlf & _
    "Connection: keep-alive" & @crlf & _
    "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" & @crlf & _
    "X-Requested-With: XMLHttpRequest" & @crlf & _
    "Referer: http://downloadcenter.trendmicro.com/index.php?pattern_file=1&regs=de" & @crlf & _
    "Content-Length: 23" & @crlf & _
    "Pragma: no-cache" & @crlf & _
    "Cache-Control: no-cache" & @crlf & @CRLF & _
    "q=patresult_page&reg=de" & @crlf & @crlf

    [/autoit][autoit][/autoit][autoit]

    TCPStartup()
    $con = TCPConnect(TCPNameToIp("trendmicro.com/"), 80)
    TCPSend($con, $str)
    $recv = ""
    do
    $recv &= TCPRecv($con, 1024)
    until @error
    msgbox(0, "", $recv)

    [/autoit]
  • Ich kann leider kein TCP, deswegen hier die WinHTTP Variante

    Ich weiß nicht ob deine funktion funktioniert, sollte sie aber nicht:

    [autoit]

    _WinHttpSendRequest($HTTP_Request, "Content-Type: application/x-www-form-urlencoded" & @CRLF, "q=patresult_page&reg=de")

    [/autoit]

    zwischen Header und Content gehört eine leerzeile, also 2 Breaks.

  • @ black skorpi
    geht nicht, leider. hab ich auch schon probiert.

    @tkausl
    sorry, leider auch kein Ergebnis in der MsgBox.

    SEuBo
    klasse, das geht. wo kommen die winhttp.au3 nebst anhang eigentlich her ?
    Und wo schaue ich, wie die Variablen $HTTP_Agent und $HTTP_Request lauten müssen. Ferner: Wo bekomme ich die Parameter "POST", "/ajx/pattern_result.php", "HTTP/1.1" und "Content-Type: application/x-www-form-urlencoded" & @CRLF, "q=patresult_page&reg=de".
    Sorry, aber hier fehlt mir einfach der Durchblick. Wäre für kurze Aufklärung dankbar.
    Und: vielen Dank für die schnelle Lösung.

    Gruss ExBerliner

  • Und wo schaue ich, wie die Variablen $HTTP_Agent und $HTTP_Request lauten müssen. Ferner: Wo bekomme ich die Parameter "POST", "/ajx/pattern_result.php", "HTTP/1.1" und "Content-Type: application/x-www-form-urlencoded" & @CRLF, "q=patresult_page&reg=de".
    Sorry, aber hier fehlt mir einfach der Durchblick. Wäre für kurze Aufklärung dankbar.
    Und: vielen Dank für die schnelle Lösung.

    $HTTP_Agent kannst du einfach so merken, ist halt genau das, was der Firefox 3.6 mitsendet. Für den Server bist du mit diesem Script also Firefox-benutzer. In HTTP_Request: POST ist die Form der übermittlung von den daten. /ajx.pattern_result.php die datei. wenn du also auf autoit.de/post.php bist käme da /post.php hin. HTTP/1.1 bleibt einfach, Content-Type is der Typ der Daten die übermittelt wurden. und q=patresult_page&reg=de sind die Daten. nur halt als POST und nicht als GET angehängt

  • black_skorpi
    yepp, habe ich 1 zu 1 übernommen. zur sicherheit nochmals kopiert und probiert. MsgBox bleibt leer.

    ich nehm dann mal das zeuchs von SEuBo. einfach genial.
    ein hoch auf den winhttp-author trancexx !!

    vielen dank
    ExBerliner

  • SEuBo

    Kannst Du mir bitte noch einmal helfen ?
    Die von Dir erstellte version.au3 funktioniert plötzlich nicht mehr. Ich bekomme in der MsgBox das Ergebnis 0, obwohl dass lt. Trendmicro-Page nicht sein kann. Ich kann auch nicht erkennen, dass auf der Page bzw. bei den Parametern in der version.au3 was geändert wurde. Mir feht einfach der Durchblick bei WinHttp.

    Vielen Dank im voraus.
    Gruss ExBerliner

  • Hallo Ex-Berliner,
    Anscheinend wurden die Daten, welche übermittelt werden geändert.
    Statt q=patresult_page&reg=de möchte der Server von trendmicro jetzt das hier geschickt bekommen: q=patresult_page&region_loc=8

    Also musst du diese Zeile (~14)

    [autoit]

    _WinHttpSendRequest($HTTP_Request, "Content-Type: application/x-www-form-urlencoded" & @CRLF, "q=patresult_page&reg=de")

    [/autoit]


    zu

    [autoit]

    _WinHttpSendRequest($HTTP_Request, "Content-Type: application/x-www-form-urlencoded" & @CRLF, "q=patresult_page&region_loc=8")

    [/autoit]


    ändern.

    LG, SEuBo

  • Es gibt ein FireFox Addon namens Live HTTP Headers .

    Nach der Installation übers Menü aufrufen:
    autoit.de/wcf/attachment/9208/

    Danach erscheint das Live HTTP Headers Fenster.
    Wir schalten "Mitschneiden" ein, öffnen einen neuen Tab, und navigieren zu
    http://downloadcenter.trendmicro.com/index.php?pattern_file=1&regs=de (das ist ja die standard Suchseite).
    "Mitschneiden" wird wieder ausgeschaltet, damit wir nicht irgendwelchen Müll aufnehmen.

    Nun erscheint in Live HTTP Headers etwas, was ungefähr so aussieht:
    autoit.de/wcf/attachment/9209/

    Wenn man ein bisschen runterscrollt, findet man das richtige Formular "..../ajx/pattern_result.php"
    Und wir sehen auch sofort die Daten, die gesendet wurden.
    autoit.de/wcf/attachment/9210/

    Das ganze baut man dann nur noch in TCP / WinHTTP ein.
    Übrigens hab ich auch WinHTTP erst lernen müssen ;)