Ergebnis 1 bis 4 von 4

Baum-Darstellung

  1. #1
    Capt'n Crunch Avatar von till7
    Registriert seit
    10.07.2008
    Beiträge
    995

    Standard [C++] Admin Finder

    Hallo

    Da ich mich seit einiger Zeit mit C++ beschäftige, wollte ich in dieser Section auch mal "probieren" etwas zu posten.

    "Probieren" in dem Sinne, da ich nicht genau weiss ob der Quellcode wirklich gut ist. Darum riskiere ich es trotzdem mal.

    Also das Programm liest eine Textdatei (*.txt) ein und überprüft die vorher eingegebene URL mit den in der .txt stehenden Pfade.

    So z.B -> http://bild.de wird eingegeben.
    Dannach wird einfach /admin, /irgenwas aus der .txt an die URL geschrieben.

    Dannach wird überprüft ob der Server 200 zurück gibt (http://de.wikipedia.org/wiki/HTTP-Statuscode).

    Wenn ja wird die URL ausgegeben. Am Ende wird noch eine "Statistik" angezeigt. Wiviele URL's gefunden wurden.

    Also wie gesagt hier der Code. Auf konstruktive und hilfreiche Kritik bin ich immer froh

    Als Compiler wurde der GNU GCC verwendet und als IDE, Code::Blocks.



    Code:
    #include <iostream>
    #include <fstream>
    #include <wininet.h>
    
    using namespace std;
    
    bool http_request(string url){
        bool erreichbar = false;
    
        DWORD dwSize = 0;
        char lpOutBuffer[4];
    
        HINTERNET hRootHandle, hOpenUrlHandle;
        hRootHandle = InternetOpen(TEXT("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"),INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0);
        hOpenUrlHandle = InternetOpenUrl(hRootHandle,url.c_str(),NULL,0,INTERNET_FLAG_RAW_DATA,0);
    
        dwSize = sizeof(lpOutBuffer);
        HttpQueryInfo(hOpenUrlHandle,HTTP_QUERY_STATUS_CODE,(LPVOID)lpOutBuffer,&dwSize,NULL);
    
        if(strcmp(lpOutBuffer, "200") == 0){
            erreichbar = true;
        }else{
            erreichbar = false;
        }
    
        InternetCloseHandle(hOpenUrlHandle);
        InternetCloseHandle(hRootHandle);
    
        if(erreichbar){
            return true;
        }else{
            return false;
        }
    }
    
    void admin_finder(string url,string pfad){
      string line, adresse;
    
      int gefunden = 0;
      int alle = 0;
    
      ifstream myfile(pfad.c_str());
      if(myfile.is_open()){
        while(myfile.good()){
          getline(myfile,line);
    
            adresse = url + line;
    
            //Check URL
            if(http_request(adresse)){
              cout << "\n[OK]\t" << adresse; //Nur gefundene ausgeben
              gefunden++;
            }
    
            alle++;
        }
    
        myfile.close();
      }
    
      cout << endl << endl << gefunden << " / " << alle << " URL's erreichbar" << endl;
    }
    
    int main()
    {
        string url, datei;
    
        cout << "Bitte URL eingeben: ";
        cin  >> url;
        cout << "Bitte eine Textdatei auswählen: ";
        cin  >> datei;
    
        if(ifstream(datei.c_str())){
            admin_finder(url,datei);
        }else{
            cout << "Datei konnte nicht gefunden werden ;(";
        }
    
        return 0;
    }
    Ihr müsst noch die libwininet.a library linken damit das Ganze funktioniert.

    MfG
    gestohlen.

  2. Folgende Benutzer haben sich für diesen Beitrag bedankt:

    Rastajan (29.10.2011)

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •