Как добавить к чекингу HTTPS и HTTP еще и проверку и выдачу SOCKS5 проксей?

Есть многопоточный php чекер проксей (curl_multi), который чекает прокси из txt файла 1_ne_check.txt, в файле лежат http/https/sock4/socks5 прокси.

Скрипт проверяет их на валидность и сохраняет в файл 2_results.txt .

Но сохраняет только валидные http и https, хотя в 1_ne_check.txt есть так же валидные socks4/socks5

Как сделать чтоб скрипт чекал прокси и сохранял именно эти типы проксей: https и socks5.
Прокси типа: socks4 и http - мне не нужны.

<?php
$proxies = file ("1_ne_check.txt");
if (empty($proxies))
{
    exit(1);
}
$proxies_out = array();
$mc = curl_multi_init ();
for ($thread_no = 0; $thread_no<count ($proxies); $thread_no++)
{
$c [$thread_no] = curl_init ();
curl_setopt ($c [$thread_no], CURLOPT_URL, "http://google.com");
curl_setopt ($c [$thread_no], CURLOPT_HEADER, 0);
curl_setopt ($c [$thread_no], CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($c [$thread_no], CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt ($c [$thread_no], CURLOPT_TIMEOUT, 10);
curl_setopt ($c [$thread_no], CURLOPT_PROXY, trim ($proxies [$thread_no]));
curl_setopt ($c [$thread_no], CURLOPT_PROXYTYPE, 0);
curl_multi_add_handle ($mc, $c [$thread_no]);
}
 
do {
while (($execrun = curl_multi_exec ($mc, $running)) == CURLM_CALL_MULTI_PERFORM);
if ($execrun != CURLM_OK) break;
while ($done = curl_multi_info_read ($mc))
{
$info = curl_getinfo ($done ['handle']);
if ($info ['http_code'] == 301) {
echo trim ($proxies [array_search ($done['handle'], $c)])."\r\n";
$proxies_out[trim($proxies[array_search($done['handle'], $c)])] = trim($proxies[array_search($done['handle'], $c)]);
}
curl_multi_remove_handle ($mc, $done ['handle']);
}
} while ($running);
curl_multi_close ($mc);
file_put_contents("2_results.txt", implode("\r\n", $proxies_out));
?>
  • Вопрос задан
  • 317 просмотров
Решения вопроса 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Хых!
<?php
$proxies = file ("1_ne_check.txt");
if (empty($proxies))
{
    exit(1);
}

$mc = curl_multi_init ();
for ($thread_no = 0; $thread_no<count ($proxies); $thread_no++)
{
    $c [$thread_no] = curl_init ();
    curl_setopt ($c [$thread_no], CURLOPT_URL, "http://google.com");
    curl_setopt ($c [$thread_no], CURLOPT_HEADER, 0);
    curl_setopt ($c [$thread_no], CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($c [$thread_no], CURLOPT_CONNECTTIMEOUT, 5);
    curl_setopt ($c [$thread_no], CURLOPT_TIMEOUT, 10);
    curl_setopt ($c [$thread_no], CURLOPT_PROXY, trim ($proxies [$thread_no]));
    curl_setopt ($c [$thread_no], CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
    curl_multi_add_handle ($mc, $c [$thread_no]);
}
 
$proxies_out = array();
do {
    while (($execrun = curl_multi_exec ($mc, $running)) == CURLM_CALL_MULTI_PERFORM);
    if ($execrun != CURLM_OK) break;
    while ($done = curl_multi_info_read ($mc))
    {
        $info = curl_getinfo ($done ['handle']);
        if ($info ['http_code'] == 301) {
            echo trim ($proxies [array_search ($done['handle'], $c)])."\r\n";
            $proxies_out[trim($proxies[array_search($done['handle'], $c)])] = trim($proxies[array_search($done['handle'], $c)]);
            unset($proxies[array_search ($done['handle'], $c)]);
        }
        curl_multi_remove_handle ($mc, $done ['handle']);
    }
} while ($running);
curl_multi_close ($mc);

$mc = curl_multi_init ();
for ($thread_no = 0; $thread_no<count ($proxies); $thread_no++)
{
    $c [$thread_no] = curl_init ();
    curl_setopt ($c [$thread_no], CURLOPT_URL, "http://google.com");
    curl_setopt ($c [$thread_no], CURLOPT_HEADER, 0);
    curl_setopt ($c [$thread_no], CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($c [$thread_no], CURLOPT_CONNECTTIMEOUT, 5);
    curl_setopt ($c [$thread_no], CURLOPT_TIMEOUT, 10);
    curl_setopt ($c [$thread_no], CURLOPT_PROXY, trim ($proxies [$thread_no]));
    curl_setopt ($c [$thread_no], CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
    curl_multi_add_handle ($mc, $c [$thread_no]);
}
 
$proxies5_out = array();
do {
    while (($execrun = curl_multi_exec ($mc, $running)) == CURLM_CALL_MULTI_PERFORM);
    if ($execrun != CURLM_OK) break;
    while ($done = curl_multi_info_read ($mc))
    {
        $info = curl_getinfo ($done ['handle']);
        if ($info ['http_code'] == 301) {
            echo trim ($proxies [array_search ($done['handle'], $c)])."\r\n";
            $proxies5_out[trim($proxies[array_search($done['handle'], $c)])] = trim($proxies[array_search($done['handle'], $c)]);
        }
        curl_multi_remove_handle ($mc, $done ['handle']);
    }
} while ($running);
curl_multi_close ($mc);

file_put_contents("2_results.txt", implode("\r\n", $proxies_out)."\r\n\r\n".implode("\r\n", $proxies5_out));
?>
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sayber
@sayber Куратор тега PHP
Да, я программирую на PHP и еще асинхронно!
Если я правильно понял, то надо тип отдать
curl_setopt($c[$thread_no], CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);


Either CURLPROXY_HTTP (default), CURLPROXY_SOCKS4, CURLPROXY_SOCKS5, CURLPROXY_SOCKS4A or CURLPROXY_SOCKS5_HOSTNAME.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы