Anmelden auf Internetseite über Purebasic
Anmelden auf Internetseite über Purebasic
Hallo
Ich bin auf der Suche nach einer Möglichkeit mich im Internet auf einer Seite automatisch anmelden zu können.
Ziel ist es verschiedene Internetseiten mit Purebasic auszulesen.
Das Problem: (xyx.de ist natürlich fake, nur als Beispiel)
Die Seite:www.xyx.de/x/demo.htm liegt auf einem mit Passwort geschützen Html Server. Wenn ich Seite mit Purebasic über ReceiveHTTPFile auslesen will komme ich natürlich nicht auf die Seite weil die
Passwortabfrage zwischengeschaltet ist.
Das Passwort ist vorhanden. Mann kann die Startseite http://www.xyx.de aufrufen, doch hier ist die Passwortanfrage drinn. Gibt es eine Möglichkeit mit Purbasic ein Passwort an die Seite zu senden??
mfg. Amiga123
Ich bin auf der Suche nach einer Möglichkeit mich im Internet auf einer Seite automatisch anmelden zu können.
Ziel ist es verschiedene Internetseiten mit Purebasic auszulesen.
Das Problem: (xyx.de ist natürlich fake, nur als Beispiel)
Die Seite:www.xyx.de/x/demo.htm liegt auf einem mit Passwort geschützen Html Server. Wenn ich Seite mit Purebasic über ReceiveHTTPFile auslesen will komme ich natürlich nicht auf die Seite weil die
Passwortabfrage zwischengeschaltet ist.
Das Passwort ist vorhanden. Mann kann die Startseite http://www.xyx.de aufrufen, doch hier ist die Passwortanfrage drinn. Gibt es eine Möglichkeit mit Purbasic ein Passwort an die Seite zu senden??
mfg. Amiga123
Pure Basic 4.60 Vollversion
http://www.Sundisp.de
http://www.Sundisp.de
- NicTheQuick
- Ein Admin
- Beiträge: 8807
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Anmelden auf Internetseite über Purebasic
Ist es eine HTAccess-Passwortabfrage oder ein einfacher Login über POST und einem Cookie?
Re: Anmelden auf Internetseite über Purebasic
Hi
Bin mir nicht sicher, aber ich glaube Post und Cookie.
Gruss Amiga123
Bin mir nicht sicher, aber ich glaube Post und Cookie.
Gruss Amiga123
Pure Basic 4.60 Vollversion
http://www.Sundisp.de
http://www.Sundisp.de
- NicTheQuick
- Ein Admin
- Beiträge: 8807
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Anmelden auf Internetseite über Purebasic
Dazu musst du natürlich erst mal herausfinden, welche Daten gesendet werden müssen, damit ein erfolgreicher Login stattfinden kann. Wenn du das hast, findest du hier im Forum genügend Codes, die dir eine Seite per POST herunterladen können. Ich habe nur keine Lust einen derartigen Thread jetzt zu suchen.
Als Rückgabe eines solchen Requests wird dann der Cookie mitgeliefert, den du dir für die Session aufheben musst und bei jedem weiteren GET oder POST mitsenden musst.
Als Rückgabe eines solchen Requests wird dann der Cookie mitgeliefert, den du dir für die Session aufheben musst und bei jedem weiteren GET oder POST mitsenden musst.
Re: Anmelden auf Internetseite über Purebasic
Danke dir
Habe das passende gefunden. Wenn man weiß wonach man suchen muss, findet man es auch.
http://www.purebasic.fr/german/viewtopi ... =webgadget
Gruß Amiga123
Habe das passende gefunden. Wenn man weiß wonach man suchen muss, findet man es auch.
http://www.purebasic.fr/german/viewtopi ... =webgadget
Gruß Amiga123
Pure Basic 4.60 Vollversion
http://www.Sundisp.de
http://www.Sundisp.de
- Tur0k
- Beiträge: 187
- Registriert: 16.02.2009 21:41
- Computerausstattung: 4.00 GB RAM, 2x 2.20Ghz, 340GB+500GB
Re: Anmelden auf Internetseite über Purebasic
Hatte mal die Frage auch gestellt, und folgendes hat mir geholfen:
http://www.purebasic.fr/german/viewtopi ... 12#p263212
HTTP |Request |Post
http://www.purebasic.fr/german/viewtopi ... 12#p263212
HTTP |Request |Post
buuh* 

Re: Anmelden auf Internetseite über Purebasic
Hallo
Also mit dem Anmelden klappt das jetzt wunderbar.
Ich habe aber noch folgendes Problem. Wenn ich die folgenden Adresse öffne geht das über Webgadget einwandfrei.
Link:"http://192.168.1.168/plant_current.htm? ... 0TL-5000TL"
Versuche ich das ganze über
Geht es nicht. Ich schätze mal es liegt an den Parametern nach dem .htm. Wird nur "http://192.168.1.168/plant_current.htm" eingegeben kommen schon Daten allerdings nicht die richtigen.
Gibt es eine Möglichkeit doch noch an die Daten zu kommen. ???
Gruss Amiga123
Also mit dem Anmelden klappt das jetzt wunderbar.
Ich habe aber noch folgendes Problem. Wenn ich die folgenden Adresse öffne geht das über Webgadget einwandfrei.
Link:"http://192.168.1.168/plant_current.htm? ... 0TL-5000TL"
Versuche ich das ganze über
Code: Alles auswählen
If ReceiveHTTPFile("http://192.168.1.168/plant_current.htm?DevKey=WR34MS03:1100106490&DevClass=Sunny%20Boy%203300TL-5000TL", Filename$)
Debug "gefunden"
Else
Debug "nicht gefunden"
EndIf
Gibt es eine Möglichkeit doch noch an die Daten zu kommen. ???
Gruss Amiga123
Pure Basic 4.60 Vollversion
http://www.Sundisp.de
http://www.Sundisp.de
Re: Anmelden auf Internetseite über Purebasic
tausch mal den Doppelpunkt nach WR34MS03 durch %3A aus:amiga123 hat geschrieben:Code: Alles auswählen
If ReceiveHTTPFile("http://192.168.1.168/plant_current.htm?DevKey=WR34MS03:1100106490&DevClass=Sunny%20Boy%203300TL-5000TL", Filename$)
Code: Alles auswählen
If ReceiveHTTPFile("http://192.168.1.168/plant_current.htm?DevKey=WR34MS03%3A1100106490&DevClass=Sunny%20Boy%203300TL-5000TL", Filename$)
a²+b²=mc²
Re: Anmelden auf Internetseite über Purebasic
Danke Kiffi
Das war das Problem.
Leider habe ich mich mit dem Login zu früh gefreut. Das geht immer noch nicht richtig. Ich komme immer auf der Startseite raus. Wenn ich mich mit dem Firefox einloggen gehen jetzt allerdings mit dem Login auch die gesperrten Seite. Sobald über den Firefox ausgeloggt , sind die gesperrten Seiten wieder zu. Seltsam ???
Habe mal den Quellcode der Loginseite angehängt und den geänderten Muster Purebasic Code.
HTML Seite:
Purebasic Musterquellcode geändert.
Vielleicht weiß von euch jemand woran es liegen könnte.
Gruß Amiga123
Das war das Problem.


