Seite 1 von 1
Automatisch einloggen bei Webgadget
Verfasst: 13.03.2009 13:01
von P1TBULL
Moin Moin,
ich hab ein kleines Tool geschrieben das Daten aus einer Webseite ausliest. Funktioniert auch supi, aber ich hab keine Lust mich jeden Tag einzuloggen und die Daten auszulesen deswegen möchte ich das ganze automatisieren. Ich möchte den Benutzernamen und das PW in einer txt datei speichern und beim starten des Programms an das Webgadget schicken damit sich das Programm automatisch einloggt. Aber ich finde keinen Weg die Benutzerdaten an das Webgadget zu senden. Danke schonmal für Eure Mühe!
P.S. So sieht das ganze aus:

Verfasst: 13.03.2009 15:07
von KeyKon
Brauchst du das Webgadget überhaupt? Ich nehme an wenn das ganze automatisch ablaufen soll nich, das Webgadget is nämlich in erster linie nur da um etwas zu Visualisieren...
Es wäre vll praktisch wenn du einen Link zu der Site posten würdest wo man sich einloggen muss, der einfachste weg is nämlich so zu tun als wär dein Progamm ein Browser, so kann man dann die Benutzerdaten dem Server einfach schicken (Zumindest theoretisch)
Wichtig dafür is auf jeden Fall der Quelltext der Site:
Wird per POST oder per GET geschickt?
Wie heißen die Eingabefelder?
Sind Cookies pflicht oder reicht auch eine SessionID?
Verfasst: 13.03.2009 15:15
von P1TBULL
Hi,
die Seite ist
www.comunio.de
Bisher hab ich das Webgadget nur benötigt um mich einzuloggen. Nachdem ich drin bin sehe ich die für mich wichtige News-Seite. Über den Button "Aktuelle News-Seite auswerten" wird die News-Html Datei lokal auf meinem Rechner gespeichert und die wichtigen Daten ausgelesen. Das funktioniert auch alles. Ich hab nur das Problem das ich mich immer erst von Hand einloggen muss.
LG
Verfasst: 13.03.2009 18:32
von Deluxe0321
Das Ganze läuft über HTTP-Post!
Code: Alles auswählen
#INTERNET_OPEN_TYPE_DIRECT = 1
#HTTP_ADDREQ_FLAG_ADD = $20000000
#HTTP_ADDREQ_FLAG_REPLACE = $80000000
#INTERNET_FLAG_SECURE = 0
#INTERNET_SERVICE_HTTP = 3
#INTERNET_DEFAULT_HTTP_PORT = 80
#HTTP_QUERY_COOKIE = 44
Structure HttpPostStructure
Host.s ;holding the hostname Do Not include http:// Or any other protocol indicator here
get_url.s ;Everything after the hostname of the server
post_data.s ;the Data that should be posted
result.s ;holds the reviced html
EndStructure
Procedure Send_HTTP_Post(*in.HTTPPostStructure)
Protected open_handle.i,connect_handle.i,request_handle.i,send_handle
Protected result.s,headers.s
Protected bytes_read.i,ReturnStatus.i
Protected total_read.i = 0
Protected UserAgent.s = "IDOPOST!"
Protected buffer.s = Space(1024)
;InputStructure
; Host.s holding the hostname Do NOT include http:// or any other protocol indicator here
; get_url.s Everything after the hostname of the server
; result.s Holds the result from the CGI/page
; post_data.s the data that should be posted
; result.s holds the reviced html
Debug *in\get_url
Debug *in\host
Debug *in\post_data.s
If *in
open_handle = InternetOpen_(UserAgent.s,#INTERNET_OPEN_TYPE_DIRECT,"","",0)
If open_handle
connect_handle = InternetConnect_(open_handle,*in\host,#INTERNET_DEFAULT_HTTP_PORT,"","",#INTERNET_SERVICE_HTTP,0,0)
If connect_handle
request_handle = HttpOpenRequest_(connect_handle,"POST",*in\get_url,"","",0,#INTERNET_FLAG_SECURE,0)
If request_handle
headers.s = "Content-Type: application/x-www-form-urlencoded" +Chr(13)+Chr(10)
HttpAddRequestHeaders_(request_handle,headers,Len(headers), #HTTP_ADDREQ_FLAG_REPLACE | #HTTP_ADDREQ_FLAG_ADD)
send_handle = HttpSendRequest_(request_handle,"",0,*in\post_data,Len(*in\post_data))
If send_handle
Repeat
InternetReadFile_(request_handle,@buffer,1024,@bytes_read)
result + Left(buffer,bytes_read)
buffer = Space(1024)
Until bytes_read=0
*in\result.s = result.s
ReturnStatus = #True
Else
ReturnStatus = -3
EndIf
Else
ReturnStatus = -2
EndIf
Else
ReturnStatus = -1
EndIf
Else
ReturnStatus = 0
EndIf
Else
ReturnStatus = 0
EndIf
If ReturnStatus < 0 Or ReturnStatus = #True
InternetCloseHandle_(open_handle)
EndIf
ProcedureReturn ReturnStatus
;- uncomment the following when you want to get the cookie data - not sure if it works or not.....
;buffer.s = Space(#MAX_PATH)
;headernum = 0
;length = Len(buffer)
;HttpQueryInfo_(request_handle, #HTTP_QUERY_COOKIE, @buffer, @length, @headernum)
;Debug buffer
EndProcedure
UserName.s = "User"
Password.s = "PWD"
;Testing
Define HttpPostStructure.HttpPostStructure
HttpPostStructure\host.s = "www.comunio.de"
HttpPostStructure\get_url.s = "login.phtml"
HttpPostStructure\post_data.s = "login="+UserName.s+"&pass="+Password.s+"&action=login&%3E%3E+Login_x=%3E%3E+Login"
Debug Send_HTTP_Post(@HTTPPostStructure)
Debug HttpPostStructure\result.s
habs nicht weiter getestet; will mich da nicht Registrieren.
Verfasst: 13.03.2009 22:32
von P1TBULL
Vielen Dank schonmal für deine Antwort, ich versteh aber leider gar nicht was da passiert. Kannst du mir das vielleicht etwas erläutern bzw. mir erklären wie ich damit an die html Datei gelange die nach dem Login Prozess geladen wird?
LG
P.S. so habe ich die Html-Datei die nach dem Login geladen wird auf lokal gespeichert um sie danach auszuwerten:
url.s = GetGadgetText(Webgadget)
URLDownloadToFile(url.s,getappdir()+"comunio.html")
Wenn Dir das hilft würde ich Dir auch über PN meine Login Daten zukommen lassen!
Verfasst: 14.03.2009 17:50
von Deluxe0321
Code: Alles auswählen
;unter dem bestehendem Code einfuegen
If OpenWindow(0,0,0,500,300,"BLA!",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
WebGadget(0,0,0,500,300,"")
;zeigen wir das zeug halt mal an ;)
SetGadgetItemText(0,#PB_Web_HtmlCode,HttpPostStructure\result.s)
While WindowEvent() : Wend
EndIf
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
Gruß Marv
Verfasst: 15.03.2009 00:08
von P1TBULL
Ah

Manchmal steh ich total auf dem Schlauch! Super Vielen Dank!!!!!
