Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Proxy Server per batch überprüfen?

Frage Entwicklung Batch & Shell

Mitglied: Neomatic

Neomatic (Level 1) - Jetzt verbinden

12.10.2009, aktualisiert 22:23 Uhr, 7358 Aufrufe, 6 Kommentare

Hallo liebe Community,

ich habe ein Liste voll mit freien Proxy Servern und möchte die nun auf ereichbarket und Geschwindigkeit prüfen. Doch leider bin ich im Thema Batch Scripting nicht gerade ein Profi.

Um einen Proxy auf erreicbarkeit zu prüfen habe ich dieses Script gebastelt, was jedoch so seine Macken hat.

01.
@echo off 
02.
cls 
03.
 
04.
:test 
05.
echo. 
06.
echo  Teste Proxy... 
07.
for /f "tokens=1 delims=:" %%a in ('findstr /n . proxyliste.txt') do set zeilen=%%a 
08.
set /a rnd=%random%%%zeilen%+1 
09.
for /f "tokens=1* delims=:" %%a in ('findstr /n . proxyliste.txt^|findstr "^%rnd%:"') do set proxy=%%b 
10.
set ip=%proxy% 
11.
set ip=%ip:~0,15% 
12.
ping -n 2 -w 5000  %ip% >> ip-temp 
13.
if errorlevel 1 goto ping-fail 
14.
 
15.
echo. 
16.
echo  Proxy %ip% erreichbar... 
17.
echo %proxy% >>proxy-ok.txt 
18.
echo %proxy% >>working-proxy.txt 
19.
for /f %%k in ('type proxy-ok.txt.txt') do FIND /V "%%k" proxyliste.txt > proxyliste-new.txt 
20.
del /q proxyliste.txt 
21.
ren proxyliste-new.txt proxyliste.txt 
22.
del /q proxy-ok.txt  
23.
del /q ip-temp 
24.
goto test 
25.
 
26.
:ping-fail 
27.
echo.  
28.
echo  Proxy %ip% nicht erreichbar...  
29.
echo %proxy% >> proxy-tot.txt 
30.
for /f %%k in ('type proxy-tot.txt.txt') do FIND /V "%%k" proxyliste.txt > proxyliste-new.txt 
31.
del /q proxyliste.txt 
32.
ren proxyliste-new.txt proxyliste.txt 
33.
del /q proxy-tot.txt  
34.
del /q ip-temp 
35.
goto test 
36.
 
Dieses Script verarbeitet die Proxyliste jedoch nicht zeilenweise, sondern zufällig (anderst habe ich es nicht zum laufen bekommen, wie gesagt, bin darin kein Profi). Daher läuft das Script natürlich endlos. Mir wäre es allerdings zeilenweise lieber. Wenn mir da jemand helfen könnte.

Ist es eigentlich auch möglich, per batch den Proxy auf seine Geschwindigkeit zu überprüfen? Denn viele Server in der Liste sind doch recht langsam.

Wäre nett wenn mir da jemand helfen könnte, denn so langsam steh ich echt auf dem schlauch.


Gruß

Neomatic
Mitglied: bastla
12.10.2009 um 22:56 Uhr
Hallo Neomatic und willkommen im Forum!

