diff --git a/blockcheck.sh b/blockcheck.sh index 6ddd795..11d6dfe 100755 --- a/blockcheck.sh +++ b/blockcheck.sh @@ -352,15 +352,23 @@ curl_test() { # $1 - test function # $2 - domain - $1 $IPV $2 && { - echo '!!!!! AVAILABLE !!!!!' - return 0 - } - local code=$? + local code=0 n=0 + + while [ $n -lt $REPEATS ]; do + n=$(($n+1)) + [ $REPEATS -gt 1 ] && $ECHON "[attempt $n] " + $1 $IPV $2 && { + [ $REPEATS -gt 1 ] && echo 'AVAILABLE' + continue + } + code=$? + done if [ $code = 254 ]; then - echo UNAVAILABLE + echo "UNAVAILABLE" + elif [ $code = 0 ]; then + echo '!!!!! AVAILABLE !!!!!' else - echo UNAVAILABLE code=$code + echo "UNAVAILABLE code=$code" fi return $code } @@ -638,12 +646,23 @@ ask_params() CURL_OPT= [ $ENABLE_HTTPS_TLS13 = 1 -o $ENABLE_HTTPS_TLS12 = 1 ] && { echo - echo on limited systems like openwrt CA certificates might not be installed to preserve space - echo in such a case curl cannot verify server certificate and you should either install ca-bundle or disable verification - echo however disabling verification will break https check if ISP does MitM attack and substitutes server certificate + echo "on limited systems like openwrt CA certificates might not be installed to preserve space" + echo "in such a case curl cannot verify server certificate and you should either install ca-bundle or disable verification" + echo "however disabling verification will break https check if ISP does MitM attack and substitutes server certificate" ask_yes_no_var IGNORE_CA "do not verify server certificate" [ "$IGNORE_CA" = 1 ] && CURL_OPT=-k } + + echo + echo "sometimes ISPs use multiple DPIs or load balancing. bypass strategies may work unstable." + $ECHON "how many times to repeat each test (default: 1) : " + read REPEATS + REPEATS=$((0+${REPEATS:-1})) + [ "$REPEATS" = 0 ] && { + echo invalid repeat count + exitp 1 + } + echo } diff --git a/docs/readme.txt b/docs/readme.txt index 505ece9..1b7324d 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -734,7 +734,8 @@ tpws и nfqws решают нужно ли применять дурение в они находятся на разных хопах. Такая ситуация может выражаться в нестабильности работы обхода. Дернули несколько раз curl. То работает, то connection reset или редирект. blockcheck.sh выдает странноватые результаты. То split работает на 2-м. хопе, то на 4-м. Достоверность результата вызывает сомнения. -В этом случае вам придется вручную подбирать режимы, которые покрыли бы все DPI на вашем пути. +В этом случае задайте несколько повторов одного и того же теста. Тест будет считаться успешным только, +если все попытки пройдут успешно. Выбор параметров