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