Automatisches Navigieren auf Internetseiten
-
kann man sowas realisieren:
ich hab einen text in einer textdatei, den will ich über eine internetseite also per sms verschicken...
1.) programm sollte den explorer aufmachen: www.a1.net
2.) dann müsste das programm automatisch da in 2 eingabefelder meinen login daten schreiben, und die maus sollte auf den login button klicken
3.) dann den text von der textdatei in den message body kopieren
4.) sollte da programm die richtige handynummer ins feld schreiben und dann mit der maus auf senden gehn;-)ist das möglich?
-
hi leute!
wie kann ich zu einer bestimmten adresse surfen?
wie heisst da das hwnd???#include <windows.h> #include <string> using namespace std; int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow) { ShellExecute(NULL,"open", "C:\\Programme\\Internet Explorer\\IEXPLORE.EXE",NULL,NULL,SW_SHOWNORMAL); HWND hWndInternet_Explorer = FindWindow("Internet Explorer",NULL); HWND hWndEdit = FindWindowEx(hWndInternet_Explorer,NULL,"Edit",NULL); string text = "www.c-plusplus.net"; // Adresse senden SendMessage(hWndEdit ,WM_SETTEXT,0,(LPARAM)text.c_str()); // Enterdruck simulieren SendMessage(hWndEdit ,WM_SETTEXT,0,(LPARAM)0x13); return 0; }
-
den browser navigiere ich nun so:
// Browser auf www.a1.net navigieren keybd_event(VK_SHIFT, 0, 0, 0); // 'Shift' drücken ShellExecute(NULL, "open", "http://www.a1.net/CDA/login/login_user3/0,4421,786-786-1-html-de,00.html", "", NULL, SW_SHOW); Sleep(0); keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0); //'Shift' loslassen
aber wie kann ich da was ins feld meinen benutzernamen und passwort ins feld mit winapi schreiben??? bitte um hilfe!!!!!!!
cu
-
@flenders: kann ja auch nur irgendwie mit SendMessage funzen??
cu
-
Versuche lieber direkt den entsprechenden HTTP_Request zu senden und lass den externen Browser ganz aus dem Spiel
-
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
Passworddort wird das hingeschickt:
https://oewassl.a1.net/cgi-bin/ivw-ssl/CP/service/login3das 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.