@Flysink

Curl Multi socks5 proxy после первых бедах выдает ошибку, почему с http нормально?

Windows 8
Apache 2.4
Php version 7
Curl version 7.50

Загружаю http proxy 10 - 15k, ставлю любые потоки хоть 1к проверяет быстро без ошибок, с соксами5 другая ситуация до 200 штук тоже идеально проверяет , но после 200 и более в не зависимости от кол потоков выдает ошибку:
$multith = curl_multi_init(); 	
	foreach($proxys as $ip) {
		for($i=0; $i<count($ip); $i++) {
			$ch[$i] = curl_init();
			curl_setopt($ch[$i], CURLOPT_URL, $url);
			curl_setopt($ch[$i], CURLOPT_HEADER, true);         				 
			curl_setopt($ch[$i], CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
			curl_setopt($ch[$i], CURLOPT_RETURNTRANSFER, true);
			curl_setopt($ch[$i], CURLOPT_FOLLOWLOCATION, true);
			curl_setopt($ch[$i], CURLOPT_AUTOREFERER, true);
			curl_setopt($ch[$i], CURLOPT_CONNECTTIMEOUT, $timeout);
			curl_setopt($ch[$i], CURLOPT_TIMEOUT, $timeout);
			curl_setopt($ch[$i], CURLOPT_PROXY, $ip[$i]);
			curl_setopt($ch[$i], CURLOPT_VERBOSE, true);
			curl_setopt($ch[$i], CURLOPT_STDERR, $files);
			curl_setopt($ch[$i], CURLOPT_PROXYTYPE, type($proxytype));
			curl_setopt($ch[$i], CURLOPT_HTTPPROXYTUNNEL, true);
			curl_setopt($ch[$i], CURLOPT_NOBODY, true);
			curl_setopt($ch[$i], CURLOPT_SSL_VERIFYHOST,false);
			curl_setopt($ch[$i], CURLOPT_SSL_VERIFYPEER,false);
			curl_setopt($ch[$i], CURLOPT_FAILONERROR, true);
			curl_setopt($ch[$i], CURLOPT_POST, true);
			#curl_setopt($ch[$i], CURLOPT_PROXYUSERPWD, "login:pass");
			curl_multi_add_handle($multith,$ch[$i]);
		}
do {
			while($send = curl_multi_exec($multith,$run));
		} while($run == CURLM_CALL_MULTI_PERFORM);
		  usleep(5000);
			while($run && $send == CURLM_OK) {
				if(curl_multi_select($multith) != -1) {
					do {
						$send = curl_multi_exec($multith,$run);
							while($result = curl_multi_info_read($multith)) {
								if($result['msg'] == CURLMSG_DONE) {
									$getinfo = curl_getinfo($result['handle']);
									$check = $getinfo['http_code']; 
										if($check != 0) {
											$count++;
											echo $ip[array_search($result['handle'],$ch)].PHP_EOL;
											flush();
											ob_flush();
											$ips = $ip[array_search($result['handle'],$ch)]."\r\n";
											proxy_save(_FILE,$ips);
											curl_multi_remove_handle($multith,$result['handle']);
										}
								}
							}
							usleep(100);
					} 		while($run == CURLM_CALL_MULTI_PERFORM);
							usleep(100);
				}
			}
	}

* Trying 82.164.99.193...
* Trying 212.247.251.29...
* Trying 80.67.212.178...
* Trying 39.1.47.197...
* Trying 213.112.228.46...
* Trying 208.47.100.119...
* Trying 85.30.49.168...
* Trying 65.50.68.209...
* SOCKS5 read timeout
* Closing connection 1440
* Connection time-out
* Closing connection 1441
* Connection time-out
* Closing connection 1442
* Connection time-out
* Closing connection 1443
* SOCKS5 read timeout
* Closing connection 1444
* Unable to receive initial SOCKS5 response.
* Hostname mail.ru was found in DNS cache
самое интересное если в начале сокс5 списка будут валдиные прокси, тогда он отрабатывает до первого беда после одни ошибки.
Была тема Плохо работает проверка Socks5-прокси через multi curl. А HTTP-прокси — идеально. Почему такое происходит? пробовал все что посоветовали но это не помогло
в гугле инфы очень мало все что нашел это старые рапорты о баге 5 - 6 лет назад сейчас ведь версия curl стоит поновее, может что то делаю не правильно кто сталкивался с подобным будут рад за любую помощь !

P.s если проверять прокси без multi в однопоточном режиме, проверяет очень долго но без ошибок
  • Вопрос задан
  • 1713 просмотров
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
только попробовать уменьшить версию
https://curl.haxx.se/mail/tracker-2010-07/0061.html
Ответ написан
Комментировать
@Volodya771
CURLOPT_HTTPPROXYTUNNEL вот эта опция применяется только для http прокси, не знаю поможет ли это решить проблему, но можете попробовать
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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