• Почему ImageMagick на windows не может обработать png?

    mik777em
    @mik777em Автор вопроса
    Пробелы в названиях файлов убрал, кавычки добавил в код. запустил код:

    FOR %I IN ("F:\L\*.png") DO (FOR %J IN ("F:\R\*.png") DO (magick "%I" "%J" -background white -alpha remove +append -quality 75 "F:\L+R\%~nI+%~nJ.jpg"))


    Но снова пишет:

    C:\Program Files\ImageMagick>(magick "F:\L\49.png" "F:\R\33.png" -background white -alpha remove +append -quality 75 "F:\L+R\49+33.jpg" )
    magick: unable to open image 'F:\L+R\49+33.jpg': No such file or directory @ error/blob.c/OpenBlob/3539.

    5ef11eaf24619156209474.png
  • Как определить страну прокси, убрать Китайские прокси и полностью перезаписать файл финальным результатом?

    mik777em
    @mik777em Автор вопроса
    AUser0,
    Через крон запускаю вот так:
    wget -O /dev/null -t 1 -T 600 -q 'http://elisee84.bget.ru/checker_socks5.php'


    Крон начинает выполнять код и через 1-2 минуты появляется "Выполнено с ошибкой"

    Привожу код файла checker_socks5.php

    <?php
    if (!function_exists("geoip_country_code_by_name")){echo("ERROR: No GeoIP function!");exit(2);}
    $socks5_list = explode ("\n", str_replace ("\r", "", file_get_contents (dirname(__FILE__)."/gotovo_vse_sellery_bezdybley.txt")));
    if (empty($socks5_list))
    {
      echo("ERROR: Proxy list is empty!");
      exit(1);
    }
    
    $threads = array();
    foreach ($socks5_list as $s)
    {
      if (!preg_match("/^\s*([a-z0-9-]+(?:\.[a-z0-9-]+)+)\s*:\s*(\d+)/", $s, $r)) continue;
      $ip = $r[1]; $port = $r[2]; $s = "{$ip}:{$port}";
      if (geoip_country_code_by_name($ip) == "CN") continue;
      if ($socket = @fsockopen ($ip, $port, $errno, $errstr, 3))
      {
        $threads[$s] = $socket;
        stream_set_timeout($socket, 3);
        fwrite ($socket, "\x05\x01\x00");
      }
    }
    $result = "";
    foreach ($threads as $s => $h)
    {
      $r = fread ($h, 2);
      if (isset($r[1]) AND ord($r[0]) == 5 AND ord($r[1]) == 0)
      {
        $result .= $s."\r\n";
      }
      fclose($h);
    }
    file_put_contents (dirname(__FILE__)."/socks5_valid.txt", $result);
    echo('end');
    ?>


    Пробую второй вариант. Добавил вывод промежуточных результатов, но где то допустил ошибку. При запуске в браузере elisee84.bget.ru/checker_socks5.php долго грузится и выдает через 1-2 минуты ошибку: 504 Gateway Time-out.

    Пробовал и через крон этим кодом
    wget -O /dev/null -t 1 -T 600 -q 'http://elisee84.bget.ru/checker_socks5.php'

    запускать код файла checker_socks5.php (см ниже код файла ), но также выдает через 1-2 минуты "Выполнено с ошибкой"
    5ed2de7475d53315397227.png
    <?php
    if (!function_exists("geoip_country_code_by_name")){echo("ERROR: No GeoIP function!");exit(2);}
    $socks5_list = explode ("\n", str_replace ("\r", "", file_get_contents (dirname(__FILE__)."/gotovo_vse_sellery_bezdybley.txt")));
    if (empty($socks5_list))
    {
      echo("ERROR: Proxy list is empty!");
      exit(1);
    }
    
    $threads = array();
    foreach ($socks5_list as $s)
    {
      if (!preg_match("/^\s*([a-z0-9-]+(?:\.[a-z0-9-]+)+)\s*:\s*(\d+)/", $s, $r)) continue;
      $ip = $r[1]; $port = $r[2]; $s = "{$ip}:{$port}";
      if (geoip_country_code_by_name($ip) == "CN") continue;
      if ($socket = @fsockopen ($ip, $port, $errno, $errstr, 3))
      {
        $threads[$s] = $socket;
        stream_set_timeout($socket, 3);
        fwrite ($socket, "\x05\x01\x00");
      }
    }
    $result = "";
    foreach ($threads as $s => $h)
    {
      $r = fread ($h, 2);
      if (isset($r[1]) AND ord($r[0]) == 5 AND ord($r[1]) == 0)
      {
        $result .= $s."\r\n";
      }
      fclose($h);
    }
    file_put_contents (dirname(__FILE__)."/socks5_valid.txt", $result);
    echo("Processing {$s}...<br>\n");flush();
    
    ?>
  • Как определить страну прокси, убрать Китайские прокси и полностью перезаписать файл финальным результатом?

    mik777em
    @mik777em Автор вопроса
    Ок, исправил код и запустил в кроне, в итоге после 1-2 минуты после того как скрипт начал выполняться, крон выдал "выполнено с ошибкой" .
    <?php
    if (!function_exists("geoip_country_code_by_name")){echo("ERROR: No GeoIP function!");exit(2);}
    $socks5_list = explode ("\n", str_replace ("\r", "", file_get_contents (dirname(__FILE__)."/gotovo_vse_sellery_bezdybley.txt")));
    if (empty($socks5_list))
    {
      echo("ERROR: Proxy list is empty!");
      exit(1);
    }
    
    $threads = array();
    foreach ($socks5_list as $s)
    {
      if (!preg_match("/^\s*([a-z0-9-]+(?:\.[a-z0-9-]+)+)\s*:\s*(\d+)/", $s, $r)) continue;
      $ip = $r[1]; $port = $r[2]; $s = "{$ip}:{$port}";
      if (geoip_country_code_by_name($ip) == "CN") continue;
      if ($socket = @fsockopen ($ip, $port, $errno, $errstr, 3))
      {
        $threads[$s] = $socket;
        stream_set_timeout($socket, 3);
        fwrite ($socket, "\x05\x01\x00");
      }
    }
    $result = "";
    foreach ($threads as $s => $h)
    {
      $r = fread ($h, 2);
      if (isset($r[1]) AND ord($r[0]) == 5 AND ord($r[1]) == 0)
      {
        $result .= $s."\r\n";
      }
      fclose($h);
    }
    file_put_contents (dirname(__FILE__)."/socks5_valid.txt", $result);
    echo('end');
    ?>

    Прикрепляю текст лога ошибок, возможно там можно будет понять в чём ошибка.
    текст лога
    [Fri May 22 08:48:17 2020] [error] [client 209.17.96.154:9257] AH01276: Cannot serve directory /home/e/elisee84/elisee84.bget.ru/public_html/: No matching DirectoryIndex (index.shtml,index.html,index.php,index.htm) found, and server-generated directory index forbidden by Options directive
    [Fri May 22 10:10:24 2020] [error] [client 91.245.114.178:51405] Script timed out before returning headers: php-cgi
    [Fri May 22 10:44:20 2020] [error] [client 178.154.200.22:15369] Script timed out before returning headers: php-cgi
    [Fri May 22 10:46:20 2020] [error] [client 213.180.203.122:33253] Script timed out before returning headers: php-cgi
    [Fri May 22 10:49:27 2020] [error] [client 5.101.153.17:59381] Script timed out before returning headers: php-cgi
  • Как определить страну прокси, убрать Китайские прокси и полностью перезаписать файл финальным результатом?

    mik777em
    @mik777em Автор вопроса
    Теперь при запуске elisee84.bget.ru/checker_socks5.php в браузере отображается end

    Код файла checker_socks5.php
    <?php
    if (!function_exists("geoip_country_code_by_name")){echo("ERROR: No GeoIP function!");exit(2);}
    $socks5_list = explode ("\n", str_replace ("\r", "", file_get_contents (dirname(__FILE__)."/gotovo_vse_sellery_bezdybley.txt")));
    if (empty($socks5_list))
    {
    echo("ERROR: Proxy list is empty!");
    exit(1);
    }

    $threads = array();
    foreach ($socks5_list as $s)
    {
    if (!preg_match("/^[a-z0-9-]+(\.$[a-z0-9-]+)+:\d+/", $s)) continue;
    list ($ip, $port) = explode (":", $s);
    if (geoip_country_code_by_name($ip) == "CN") continue;
    if ($socket = fsockopen ($ip, $port, $errno, $errstr, 3))
    {
    $threads[$s] = $socket;
    stream_set_timeout($socket, 3);
    fwrite ($socket, "\x05\x01\x00");
    }
    }
    $result = "";
    foreach ($threads as $s => $h)
    {
    $r = fread ($h, 2);
    if (isset($r[1]) AND ord($r[0]) == 5 AND ord($r[1]) == 0)
    {
    $result .= $s."\r\n";
    }
    fclose($h);
    }
    file_put_contents (dirname(__FILE__)."/socks5_valid.txt", $result);
    echo('end');
    ?>


    В кроне скрипт мгновенно отрабатывает с сообщением "Успешно", как это возможно при необходимости прочекать около 2500 проксей?)) и естественно файл socks5_valid.txt остаётся пустым.

    Мне сокс5 прокси нужны для ютуба, а на ютуб нельзя зайти через китайские прокси. Возможно есть вариант сначала прочекать прокси на тип , сохранив в результаты только сокс5 , а далее прочекать на заход на ютуб.

    Я нашел в оригинале код чека проксей на сокс5 и переделал под себя. Оригинальный код, на мой взгляд намного быстрей работает, так как скрипт посылает строчку \x05\x01\x00 каждому соксу с которым удалось соединиться, если первые 2 байта ответа \x05\x00\ то socks5 считается валидным, но он не проверяет на страну (Китай) или же на ютуб.

    Оригинальный код скрипта:
    <?php
     function _check_socks5 ($socks = array(), $filename)
     {
      foreach ($socks as $s)
      {
       list ($ip, $port) = explode (":", $s);
       if ($socket = @fsockopen ($ip, $port, $errno, $errstr, 1))
       {
        $threads [$s] = $socket;
       }
      }
      foreach ($threads as $s => $h)
      {
       fwrite ($h, "\x05\x01\x00");
      }
      foreach ($threads as $s => $h)
      {
       $r = fread ($h, 2);
       if ((ord ($r [0]) == 5) && (ord ($r [1]) == 0))
       {
        file_put_contents ($filename, $s."\r\n", FILE_APPEND);
       }
      }
     }
     $socks5_list = explode ("\n", str_replace ("\r", "", file_get_contents (dirname(__FILE__)."/socks5.txt")));
     _check_socks5 ($socks5_list, dirname(__FILE__)."/socks5_valid.txt");
    ?>
  • Как определить страну прокси, убрать Китайские прокси и полностью перезаписать файл финальным результатом?

    mik777em
    @mik777em Автор вопроса
    AUser0,
    Поддержка бегета говорит что справила ошибку в скрипте checker_socks5.php и в коде вызова скрипта с помощью Cron
    5ebbf43137998604236919.png

    Скриншот запуска скрипта из крона:
    5ebbf3deea559338046275.png

    В скрипт я сейчас добавил отображение ошибок в web-браузере
    Код скрипта

    <?php
    error_reporting(E_ALL);
    ini_set("display_errors", 1);
    if (!function_exists("geoip_country_code_by_name")){echo("ERROR: No GeoIP function!");exit(2);}
    $socks5_list = explode ("\n", str_replace ("\r", "", file_get_contents (dirname(__FILE__)."/gotovo_vse_sellery_bezdybley.txt")));
    if (empty($socks5_list))
    {
      echo("ERROR: Proxy list is empty!");
      exit(1);
    }
    
    $threads = array();
    foreach ($socks5_list as $s)
    {
      if (!preg_match("/^[a-z0-9-]+(\.$[a-z0-9-]+)+:\d+/", $s)) continue;
      list ($ip, $port) = explode (":", $s);
      if (geoip_country_code_by_name($ip) == "CN") continue;
      if ($socket = @fsockopen ($ip, $port, $errno, $errstr, 3))
      {
        $threads[$s] = $socket;
        stream_set_timeout($socket, 3);
        fwrite ($socket, "\x05\x01\x00");
      }
    }
    $result = "";
    foreach ($threads as $s => $h)
    {
      $r = fread ($h, 2);
      if (isset($r[1]) AND ord($r[0]) == 5 AND ord($r[1]) == 0)
      {
        $result .= $s."\r\n";
      }
      fclose($h);
    }
    file_put_contents (dirname(__FILE__)."/socks5_valid.txt", $result);
    ?>


    Я запускаю исправленный скрипт из web-браузера http://elisee84.bget.ru/checker_socks5.php , но в браузере ничего не отображается.
  • Как определить страну прокси, убрать Китайские прокси и полностью перезаписать файл финальным результатом?

    mik777em
    @mik777em Автор вопроса
    запустил ваш код из крона
    получаю ошибку:
    /usr/local/bin/php5.6 -c ~/elisee84.bget.ru/public_html/cgi-bin/php.ini ~/elisee84.bget.ru/public_html/checker_socks5.php
    
    PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/php/cgi/5.6/lib/php/20131226/geoip.so' - /usr/local/php/cgi/5.6/lib/php/20131226/geoip.so: cannot open shared object file: No such file or directory in Unknown on line 0


    Кстати, теперь из браузера не инициализируется скрипт по ссылке elisee84.bget.ru/checker_socks5.php

    5eb508674bae5396002682.png
  • Как определить страну прокси, убрать Китайские прокси и полностью перезаписать файл финальным результатом?

    mik777em
    @mik777em Автор вопроса
    поддержка бегета собрала мне модуль для php5.6 версии, я сейчас в кроне выбрал запуск не через http а через скрипт php версии 5.6
    5eb473cb2bc02593236921.png

    и при запуске такого скрипта появляется такая ошибка в кроне:

    5eb473eabb67f276266491.png

    /usr/local/bin/php5.6 ~/elisee84.bget.ru/public_html/checker_socks5.php
    
    
    Notice: Undefined offset: 1 in /home/e/elisee84/elisee84.bget.ru/public_html/checker_socks5.php on line 13
    
    Fatal error: Call to undefined function geoip_country_code_by_name() in /home/e/elisee84/elisee84.bget.ru/public_html/checker_socks5.php on line 14
  • Как определить страну прокси, убрать Китайские прокси и полностью перезаписать файл финальным результатом?

    mik777em
    @mik777em Автор вопроса
    AUser0,
    содержание файла gotovo_vse_sellery_bezdybley.txt


    1.0.132.245:8080
    1.0.178.128:8080
    1.0.185.23:8080
    1.0.208.132:53243
    1.10.133.42:8081
    1.10.153.71:8080
    1.10.188.42:48721
    1.10.188.52:32163
    1.10.188.85:8080
    1.10.251.6:8080
    1.160.224.205:53281
    1.179.144.180:80
    1.179.144.41:8080
    1.179.239.149:8080
    1.186.242.12:39098
    1.196.131.212:1080
    1.2.169.12:47678
    1.20.101.149:44778
    1.20.102.68:8080
    1.20.219.59:8080
    1.20.99.178:34781
    1.4.150.126:8213
    1.83.103.180:1080


    результат запуска скрипта из крона checker_socks5.php
    5eb46d8e1e1ca108068551.png

    При инициализации скрипта из браузера elisee84.bget.ru/checker_socks5.php, страница долго грузится и в результате ничего на ней не отображается и соответственно файл socks5_valid.txt - остаётся пустым. см скриншот
    5eb46ee5b540a197985144.png
  • Как определить страну прокси, убрать Китайские прокси и полностью перезаписать файл финальным результатом?

    mik777em
    @mik777em Автор вопроса
    Поддержка бегета собрала мне модуль:
    5eb40c17c9dbd506275964.png
    5eb40d92469a9356682372.png

    Скриншоты отработки с отображением в браузере
    скрипта

    <?php
    print_r(preg_grep("/geoip/", array_shift(get_defined_functions())));exit();
    error_reporting(E_ALL);
    ini_set("display_errors", 1);
     $socks5_list = explode ("\n", str_replace ("\r", "", file_get_contents (dirname(__FILE__)."/gotovo_vse_sellery_bezdybley.txt")));
    if (empty($socks5_list))
    {
        exit(1);
    }
     function _check_socks5 ($socks = array(), $filename)
     {
      foreach ($socks as $s)
      {
       list ($ip, $port) = explode (":", $s);
       if (geoip_country_code_by_name($ip) == "CN") continue;
       if ($socket = @fsockopen ($ip, $port, $errno, $errstr, 1))
       {
        $threads[$s] = $socket;
       }
      }
      foreach ($threads as $s => $h)
      {
       fwrite ($h, "\x05\x01\x00");
      }
      foreach ($threads as $s => $h)
      {
       $r = fread ($h, 2);
       if ((ord ($r [0]) == 5) && (ord ($r [1]) == 0))
       {
        file_put_contents ($filename, $s."\r\n");
       }
      }
     }
     _check_socks5 ($socks5_list, dirname(__FILE__)."/socks5_valid.txt");
    ?>


    5eb40ccc066bd935575866.png

    Убрал из кода строку "распечатку функций" модуля geoip

    print_r(preg_grep("/geoip/", array_shift(get_defined_functions())));exit();


    и получаю в браузере при вызове скрипта вот это:
    скрипт
    <?php
    error_reporting(E_ALL);
    ini_set("display_errors", 1);
    $socks5_list = explode ("\n", str_replace ("\r", "", file_get_contents (dirname(__FILE__)."/gotovo_vse_sellery_bezdybley.txt")));
    if (empty($socks5_list))
    {
    exit(1);
    }
    function _check_socks5 ($socks = array(), $filename)
    {
    foreach ($socks as $s)
    {
    list ($ip, $port) = explode (":", $s);
    if (geoip_country_code_by_name($ip) == "CN") continue;
    if ($socket = fsockopen ($ip, $port, $errno, $errstr, 1))
    {
    $threads[$s] = $socket;
    }
    }
    foreach ($threads as $s => $h)
    {
    fwrite ($h, "\x05\x01\x00");
    }
    foreach ($threads as $s => $h)
    {
    $r = fread ($h, 2);
    if ((ord ($r [0]) == 5) && (ord ($r [1]) == 0))
    {
    file_put_contents ($filename, $s."\r\n");
    }
    }
    }
    _check_socks5 ($socks5_list, dirname(__FILE__)."/socks5_valid.txt");
    ?>

    Notice: 
    Undefined offset: 1 in /home/e/e*****/e*****et.ru/public_html/checker_socks5.php 
     on line 13 Notice: Undefined variable: 
    threads in /home/e/e*****/e*****et.ru/public_html/checker_socks5.php 
     on line 20 Warning: Invalid argument supplied for foreach() in /home/e/e*****/e*****et.ru/public_html/checker_socks5.php
     on line 20 Notice: Undefined variable: 
    threads in /home/e/e*****/e*****et.ru/public_html/checker_socks5.php
     on line 24 Warning: Invalid argument supplied for foreach() in /home/e/e*****/e*****et.ru/public_html/checker_socks5.php on line 24
  • Как определить страну прокси, убрать Китайские прокси и полностью перезаписать файл финальным результатом?

    mik777em
    @mik777em Автор вопроса
    В общем написал я саппорту бегета:

    Спойлер, если интересно что я писал саппорту бегета


    Да, вроде как GeoIP установлено, но при работе моего скрипта по проверке прокси - скрипт отказывается идентифицировать страну прокси (ip адреса проксей).

    Пытаюсь решить эту проблему так:
    1) Чтобы узнать, какие же GeoIP-функции мне доступны, в коде я указал такую строку:
    print_r(preg_grep("/geoip/", array_shift(get_defined_functions())));exit();


    2) Чтоб показывать ошибки в веббраузере, я указал в скрипте этот код:
    error_reporting(E_ALL);
    ini_set("display_errors", 1);


    Это URL служит что-бы запустить в веббраузере php-скрипт и выводить мне ошибки и доступные функции GeoIP: http://e********.ru/c*******s5.php

    Результат: При вызове URL я получаю ответ в браузере: Array ( )

    Мой вывод: Возможно что Beget использует GeoIP внутри сервера, для определения geo-локации каждого компьютера, обращающегося к страницам сервера.

    Вопросы:
    - Почему тогда у скрипта нет доступа к GeoIP, если он установлен на сервере?
    - Или укажите пожалуйста работающий PHP-пример использования вашего GeoIP

    Код моего PHP скрипта:
    <?php
    print_r(preg_grep("/geoip/", array_shift(get_defined_functions())));exit();
    error_reporting(E_ALL);
    ini_set("display_errors", 1);
     $socks5_list = explode ("\n", str_replace ("\r", "", file_get_contents (dirname(__FILE__)."/gotovo_vse_sellery_bezdybley.txt")));
    if (empty($socks5_list))
    {
        exit(1);
    }
     function _check_socks5 ($socks = array(), $filename)
     {
      foreach ($socks as $s)
      {
       list ($ip, $port) = explode (":", $s);
       if (geoip_country_code_by_name($ip) == "CN") continue;
       if ($socket = @fsockopen ($ip, $port, $errno, $errstr, 1))
       {
        $threads[$s] = $socket;
       }
      }
      foreach ($threads as $s => $h)
      {
       fwrite ($h, "\x05\x01\x00");
      }
      foreach ($threads as $s => $h)
      {
       $r = fread ($h, 2);
       if ((ord ($r [0]) == 5) && (ord ($r [1]) == 0))
       {
        file_put_contents ($filename, $s."\r\n");
       }
      }
     }
     _check_socks5 ($socks5_list, dirname(__FILE__)."/socks5_valid.txt");
    ?>




    И вот что техподдержка бегета ответила:
    Здравствуйте!
    
    К сожалению, нам пока что не удалось окончательно решить Ваш вопрос.
    
    geoip установлен как модуль apache. Как модуль для php он не установлен. Вам нужно собирать модуль geoip и подлючать его как дополнительную библиотеку в php.ini (нужно будет перевести работу сайта в cgi режим).
    
    Нам потребуется больше времени для решения Вашего вопроса. Мы будем держать Вас в курсе о ходе решения проблемы. Пожалуйста, ожидайте ответа.


    Пока что жду, может исправят что-то по серверу который я у них использую.
  • Как определить страну прокси, убрать Китайские прокси и полностью перезаписать файл финальным результатом?

    mik777em
    @mik777em Автор вопроса
    AUser0,
    При запросе в браузере получил Array ( )
    5eaca3639c0f5829301358.png

    Код:
    <?php
    print_r(preg_grep("/geoip/", array_shift(get_defined_functions())));exit();
    error_reporting(E_ALL);
    ini_set("display_errors", 1);
     $socks5_list = explode ("\n", str_replace ("\r", "", file_get_contents (dirname(__FILE__)."/gotovo_vse_sellery_bezdybley.txt")));
    if (empty($socks5_list))
    {
        exit(1);
    }
     function _check_socks5 ($socks = array(), $filename)
     {
      foreach ($socks as $s)
      {
       list ($ip, $port) = explode (":", $s);
       if (geoip_country_code_by_name($ip) == "CN") continue;
       if ($socket = @fsockopen ($ip, $port, $errno, $errstr, 1))
       {
        $threads[$s] = $socket;
       }
      }
      foreach ($threads as $s => $h)
      {
       fwrite ($h, "\x05\x01\x00");
      }
      foreach ($threads as $s => $h)
      {
       $r = fread ($h, 2);
       if ((ord ($r [0]) == 5) && (ord ($r [1]) == 0))
       {
        file_put_contents ($filename, $s."\r\n");
       }
      }
     }
     _check_socks5 ($socks5_list, dirname(__FILE__)."/socks5_valid.txt");
    ?>
  • Как определить страну прокси, убрать Китайские прокси и полностью перезаписать файл финальным результатом?

    mik777em
    @mik777em Автор вопроса
    теперь вижу подключенные модули. с дедика в Нидерландах запускал собсно страницу со скриптом. Кстати, страна с которой запуск скрипта в браузере идет - определяется как Нидерланды, это указано на 2-ром скриншоте.

    19 раз на странице встречается geoip
    =======================
    5eac45a06b17b021998385.png

    =======================
    5eac4438082e2023507044.png
    =======================
    5eac443f11b8c163329802.png

    Код:
    <?php
    phpinfo();exit();
    error_reporting(E_ALL);
    ini_set("display_errors", 1);
     $socks5_list = explode ("\n", str_replace ("\r", "", file_get_contents (dirname(__FILE__)."/gotovo_vse_sellery_bezdybley.txt")));
    if (empty($socks5_list))
    {
        exit(1);
    }
     function _check_socks5 ($socks = array(), $filename)
     {
      foreach ($socks as $s)
      {
       list ($ip, $port) = explode (":", $s);
       if (geoip_country_code_by_name($ip) == "CN") continue;
       if ($socket = @fsockopen ($ip, $port, $errno, $errstr, 1))
       {
        $threads[$s] = $socket;
       }
      }
      foreach ($threads as $s => $h)
      {
       fwrite ($h, "\x05\x01\x00");
      }
      foreach ($threads as $s => $h)
      {
       $r = fread ($h, 2);
       if ((ord ($r [0]) == 5) && (ord ($r [1]) == 0))
       {
        file_put_contents ($filename, $s."\r\n");
       }
      }
     }
     _check_socks5 ($socks5_list, dirname(__FILE__)."/socks5_valid.txt");
    ?>
  • Как определить страну прокси, убрать Китайские прокси и полностью перезаписать файл финальным результатом?

    mik777em
    @mik777em Автор вопроса
    Извиняюсь за мою неграмотность в PHP)
    Добавил второй строчкой phpinfo();exit(); , но не список загруженных модулей , ни текст ошибки не выдаёт
    5eac2abf3f1f4799559409.png

    Код:

    <?php
    phpinfo();exit();
    error_reporting(E_ALL);
    ini_set("display_errors", 1);
     $socks5_list = explode ("\n", str_replace ("\r", "", file_get_contents (dirname(__FILE__)."/gotovo_vse_sellery_bezdybley.txt")));
    if (empty($socks5_list))
    {
        exit(1);
    }
     function geoip_country_code_by_name($ip)
    {
     function _check_socks5 ($socks = array(), $filename)
     {
      foreach ($socks as $s)
      {
       list ($ip, $port) = explode (":", $s);
       if (geoip_country_code_by_name($ip) == "CN") continue;
       if ($socket = @fsockopen ($ip, $port, $errno, $errstr, 1))
       {
        $threads[$s] = $socket;
       }
      }
      foreach ($threads as $s => $h)
      {
       fwrite ($h, "\x05\x01\x00");
      }
      foreach ($threads as $s => $h)
      {
       $r = fread ($h, 2);
       if ((ord ($r [0]) == 5) && (ord ($r [1]) == 0))
       {
        file_put_contents ($filename, $s."\r\n");
       }
      }
     }
     _check_socks5 ($socks5_list, dirname(__FILE__)."/socks5_valid.txt");
    ?>
  • Как определить страну прокси, убрать Китайские прокси и полностью перезаписать файл финальным результатом?

    mik777em
    @mik777em Автор вопроса
    AUser0,
    Теперь я определил функцию - прописав её в коде. Как мне кажется, я правильно прописал)

    5eabe98c104b2799738738.png

    но скрипт всё так же не обрабатывается, далее я добавлял код выдачи ошибок в браузере \ в файле лога, но теперь и ошибки не браузере не выдает ни в файле лога
    <?php
    error_reporting(E_ALL);
    ini_set("display_errors", 1);
    
     $socks5_list = explode ("\n", str_replace ("\r", "", file_get_contents (dirname(__FILE__)."/gotovo_vse_sellery_bezdybley.txt")));
    if (empty($socks5_list))
    {
        exit(1);
    }
     function geoip_country_code_by_name($ip)
    {
     function _check_socks5 ($socks = array(), $filename)
     {
      foreach ($socks as $s)
      {
       list ($ip, $port) = explode (":", $s);
       if (geoip_country_code_by_name($ip) == "CN") continue;
       if ($socket = @fsockopen ($ip, $port, $errno, $errstr, 1))
       {
        $threads[$s] = $socket;
       }
      }
      foreach ($threads as $s => $h)
      {
       fwrite ($h, "\x05\x01\x00");
      }
      foreach ($threads as $s => $h)
      {
       $r = fread ($h, 2);
       if ((ord ($r [0]) == 5) && (ord ($r [1]) == 0))
       {
        file_put_contents ($filename, $s."\r\n");
       }
      }
     }
     _check_socks5 ($socks5_list, dirname(__FILE__)."/socks5_valid.txt");
    ?>
  • Как определить страну прокси, убрать Китайские прокси и полностью перезаписать файл финальным результатом?

    mik777em
    @mik777em Автор вопроса
    AUser0,
    добавил в код. :
    Код на выходе
    <?php
    error_reporting(E_ALL);
    ini_set('error_log', __DIR__ . '/php-errors.log');
    error_log('Запись в лог', 0);
    
     $socks5_list = explode ("\n", str_replace ("\r", "", file_get_contents (dirname(__FILE__)."/gotovo_vse_sellery_bezdybley.txt")));
    if (empty($socks5_list))
    {
        exit(1);
    }
    
    
     function _check_socks5 ($socks = array(), $filename)
     {
      foreach ($socks as $s)
      {
       list ($ip, $port) = explode (":", $s);
       if (geoip_country_code_by_name($ip) == "CN") continue;
       if ($socket = @fsockopen ($ip, $port, $errno, $errstr, 1))
       {
        $threads[$s] = $socket;
       }
      }
      foreach ($threads as $s => $h)
      {
       fwrite ($h, "\x05\x01\x00");
      }
      foreach ($threads as $s => $h)
      {
       $r = fread ($h, 2);
       if ((ord ($r [0]) == 5) && (ord ($r [1]) == 0))
       {
        file_put_contents ($filename, $s."\r\n");
       }
      }
     }
    
     _check_socks5 ($socks5_list, dirname(__FILE__)."/socks5_valid.txt");
    ?>

    Как я и говорил, он отдает совсем не то.

    Содержание файла лога php-errors.log
    [30-Apr-2020 14:26:51 Europe/Moscow] Запись в лог

    Добавил вариант с отображением в браузере:
    код скрипта с отловом ошибок в браузере
    <?php
    error_reporting(E_ALL);
    ini_set("display_errors", 1);
    
     $socks5_list = explode ("\n", str_replace ("\r", "", file_get_contents (dirname(__FILE__)."/gotovo_vse_sellery_bezdybley.txt")));
    if (empty($socks5_list))
    {
        exit(1);
    }
    
    
     function _check_socks5 ($socks = array(), $filename)
     {
      foreach ($socks as $s)
      {
       list ($ip, $port) = explode (":", $s);
       if (geoip_country_code_by_name($ip) == "CN") continue;
       if ($socket = @fsockopen ($ip, $port, $errno, $errstr, 1))
       {
        $threads[$s] = $socket;
       }
      }
      foreach ($threads as $s => $h)
      {
       fwrite ($h, "\x05\x01\x00");
      }
      foreach ($threads as $s => $h)
      {
       $r = fread ($h, 2);
       if ((ord ($r [0]) == 5) && (ord ($r [1]) == 0))
       {
        file_put_contents ($filename, $s."\r\n");
       }
      }
     }


    тут уже хоть что-то. Вот что отдает браузер:
    Notice: Undefined offset: 1 in /home/e/eli****4/eli***4.bget.ru/public_html/r****_socks5.php on line 16 Fatal error: Call to undefined function geoip_country_code_by_name() in /home/e/eli****4/eli****4.bget.ru/public_html/r*****_socks5.php on line 17
  • Как определить страну прокси, убрать Китайские прокси и полностью перезаписать файл финальным результатом?

    mik777em
    @mik777em Автор вопроса
    AUser0, я лично высказал мнение что строка вызывала сомнение. Если это не так, то логично узнать что за ошибка, но крон естественно текст ошибки не отдает.

    Попробовал добавить в начало скрипта функцию отлова ошибок, но не "разкурил" как это сделать полностью, т к видимо только этого кода мало, он только включает режим логирования ошибок:
    error_reporting(E_ALL);
    ini_set('error_log', __DIR__ . '/php-errors.log');
    error_log('Запись в лог', 0);
  • Как определить страну прокси, убрать Китайские прокси и полностью перезаписать файл финальным результатом?

    mik777em
    @mik777em Автор вопроса
    Этот код должен выполнять проверку прокси на валид и определять страну IP, и используя GeoIP фильтровать Китай.

    код с ошибкой
    <?php
     $socks5_list = explode ("\n", str_replace ("\r", "", file_get_contents (dirname(__FILE__)."/gotovo_vse_sellery_bezdybley.txt")));
    if (empty($socks5_list))
    {
        exit(1);
    }
     function _check_socks5 ($socks = array(), $filename)
     {
      foreach ($socks as $s)
      {
       list ($ip, $port) = explode (":", $s);
       if (geoip_country_code_by_name($ip) == "CN") continue;
       if ($socket = @fsockopen ($ip, $port, $errno, $errstr, 1))
       {
        $threads[$s] = $socket;
       }
      }
      foreach ($threads as $s => $h)
      {
       fwrite ($h, "\x05\x01\x00");
      }
      foreach ($threads as $s => $h)
      {
       $r = fread ($h, 2);
       if ((ord ($r [0]) == 5) && (ord ($r [1]) == 0))
       {
        file_put_contents ($filename, $s."\r\n");
       }
      }
     }
    
     _check_socks5 ($socks5_list, dirname(__FILE__)."/socks5_valid.txt");
    ?>

    Запускал скрипт на Cron у хостингера Beget, но при выполнении скрипта появляется ошибка.

    спойлер скриншота ошибки
    5eaa272c70056328687539.png

    Из веббраузера также этот php код не обрабатывается
    спойлер ошибки из веббраузера
    5eaa27a488527165680795.png

    Не знаю в чем ошибка в коде скрипта, вроде и расширение geoip установлено на сервере где обрабатывается кроном скрипт. о чем сам саппорт бегета сообщает:
    5eaa26dae24a2544701409.png

    Ссылки на расширения которые установлены на разных версиях php в этом сервере (5.2 5.3 5.6 7.0 7.1 7.2 7.3)
    https://astral.beget.com/phpinfo.php?v=52
    https://astral.beget.com/phpinfo.php?v=53
    https://astral.beget.com/phpinfo.php?v=56
    https://astral.beget.com/phpinfo.php?v=70
    https://astral.beget.com/phpinfo.php?v=71
    https://astral.beget.com/phpinfo.php?v=72
    https://astral.beget.com/phpinfo.php?v=73
  • Как определить страну прокси, убрать Китайские прокси и полностью перезаписать файл финальным результатом?

    mik777em
    @mik777em Автор вопроса
    А скрипт обрабатывается с ошибкой.
    У меня вот эта строка вызывает сомнения
    _check_socks5 ($socks5_list, dirname(__FILE__)."/socks5_valid.txt");


    Тут всё верно?