Automatisches Navigieren auf Internetseiten



  • flenders schrieb:

    Versuche lieber direkt den entsprechenden HTTP_Request zu senden und lass den externen Browser ganz aus dem Spiel 🕶

    naja, klingt nett aber ich weiß nicht recht wie und was da drinnen stehen muss!? *g*

    will auf der seite:
    http://www.a1.net/CDA/login/login_user3/0,4421,786-786-1-html-de,00.html
    Benutzername: Nike
    Passwort: xyz
    reinschreiben.....

    cu



  • Das ist ja ein ganz normales Formular, also musst du einfach direkt den Post-Request hinschicken. Benutze mal die Forensuche - z.B. das hier könnte dir helfen 😉



  • ok, aber kann man nicht einfach in das formular in die eigabefelder was rein schreiben ohne das man post request verwendet, wenn ja wie???

    cu nike! 👍



  • Das geht nicht so einfach (wenn überhaupt - dafür müsstest du wohl eher eine Browser-Extension schreiben), denn zumindest im IE sind das keine extra Controls.



  • char passwort[256]={"deinpasswort"}; 
    char benutzerid[256]={"benutzerid"}; 
    size=sprintf( buffer, "POST http://www.klamm.de/partner/start_login.php HTTP/1.0\nAccept-Language: de\nContent-Type: application/x-www-form-urlencoded\nPragma: no-cache\nHost: www.klamm.de\nContent-Length: %d\n\nloginid=%s&passwd=%s\r\n",16+strlen(benutzerid)+strlen(passwort), benutzerid, passwort);
    

    kann mir mal jemand helfen? wohin send ich das passwort da auf wwww.a1.net
    dort hin:

    Host:http://asmp.a1.net/asmp/LoginMasterServlet/uxasms04?userRequestURL=http%253A%252F%252Fasmp.a1.net%252Fportal%252Flogin%253FRefererId%253D786-786-1-html-de&serviceRegistrationURL=&level=1
    

    ich weiß nit ob da zuerst das passwort oder benutzername übertragen wird??? hmmm

    cu



  • Die Reihenfolge ist afaik egal - nur die Namen der Formular-Felder musst du eben nachschauen. Wenn aber schon vor dem Login-Formular Sessions verwendet werden wird es schwierig, denn du brauchst eben eine möglichst gleichbleibende URL, an die das Formular versandt wird 😉



  • flenders schrieb:

    Die Reihenfolge ist afaik egal - nur die Namen der Formular-Felder musst du eben nachschauen. Wenn aber schon vor dem Login-Formular Sessions verwendet werden wird es schwierig, denn du brauchst eben eine möglichst gleichbleibende URL, an die das Formular versandt wird 😉

    Namen der Formular Felder:
    UserID
    Password

    dort wird das hingeschickt:
    https://oewassl.a1.net/cgi-bin/ivw-ssl/CP/service/login3

    das ja jetzt ein problem mit https???

    hm???

    frage zum example da:

    #include <stdio.h>
    #include <winsock.h>
    #include <windows.h>
    
    #pragma comment(lib, "wsock32.lib")
    
    int main()
    {
    	char Password[256]={"deinpasswort"}; 
    	char UserID[256]={"benutzerid"}; 
    	int len; 
    	len=sprintf( buffer, "POST https://oewassl.a1.net/cgi-bin/ivw-ssl/CP/service/login3 HTTP/1.0\nAccept-Language: de\nContent-Type: application/x-www-form-urlencoded\nPragma: no-cache\nHost: https://oewassl.a1.net\nContent-Length: %d\n\nloginid=%s&passwd=%s\r\n",16+strlen(UserID)+strlen(Password), UserID, Password);
    	send(Socket, buffer, len, 0);
    
    	return 0;
    }
    
    error:
    C:\temp\postrequest\main.cpp(12) : error C2065: 'buffer' : undeclared identifier
    C:\temp\postrequest\main.cpp(13) : error C2065: 'Socket' : undeclared identifier
    

    cu



  • Die Fehler sind klar: buffer musst du erst deklarieren und Speicher reservieren und den Socket öffnen (WSAStartup und dann socket) - siehe: MSDN: send()
    Aber wie das mit https abläuft weiß ich auch nicht 😞



  • flenders schrieb:

    Die Fehler sind klar: buffer musst du erst deklarieren und Speicher reservieren und den Socket öffnen (WSAStartup und dann socket) - siehe: MSDN: send()
    Aber wie das mit https abläuft weiß ich auch nicht 😞

    #include <stdio.h>
    #include "winsock2.h"
    
    int main()
    {
    	// Initialize Winsock
    	WSADATA wsaData;
    	int iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
    	if (iResult != NO_ERROR)
    		printf("Error at WSAStartup()\n");
    
    	//----------------------
    	// Create a SOCKET for connecting to server
    	SOCKET ConnectSocket;
    	ConnectSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    	if (ConnectSocket == INVALID_SOCKET) {
    		printf("Error at socket(): %ld\n", WSAGetLastError());
    		WSACleanup();
    		return 0;
    	}
    
    	char passwort[256]={"deinpasswort"}; 
    	char benutzerid[256]={"benutzerid"}; 
    	int len;
    	char buffer[32] = "Client: Sending data.";
    	len=sprintf( buffer, "POST http://www.klamm.de/partner/start_login.php HTTP/1.0\nAccept-Language: de\nContent-Type: application/x-www-form-urlencoded\nPragma: no-cache\nHost: www.klamm.de\nContent-Length: %d\n\nloginid=%s&passwd=%s\r\n",16+strlen(benutzerid)+strlen(passwort), benutzerid, passwort); 
    	send(ConnectSocket, buffer, len, 0);
    
    	return 0;
    }
    
    error:
    Kompilierung läuft...
    main.cpp
    Linker-Vorgang läuft...
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__send@16
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__WSACleanup@0
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__WSAGetLastError@0
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__socket@12
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__WSAStartup@8
    Debug/PostRequest.exe : fatal error LNK1120: 5 unaufgeloeste externe Verweise
    Fehler beim Ausführen von link.exe.
    

    hab das gemacht was du gesagt hast....aber was steht im buffer drinnen??? ka!
    warum bekomm ich die errors da?

    cu



  • nike schrieb:

    aber was steht im buffer drinnen??? ka!

    Den Buffer füllst du ja mit sprintf - aber mit 32 hast du ihn für das, was du nachher reinschreibst zu klein gemacht!

    nike schrieb:

    warum bekomm ich die errors da?

    Weil du vergessen hast Ws2_32.lib zu linken 😉



  • wenn ich das pragma dazu gebe dann sagt er:

    #pragma commment(lib, "Ws2_32.lib")
    
    Kompilierung läuft...
    main.cpp
    C:\PostRequest\main.cpp(5) : warning C4068: Unbekanntes Pragma
    Linker-Vorgang läuft...
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__send@16
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__WSACleanup@0
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__WSAGetLastError@0
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__socket@12
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__WSAStartup@8
    Debug/PostRequest.exe : fatal error LNK1120: 5 unaufgeloeste externe Verweise
    Fehler beim Ausführen von link.exe.
    

    ???



  • Lass mal bei comment das 3. m weg 😉



  • danke *gg* nit gesehn!!!!;-(

    wie kann ich jetzt die antwort des servers ausgeben lassen?

    cu



  • Hab sowas noch nie gemacht, aber vielleicht hilft dir dieser Thread 🕶



  • Mit der Funktion receive() auf antwort warten. Die funktion receive ist ne sog. 'Blocking function' und returned nicht bis eine antwort über den angegebenen socket kommt.
    Mach das in nem separaten Thread oder seh dir die select() function genauer an. Ansonsten bklockierst du dein Programm bis receive returned.

    Mfg.



  • cout << "Antwort des Servers: \n";
    
    while( bytesRecv == SOCKET_ERROR ) {
    	bytesRecv = recv( ConnectSocket, recvbuf, sizeof(recvbuf), 0 );
    	cout << buffer;
    
    	if ( bytesRecv == 0 || bytesRecv == WSAECONNRESET ) {
    		cout << "Connection Closed.\n";
    		break;
    	}
    
    	cout << "Bytes Recv: " << bytesRecv;
    }
    

    irgendwie bekomm ich da keine antwort, kommt nit mal aus der schleife raus;-(

    cu



  • int bytesRecv = SOCKET_ERROR;
    


  • ich bekomm wohl was zurück aber das ist das gleiche was ich schicke...hmmm??????

    bekomm das zurück:
    POST https://oewassl.a1.net/cgi-bin/ivw-ssl/CP/service/login3 HTTP/1.0
    Accept-Language: de
    Content-Type: application/x-www-form-urlencoded
    Pragma: no-cache
    Host: https://oewassl.a1.net
    Content-Length: 33

    loginid=name&passwd=xyz

    das kanns ja nit sein???



  • es wird ein servlet aufgerufen hab ich grad rausgefunden und dem werden das passwort+benutzername mitgeteilt...

    https://asmp.a1.net/asmp/ProcessLoginServlet/uxasms08/uxasms07

    was macht man in diesem fall?? hmm?

    cu



  • ich machs nun bissal anders schick einfach gleich die sms per post request...

    schaut mal da:
    http://www.rafb.net/paste/results/Hscw2T26.html

    wie schaut der post request beim senden einer sms aus???

    so:

    char msg[256]={"Sers du"}; 
        char an1[256]={"43676"}; 
    	char an2[256]={"123456"};
        int len; 
        len=sprintf(buffer, "POST http://www.a1.net/sms_check_tr/1,2855,14-813-html-de,00.html HTTP/1.0\nAccept-Language: de\nContent-Type: no-cache, must-revalidate\nPragma: no-cache\nHost: http://www.a1.net\nContent-Length: %d\n\nan1=%s&an2=%s&msg=%s\r\n",16+strlen(an1)+strlen(an2)+strlen(msg), an1, an2, msg);
    

    bitte infos aus der oberen url entnehmen!!!

    ich weiß aber nit wie gross ist content-length??? was is content-type?

    cu:D


Anmelden zum Antworten