Eigentlich sollte Folgendes (ist allerdings ungetestet) genügen:
01.
@echo off & setlocal enabledelayedexpansion 
02.
echo. 
03.
echo  Teste Proxy... 
04.
for /f "delims=" %%a in (proxyliste.txt) do ( 
05.
    set proxy=%%a 
06.
    set ip=!proxy! 
07.
    set ip=!ip:~0,15! 
08.
    ping -n 2 -w 5000  !ip! 
09.
    if errorlevel 1 ( 
10.
        echo.  
11.
        echo  Proxy !ip! nicht erreichbar...  
12.
        echo !proxy! >>proxy-tot.txt 
13.
    ) else ( 
14.
        echo. 
15.
        echo  Proxy !ip! erreichbar... 
16.
        echo !proxy! >>proxy-ok.txt 
17.
        echo !proxy! >>working-proxy.txt 
18.
19.
)
Grüße
bastla
Bitte warten ..
Mitglied: Neomatic
13.10.2009 um 16:33 Uhr
Hallo,

vielen Dank, das script funktioniert perfekt.

Verstehe ich das richtig, das alle Befehle die nach der for schleife kommen in eine Subroutine gepackt werden und diese dann für jede zeile in der Proxy.txt angewandt werden?

Dann könnte man ja hingehen und eine weite for schleife einfügen, wo der Proxy eingetragen wird, eine URL angesurft wird und in der Webseite nach einem bestimmten Text gesucht wird. Wenn der Text dann gefunden wird, wird der Proxy ein eine weitere Liste eingetragen.

Ist soetwas zu realisieren?

Aber zumindest schonmal vielen Dank für das script.

Gruß

Neomatic
Bitte warten ..
Mitglied: bastla
13.10.2009 um 16:49 Uhr
Hallo Neomatic!
Verstehe ich das richtig, das alle Befehle die nach der for schleife kommen in eine Subroutine gepackt werden und diese dann für jede zeile in der Proxy.txt angewandt werden?
Jein - es wird für jede Zeile der "proxyliste.txt" der Teil nach dem "do" ausgeführt - dieser Teil besteht aber nur "optisch" aus mehreren Zeilen - tatsächlich ist es (wegen der Klammern) eigentlich nur eine einzige (lange ) Zeile (weshalb auch "delayedExpansion" verwendet werden muss).

Eine "echte" Subroutine-Version würde so aussehen:
01.
@echo off & setlocal 
02.
echo. 
03.
echo  Teste Proxy... 
04.
for /f "delims=" %%a in (proxyliste.txt) do call :ProcessProxy "%%a" 
05.
goto :eof 
06.
 
07.
:ProcessProxy 
08.
set "proxy=%~1" 
09.
set ip=%proxy% 
10.
set ip=%ip:~0,15% 
11.
ping -n 2 -w 5000  %ip% 
12.
if errorlevel 1 ( 
13.
    echo.  
14.
    echo  Proxy %ip% nicht erreichbar...  
15.
    echo %proxy% >>proxy-tot.txt 
16.
) else ( 
17.
    echo. 
18.
    echo  Proxy %ip% erreichbar... 
19.
    echo %proxy% >>proxy-ok.txt 
20.
    echo %proxy% >>working-proxy.txt 
21.
22.
goto :eof
Hier wird tatsächlich bei jedem Schleifendurchlauf das Unterprogramm ":ProcessProxy" aufgerufen, wobei sich dieses wie ein neuer Batch verhält (und daher zB die als Parameter übergebene Zeile der "proxyliste.txt" als %1 übernimmt).

In diesem Unterprogramm könntest Du zB auch if errorlevel 1 wieder mit goto :ping-fail verwenden - Du musst nur dafür sorgen, dass jeder Zweig mit einem goto :eof (für den Rücksprung) endet und auch das "Hauptprogramm" mit einem goto :eof abschließen, damit nicht nach der Schleife nochmals das Unterprogramm durchlaufen wird.

Grüße
bastla
Bitte warten ..
Mitglied: Neomatic
14.10.2009 um 14:14 Uhr
Hallo bastla,

OK dann kann ich damit mal versuchen, den URL Check über den Proxy zu realisieren.


Aber noch eine Sache......


Ich muss bis jetzt die IP Adressen in der Proxy.txt immer in einem bestimmten Format speichern:

01.
211.138.124.229:0080 
02.
212.53.5.43    :80       
03.
200.7.196.141  :80       
04.
58.240.237.32  :80       
05.
120.143.250.8  :80       
06.
....
Sprich, ich muss darauf achten, dass vor dem doppelpunkt 15 Zeichen sind (falls weniger mit leerzeichen auffüllen). Da ich hier aber eine Liste mit knapp 2000 IP Adressen habe, würde das sehr lange dauern bis ich alle formatiert habe. Ginge das auch irgendwie zu automatisieren (mit VBS sollte es gehen, aber da kenn ich mich überhaupt nicht aus) ?


Vielen Dank für eure Hilfe.......


Gruß

Neomatic
Bitte warten ..
Mitglied: bastla
14.10.2009 um 15:05 Uhr
Hallo Neomatic!

Da Du ja den Doppelpunkt als Trennzeichen zur Verfügung hast, kannst Du einfach mit
for /f "tokens=1,2 delims=:" %%a in (proxyliste.txt) do call :ProcessProxy %%a %%b
auslesen und dann Adresse und Port als %1 und %2 im Unterprogramm übernehmen.

Die Anführungszeichen um "%%a" und "%%b" habe ich hier weggelassen, da Adresse bzw Port ja ohnehin keine Leerzeichen beinhalten.

Grüße
bastla
Bitte warten ..
Mitglied: Neomatic
14.10.2009 um 20:30 Uhr
Hallo,


so nun habe ich das Script fertig und es funktioniert bestens.

Hier das Script:

01.
@echo off & setlocal enabledelayedexpansion  
02.
cls 
03.
set Countall=0 
04.
set countping=0 
05.
set countok=0 
06.
echo. 
07.
echo    *******************                                                            
08.
echo    *  ProxyCheck v2  *                                        
09.
echo    *******************                                        
10.
echo.                                                                                                               
11.
echo  Dieses Script ueberprueft alle Proxy Server in der Datei 
12.
echo  "Proxy.txt" und schreibt diese bei Tauglichkeit in die  
13.
echo  Datei "working-proxy.txt". 
14.
echo. 
15.
if exist Proxy.txt goto start 
16.
echo. 
17.
echo  Datei "Proxy.txt" nicht gefunden. Programm wird beendet! 
18.
echo. 
19.
wait 5 
20.
exit 
21.
 
22.
:start 
23.
echo. 
24.
wait 2 
25.
echo.  
26.
echo  Teste Proxy-Server...  
27.
 
28.
for /f "tokens=1,2 delims=:" %%a in (Proxy.txt) do call :ProcessPing %%a %%b 
29.
if exist proxy-online.txt type proxy-online.txt >>proxy-ping-ok-%date%.txt 
30.
echo. 
31.
echo. Proxy-Server auf erreichbarkeit geprueft... 
32.
echo. 
33.
echo  Pruefe Proxy-Server auf tauglichkeit... 
34.
for /f "tokens=1,2 delims=:" %%a in (proxy-online.txt) do call :ProcessReq %%a %%b 
35.
 
36.
 
37.
echo. 
38.
echo  Durchlauf beendet.  
39.
echo.                                                           >>Logs/Log-%date%.txt 
40.
echo      ProxyCheck v2                                         >>Logs/Log-%date%.txt 
41.
echo    -----------------                                       >>Logs/Log-%date%.txt 
42.
echo.                                                           >>Logs/Log-%date%.txt 
43.
echo %date% %time:~0,8%                                         >>Logs/Log-%date%.txt 
44.
echo.                                                                 >>Logs/Log-%date%.txt 
45.
echo  Es wurden !countall! Proxies geprueft:                          >>Logs/Log-%date%.txt  
46.
echo.                                                                 >>Logs/Log-%date%.txt 
47.
echo  !countping! haben geantwortet....                               >>Logs/Log-%date%.txt 
48.
echo.                                                                 >>Logs/Log-%date%.txt 
49.
echo  !countok! funktionieren...                                      >>Logs/Log-%date%.txt 
50.
echo.                                                                 >>Logs/Log-%date%.txt 
51.
echo.                                                         >>Logs/Log-%date%.txt 
52.
echo  Funktionierende Proxies:                                >>Logs/Log-%date%.txt 
53.
echo --------------------------                               >>Logs/Log-%date%.txt 
54.
echo.                                                         >>Logs/Log-%date%.txt 
55.
type working-proxy-%date%.txt                                 >>Logs/Log-%date%.txt 
56.
echo.                                                         >>Logs/Log-%date%.txt 
57.
echo.                                                         >>Logs/Log-%date%.txt   
58.
echo  Erreichbare Proxies:                                    >>Logs/Log-%date%.txt 
59.
echo ----------------------                                   >>Logs/Log-%date%.txt 
60.
echo.                                                         >>Logs/Log-%date%.txt 
61.
type  proxy-ping-ok-%date%.txt                                >>Logs/Log-%date%.txt 
62.
echo.                                                         >>Logs/Log-%date%.txt 
63.
echo.  
64.
echo  Es wurden !countall! Proxies geprueft:                          
65.
echo.                                                                  
66.
echo  !countping! haben geantwortet....                            
67.
echo.                                                                  
68.
echo  !countok! funktionieren...                                
69.
echo.                                                               
70.
echo. 
71.
echo.  
72.
set /p exit=Mit beliebiger Taste Programm beenden! 
73.
echo. 
74.
del /q Proxy.txt 
75.
echo. >>Proxy.txt 
76.
if exist proxy-online.txt del /q proxy-online.txt 
77.
goto :eof 
78.
 
79.
:ProcessPing 
80.
set proxy=%1:%2 
81.
set ip=%1 
82.
set /a countall=!countall! + 1 
83.
ping -n 2 -w 5000  !ip! >>ip-temp 
84.
if errorlevel 1 (  
85.
    echo.   
86.
    echo  Proxy !ip! nicht erreichbar...   
87.
    del /q ip-temp 
88.
 ) else (  
89.
    echo.  
90.
    echo  Proxy !ip! erreichbar...  
91.
    del /q ip-temp 
92.
    echo !proxy! >>proxy-online.txt 
93.
    set /a countping=!countping! + 1 
94.
    )  
95.
goto :eof 
96.
 
97.
 
98.
:ProcessReq 
99.
set proxy=%1:%2 
100.
set ip=%1 
101.
set port=%2 
102.
set http_proxy=http://!proxy! 
103.
set https_proxy=https://proxy! 
104.
set ftp_proxy=ftp://proxy! 
105.
wget -q --proxy=on -t 1 --timeout=15 http://www.showmemyip.com/ 
106.
if not exist index.html echo  >>index.html 
107.
findstr /c:"GetIPAddress" index.html >>temp 
108.
if errorlevel 1 ( 
109.
    echo.   
110.
    echo  Proxy !ip! wird verworfen...  
111.
    if exist index.html del /q index.html 
112.
    if exist temp del /q temp 
113.
  ) else ( 
114.
      echo. 
115.
      echo  Proxy !ip! funktioniert :D ... 
116.
      if exist temp del /q temp 
117.
      if exist index.html del /q index.html 
118.
      echo !proxy! >>working-proxy-%date%.txt 
119.
      set /a countok=!countok! + 1  
120.
      )       
121.
goto :eof 
122.
 

95% der Server die am Schluss als funktionierend eingestuft wurden, sind erreichbar und funktionieren.

Vielen Dank für deine Hilfe.


Gruß

Neomatic
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Firewall
gelöst Proxy Server für Windows (4)

Frage von It-ogut zum Thema Firewall ...

Outlook & Mail
gelöst Outlook 2013 + Exchange 2013 und Proxy Server (4)

Frage von derandi87 zum Thema Outlook & Mail ...

Datenbanken
MS-SQL-Server + T-SQL+Batch (4)

Frage von kallewirsch zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...