redirected - Lesen Inhalt umgeleiterten Seite in VB
cs1942
- programmiertechnik
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
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
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
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
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
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
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
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
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.jspUnd die wiederum leitet dann noch mal weiter, ebenfalls per 302-Statuscode, auf:
http://e-izvadak.pravosudje.hr/mpweb/jsp/menu/menusud.jspcURL 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
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