cs1942: redirected - Lesen Inhalt umgeleiterten Seite in VB

Hallo,

ich möchte eine umgeleitete Seite mit "curl"-Programm aus einer VB-Anwendung einlesen.

Bei manueller Eingabe der mir bekannter Linkadresse (z.B. http://link-1) bekomme ich die gewünschte Seite mit geänderter Linkadresse (z.B. http://link-2) richtig angezeigt.

Wenn ich dasgleiche im VB Programm tue bekomme ich mit "curl" folgendes Inhalt eingelesen:
<HTML>
<HEAD> <TITLE>Redirect to http://link-2 </TITLE> </HEAD>
<BODY> <A HREF=”http;//link2”>http://link-2 </A> </BODY>
</HTML>
anstatt den richtigen Inhalt der Seite http://link-1.

Kann mir jemand mitteilen, wie ich den richtigen Inhalt bekommen kann?

Vielen Dank im Voraus für die Hilfe.

Stanislav

  1. Hello,

    Kann mir jemand mitteilen, wie ich den richtigen Inhalt bekommen kann?

    indem du alle Informationen auswertest...sorry, aber mehr kann ich in Anbetracht der Informationslage nicht sagen. Wie führst du den Redirect durch, schickst du einen entsprechenden Header? Wie rufst du die Seite ab? Jenachdem könnte hier bereits Unterstützung für das Redirect drin sein oder eben nicht, im Zweifel musst du den gesendeten selbst auswerten und darauf reagieren.

    MfG
    Rouven

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    When the only tool you've got is a hammer, all problems start to look like nails.
    1. Hello,

      Kann mir jemand mitteilen, wie ich den richtigen Inhalt bekommen kann?
      indem du alle Informationen auswertest...sorry, aber mehr kann ich in Anbetracht der Informationslage nicht sagen. Wie führst du den Redirect durch, schickst du einen entsprechenden Header? Wie rufst du die Seite ab? Jenachdem könnte hier bereits Unterstützung für das Redirect drin sein oder eben nicht, im Zweifel musst du den gesendeten selbst auswerten und darauf reagieren.

      MfG
      Rouven

      Hallo Rouven,

      leider weiss ich nicht wie der Redirect durch den URL-Eigner durchgeführt wird.

      Hier ist der vollständiger Code, mit welchem ich die Seite lese:
      ------------------------------------------------------------------------

      Private Type STARTUPINFO
            cb As Long
            lpReserved As String
            lpDesktop As String
            lpTitle As String
            dwX As Long
            dwY As Long
            dwXSize As Long
            dwYSize As Long
            dwXCountChars As Long
            dwYCountChars As Long
            dwFillAttribute As Long
            dwFlags As Long
            wShowWindow As Integer
            cbReserved2 As Integer
            lpReserved2 As Long
            hStdInput As Long
            hStdOutput As Long
            hStdError As Long
         End Type

      Private Type PROCESS_INFORMATION
            hProcess As Long
            hThread As Long
            dwProcessID As Long
            dwThreadID As Long
         End Type

      Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal _
            hHandle As Long, ByVal dwMilliseconds As Long) As Long

      Private Declare Function CreateProcessA Lib "kernel32" _
            (ByVal lpApplicationName As Long, ByVal lpCommandLine As String, _
             ByVal lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _
             ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _
             ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As String, _
             lpStartupInfo As STARTUPINFO, _
             lpProcessInformation As PROCESS_INFORMATION) As Long

      Private Declare Function CloseHandle Lib "kernel32" _
            (ByVal hObject As Long) As Long

      Private Declare Function GetExitCodeProcess Lib "kernel32" _
            (ByVal hProcess As Long, lpExitCode As Long) As Long

      Private Const NORMAL_PRIORITY_CLASS = &H20&
         Private Const DETACHED_PROCESS = &H8&       'unterbindet Asugabe auf dem Monitor
         Private Const INFINITE = -1&

      Public Function ExecCmd(cmdline$)
            Dim proc As PROCESS_INFORMATION
            Dim start As STARTUPINFO

      ' Initialize the STARTUPINFO structure:
            start.cb = Len(start)

      ' Start the shelled application:
            ret& = CreateProcessA(0&, cmdline$, 0&, 0&, 1&, _
               NORMAL_PRIORITY_CLASS + DETACHED_PROCESS, 0&, vbNullString, start, proc)

      ' Wait for the shelled application to finish:
               ret& = WaitForSingleObject(proc.hProcess, INFINITE)
               a = a

      Call GetExitCodeProcess(proc.hProcess, ret&)
               Call CloseHandle(proc.hThread)
               Call CloseHandle(proc.hProcess)
               ExecCmd = ret&
         End Function

      Function URL_seiten_inhalt(link As String) As String

      Dim hInst As Integer
      Dim thecmd As String

      On Error GoTo s1_error

      URL_seiten_inhalt = ""
      ' curl Programm aufrufen und HTML Datei aus dem Internet laden und auf Platte schreiben
      thecmd = "curl -o d:\x.txt " & link
      ExecCmd (thecmd)
      ' Jetzt die geladene HTML Datei öffnen und einlesen
      fnum = FreeFile()
      Open "d:\x.txt" For Input Access Read As fnum
      flen = LOF(fnum)
      URL_seiten_inhalt = Input(flen, fnum)  ' Daten einlesen
      Close fnum

      s1_content:
          Exit Function

      s1_error:
          URL_seiten_inhalt = "Fehler!"
          GoTo s1_content

      End Function
      ----------------------------------------------------------------------

      Wenn ich die Origanal-URL-Adresse
      http://e-izvadak.pravosudje.hr/mpweb/jsp/menu/menusud.jsp?sudid=1
      manuell eingebe bekomme ich auf dem Bildschirm die richtige Seite angezeigt.

      Wenn ich die Seite mit dem oben aufgeführten VB-Programm aufrufe bekomme ich in der Datei d:\x.txt folgenden Inhalt:
      <HTML><HEAD><TITLE>Redirect to http://e-izvadak.pravosudje.hr/mpweb/jsp/zk/menugk.jsp</TITLE></HEAD><BODY><A HREF="http://e-izvadak.pravosudje.hr/mpweb/jsp/zk/menugk.jsp">http://e-izvadak.pravosudje.hr/mpweb/jsp/zk/menugk.jsp</A></BODY></HTML>

      Und das ist nicht das, was ich benötige. Ich erwarte den Quelcode der Seite die auf dem Bildschirm angezeigt bekomme.

      MfG
      cs1942

      1. Hello,

        thecmd = "curl -o d:\x.txt " & link

        ach SOO, da war ich auf dem völlig falschen Dampfer, ich dachte du redest von CURL und PHP (serverseitig) für den Redirect.
        Ja, dann solltest du mal ins entsprechende Handbuch gucken, z.B. steht hier, dass Location-Header mit -L beachtet werden können.

        MfG
        Rouven

        --
        -------------------
        sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
        He is entertaining both out of the car and in the car because if you tell him that a corner is almost flat then he is the guy who is going to try to take it flat even if it means shunting it the other side of it, he will come with the data and say 'hey, I may have crashed and destroyed the car, but I was flat-out'. That is an interesting quality that he has!  --  Team Member on Jacques Villeneuve
        1. Hello,

          thecmd = "curl -o d:\x.txt " & link
          ach SOO, da war ich auf dem völlig falschen Dampfer, ich dachte du redest von CURL und PHP (serverseitig) für den Redirect.
          Ja, dann solltest du mal ins entsprechende Handbuch gucken, z.B. steht hier, dass Location-Header mit -L beachtet werden können.

          MfG
          Rouven

          Hallo,

          mit der Option -L bekomme ich falsche Seite eingelesen. Konkret die Seite
          http://e-izvadak.pravosudje.hr/mpweb/jsp/menu/menusud.jsp
          und nicht die Seite
          http://e-izvadak.pravosudje.hr/mpweb/jsp/menu/menusud.jsp?sudid=1
          die ich gern hätte (und die ich bei der direkten Eingabe auf dem Bildschirm bekomme.

          MfG
          cs1942

          1. Hi,

            zitiere bitte vernuenftig!

            mit der Option -L bekomme ich falsche Seite eingelesen. Konkret die Seite
            http://e-izvadak.pravosudje.hr/mpweb/jsp/menu/menusud.jsp
            und nicht die Seite
            http://e-izvadak.pravosudje.hr/mpweb/jsp/menu/menusud.jsp?sudid=1
            die ich gern hätte (und die ich bei der direkten Eingabe auf dem Bildschirm bekomme.

            Also noch mal langsam, welche Adresse forderst du jetzt initial an?

            MfG ChrisB

            --
            „This is the author's opinion, not necessarily that of Starbucks.“
            1. Hi,

              zitiere bitte vernuenftig!

              mit der Option -L bekomme ich falsche Seite eingelesen. Konkret die Seite
              http://e-izvadak.pravosudje.hr/mpweb/jsp/menu/menusud.jsp
              und nicht die Seite
              http://e-izvadak.pravosudje.hr/mpweb/jsp/menu/menusud.jsp?sudid=1
              die ich gern hätte (und die ich bei der direkten Eingabe auf dem Bildschirm bekomme.

              Also noch mal langsam, welche Adresse forderst du jetzt initial an?

              MfG ChrisB

              Halo,

              ich will die Adresse
              http://e-izvadak.pravosudje.hr/mpweb/jsp/menu/menusud.jsp?sudid=1.
              Sie wird an curl im oben aufgeführten VB-Programm übergeben.
              Bei manueller Eingabe im Internet Explorer wird sie korrekt angezeigt.

              curl liefert aber die Seite der Adresse
              http://e-izvadak.pravosudje.hr/mpweb/jsp/menu/menusud.jsp.
              Die möchte ich nicht. Sie ist die Seite, wo die Auswahl getroffen wird, um an die obere Adresse mit Anhang "?sudid=1" zu kommen.

              MfG
              cs1942

              1. Hi,

                zitiere bitte vernuenftig!

                Kapierst du das jetzt bitte endlich mal?
                FOTU schmeckt auch nicht besser als TOFU.

                ich will die Adresse
                http://e-izvadak.pravosudje.hr/mpweb/jsp/menu/menusud.jsp?sudid=1.
                Sie wird an curl im oben aufgeführten VB-Programm übergeben.
                Bei manueller Eingabe im Internet Explorer wird sie korrekt angezeigt.

                curl liefert aber die Seite der Adresse
                http://e-izvadak.pravosudje.hr/mpweb/jsp/menu/menusud.jsp.
                Die möchte ich nicht.

                Die erste genannte Seite mit dem Query-String ?sudid=1 leitet aktuell, wie die Abfrage mit dem Web-Sniffer zeigt, auf folgende Adresse weiter:
                HTTP Status Code: HTTP/1.1 302 Moved Temporarily
                Location: http://e-izvadak.pravosudje.hr/mpweb/jsp/zk/menugk.jsp

                Und die wiederum leitet dann noch mal weiter, ebenfalls per 302-Statuscode, auf:
                http://e-izvadak.pravosudje.hr/mpweb/jsp/menu/menusud.jsp

                cURL verhaelt sich also voellig korrekt, wenn es - mit L-Parameter zum Folgen von Weiterleitungen aufgerufen - dir dann den Inhalt dieser Ressource zurueckgibt.

                Meine Testbrowser werden uebrigens auch umgeleitet.
                Wenn das bei deinem IE nicht passiert - dann hat er hoechstvermutlich bereits von einem vorherigen Besuch ein Cookie, welches die Seite veranlasst, nicht umzuleiten. Schau also nach, ob es ein solches gibt, welchen Inhalt es hat - und ob du zum gewuenschten Ergebnis kommst, wenn du cURL auch noch den Cookie beim Request mitzugeben veranlasst.

                MfG ChrisB

                --
                „This is the author's opinion, not necessarily that of Starbucks.“
                1. Hi,

                  zitiere bitte vernuenftig!

                  Kapierst du das jetzt bitte endlich mal?
                  FOTU schmeckt auch nicht besser als TOFU.

                  ich will die Adresse
                  http://e-izvadak.pravosudje.hr/mpweb/jsp/menu/menusud.jsp?sudid=1.
                  Sie wird an curl im oben aufgeführten VB-Programm übergeben.
                  Bei manueller Eingabe im Internet Explorer wird sie korrekt angezeigt.

                  curl liefert aber die Seite der Adresse
                  http://e-izvadak.pravosudje.hr/mpweb/jsp/menu/menusud.jsp.
                  Die möchte ich nicht.

                  Die erste genannte Seite mit dem Query-String ?sudid=1 leitet aktuell, wie die Abfrage mit dem Web-Sniffer zeigt, auf folgende Adresse weiter:
                  HTTP Status Code: HTTP/1.1 302 Moved Temporarily
                  Location: http://e-izvadak.pravosudje.hr/mpweb/jsp/zk/menugk.jsp

                  Und die wiederum leitet dann noch mal weiter, ebenfalls per 302-Statuscode, auf:
                  http://e-izvadak.pravosudje.hr/mpweb/jsp/menu/menusud.jsp

                  cURL verhaelt sich also voellig korrekt, wenn es - mit L-Parameter zum Folgen von Weiterleitungen aufgerufen - dir dann den Inhalt dieser Ressource zurueckgibt.

                  Meine Testbrowser werden uebrigens auch umgeleitet.
                  Wenn das bei deinem IE nicht passiert - dann hat er hoechstvermutlich bereits von einem vorherigen Besuch ein Cookie, welches die Seite veranlasst, nicht umzuleiten. Schau also nach, ob es ein solches gibt, welchen Inhalt es hat - und ob du zum gewuenschten Ergebnis kommst, wenn du cURL auch noch den Cookie beim Request mitzugeben veranlasst.

                  MfG ChrisB

                  Hallo ChrisB

                  ich habe mir ein bischen Zeit genommen, da ich Einiges ausprobieren wollte, aber auch andere Verpflichtungen habe.

                  Ich habe die Cookies gelöscht. Das hatte aber keine Auswirkung. Um das Problem einfacher zu handeln, habe ich die Adressen
                  http://e-izvadak.pravosudje.hr/mpweb/jsp/menu/menusud.jsp?sudid=xx
                  mit xx von 1 bis 99 in eine Excel-Tabelle mit den entsprechenden Hyperlinks erfasst.
                  Jetzt kommt das Interessante:
                  Nachdem die Cookiies gelöscht wurden, wird immer die Seite der Adresse
                  http://e-izvadak.pravosudje.hr/mpweb/jsp/menu/menusud.jsp
                  angezeigt.
                  Wenn ich aber eine konkrete Adresse (z.B. mit ?sudid=1) manuell im Internet Explorer anwähle, wird anschliessend dise Adresse immer angezeigt, egal welche ich andere Adresse in Excel anwähle.

                  Mir ist es klar, dass es irgendwo etwas gespeichert wird, das diese Vorgehensweise erzwingt. Leider kenne ich mich zu wenig in Windowssystem, um feststellen zu können woran es liegn könnte und noch weniger, wie ich das beheben könnte.

                  MfG
                  cs1942

                  1. Hi,

                    ich habe mir ein bischen Zeit genommen

                    Schoen fuer dich.

                    Da du aber offenbar wirklich zu ignorant bist, das mit dem Zitieren mal zu beruecksichtigen, obwohl ich dich mehrfach deutlich darauf hingewiesen habe, habe ich zumindest keine Lust mehr, das hier noch fortzufuehren.

                    MfG ChrisB

                    --
                    „This is the author's opinion, not necessarily that of Starbucks.“