Habe mal den Quellcode der Loginseite angehängt und den geänderten Muster Purebasic Code.
HTML Seite:
Code: Alles auswählen
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Sunny WebBox</title>
<link href="css/style.css" type="text/css" rel="stylesheet">
<link href="css/home.css" type="text/css" rel="stylesheet">
<script type="text/javascript">
<!--
top.frames[2].location.reload();
-->
</script>
<script type="text/javascript" src="script/json.js"></script>
<script type="text/javascript" src="script/prototype.js"></script>
<script type="text/javascript" src="script/traffic.js"></script>
<script type="text/javascript" src="script/home.js"></script>
<script type="text/javascript">
<!--
function checkFrameset()
{
if(self.parent.name != "mainFrame")
{
top.location = "index.html";
}
}
-->
</script>
</head>
<body>
<script type="text/javascript">
<!--
checkFrameset();
-->
</script>
<table class="home-layout-table" id="Table1">
<tr>
<td align="center" class="tdcol0">
<img src="image/webbox.gif" alt="SunnyWebBox">
</td>
<td class="tdcol1">
<table id="OvTbl" class="home-overview-table">
<tr class="evenrow">
<td class="tdcol0">Leistung:</td>
<td id="Power" class="tdcol1">0 W</td>
</tr>
<tr class="oddrow">
<td class="tdcol0">Tagesertrag:</td>
<td id="DailyYield" class="tdcol1">0 Wh</td>
</tr>
<tr class="evenrow">
<td class="tdcol0">Gesamtertrag:</td>
<td id="TotalYield" class="tdcol1">23,34 MWh</td>
</tr>
</table>
<form action="login" target="mainFrame" method="post">
<table class="home-control-table" id="Table3">
<tr>
<td class="tdcol0">Sprache:</td>
<td class="tdcol1" colspan="2"><select name="Language" size="1">
<option Value="cs">Čeština </option>
<option Value="de" selected>Deutsch </option>
<option Value="en">English </option>
<option Value="es">Español </option>
<option Value="fr">Français </option>
<option Value="it">Italiano </option>
<option Value="nl">Nederlands </option>
<option Value="pt">Português </option>
<option Value="el">Ελληνικά </option>
<option Value="ko">한국어 </option>
</select>
</td>
</tr>
<tr>
<td height="5px"></td>
</tr>
<tr>
<td class="tdcol0">Passwort:</td>
<td class="tdcol1"><input name="Password" class="input-text" type="password" size="32"></td>
</tr>
<tr>
<td></td>
<td class="buttonrow"><input name="ButtonLogin" Value="Anmelden" class="input-submit" type="submit" size="8"></td>
</tr>
<tr>
<td class="messagerow" colspan="2"></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</body>
</html>
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
InitNetwork()
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)
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
EndProcedure
UserName.s = ""
Password.s = "sma"
; UserName wird nicht benötigt. auch index.html ist nicht nötig.
;Testing
Define HttpPostStructure.HttpPostStructure
HttpPostStructure\Host.s = "192.168.1.168"
HttpPostStructure\get_url.s = ""
Debug "Login 0"
HttpPostStructure\post_data.s = "Password="+Password.s+"&action=login&%3E%3E+Login" ;
;Orginal Login
;HttpPostStructure\post_data.s = "login="+UserName.s+"&pass="+Password.s+"&action=login&%3E%3E+Login_x=%3E%3E+Login"
Delay(1000)
ip$="http://192.168.1.168/plant_devices_treefrm.htm"
;- Geräte auslesen "http://192.168.1.168/plant_devices_treefrm.htm"
Filename$="c:\Testseite.html"
If ReceiveHTTPFile(ip$, Filename$)
Debug "gefunden"
Debug "gefunden"
Else
Debug "nicht gefunden"
EndIf
If ReadFile(0, "c:\webbox.txt") ; wenn die Datei geöffnet werden konnte, setzen wir fort...
While Eof(0) = 0 ; sich wiederholende Schleife bis das Ende der Datei ("end of file") erreicht ist
a$ = ReadString(0) ; Zeile für Zeile im Debugger-Fenster anzeigen
Debug a$
finde = FindString(a$, "Power", 1)
If finde > 0
x = FindString (a$, ">", 1)
y = FindString (a$, "<", x + 1)
aktuell$ = Mid(a$, x + 1, ((y - 1) - x))
EndIf
Wend
EndIf
Gruß Amiga123
Pure Basic 4.60 Vollversion
http://www.Sundisp.de
http://www.Sundisp.de
Re: Anmelden auf Internetseite über Purebasic
Soweit wie ich das sehe, fehlt dir die Cookieverarbeitung. Nach dem Login bekommst du,
per header nen Cookie mit den Daten, diese musst du immer zurueck senden, sonst weist
dich der Server ab.
per header nen Cookie mit den Daten, diese musst du immer zurueck senden, sonst weist
dich der Server ab.