Proxy Server per batch überprüfen?
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.
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
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.
@echo off
cls
:test
echo.
echo Teste Proxy...
for /f "tokens=1 delims=:" %%a in ('findstr /n . proxyliste.txt') do set zeilen=%%a
set /a rnd=%random%%%zeilen%+1
for /f "tokens=1* delims=:" %%a in ('findstr /n . proxyliste.txt^|findstr "^%rnd%:"') do set proxy=%%b
set ip=%proxy%
set ip=%ip:~0,15%
ping -n 2 -w 5000 %ip% >> ip-temp
if errorlevel 1 goto ping-fail
echo.
echo Proxy %ip% erreichbar...
echo %proxy% >>proxy-ok.txt
echo %proxy% >>working-proxy.txt
for /f %%k in ('type proxy-ok.txt.txt') do FIND /V "%%k" proxyliste.txt > proxyliste-new.txt
del /q proxyliste.txt
ren proxyliste-new.txt proxyliste.txt
del /q proxy-ok.txt
del /q ip-temp
goto test
:ping-fail
echo.
echo Proxy %ip% nicht erreichbar...
echo %proxy% >> proxy-tot.txt
for /f %%k in ('type proxy-tot.txt.txt') do FIND /V "%%k" proxyliste.txt > proxyliste-new.txt
del /q proxyliste.txt
ren proxyliste-new.txt proxyliste.txt
del /q proxy-tot.txt
del /q ip-temp
goto test
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 126960
Url: https://administrator.de/contentid/126960
Ausgedruckt am: 22.11.2024 um 05:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo Neomatic und willkommen im Forum!
Eigentlich sollte Folgendes (ist allerdings ungetestet) genügen:
Grüße
bastla
Eigentlich sollte Folgendes (ist allerdings ungetestet) genügen:
@echo off & setlocal enabledelayedexpansion
echo.
echo Teste Proxy...
for /f "delims=" %%a in (proxyliste.txt) do (
set proxy=%%a
set ip=!proxy!
set ip=!ip:~0,15!
ping -n 2 -w 5000 !ip!
if errorlevel 1 (
echo.
echo Proxy !ip! nicht erreichbar...
echo !proxy! >>proxy-tot.txt
) else (
echo.
echo Proxy !ip! erreichbar...
echo !proxy! >>proxy-ok.txt
echo !proxy! >>working-proxy.txt
)
)
bastla
Hallo Neomatic!
Eine "echte" Subroutine-Version würde so aussehen:
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
Grüße
bastla
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:
@echo off & setlocal
echo.
echo Teste Proxy...
for /f "delims=" %%a in (proxyliste.txt) do call :ProcessProxy "%%a"
goto :eof
:ProcessProxy
set "proxy=%~1"
set ip=%proxy%
set ip=%ip:~0,15%
ping -n 2 -w 5000 %ip%
if errorlevel 1 (
echo.
echo Proxy %ip% nicht erreichbar...
echo %proxy% >>proxy-tot.txt
) else (
echo.
echo Proxy %ip% erreichbar...
echo %proxy% >>proxy-ok.txt
echo %proxy% >>working-proxy.txt
)
goto :eof
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
Hallo Neomatic!
Da Du ja den Doppelpunkt als Trennzeichen zur Verfügung hast, kannst Du einfach mit
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
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
Die Anführungszeichen um "%%a" und "%%b" habe ich hier weggelassen, da Adresse bzw Port ja ohnehin keine Leerzeichen beinhalten.
Grüße
bastla