Задать вопрос

Как правильно реализовать cURL с прокси?

Ребят, приветствую. В общем ситуация в следующем. Есть сервис - мой, через который пользователи проходят авторизацию на стороннем ресурсе. Админ этого ресурса, поругался что все с одного IP, мультиакк и прочее. Я ему предложил, что буду работать через прокси, и он любезно согласился. Теперь пытаюсь реализовать все это. Я думал будет проще, но столкнулся со следующими трудностями:
1) Сначала я попытался сграбить прокси, от части получалось - но раз через раз, а если срабатывает, то медленно. Местами 504 вызывает, хотя таймауты стоят. Регулярками сделал проверку, видит он сайт или нет. И т. д.
2) Подумал, ну да ладно, куплю подписку прокси. Вставил 50 проксей, от их скушал все - и не на одной сайт даже не показал. Вообще отлично. (регулярка работает, проверял)
Так вот, где брать прокси для таких целей, какие нужны? Как реализовывают? Люди парсят тонны страниц, а мне нужно малость. Порядка 400-700 авторизаций в день на первых порах. А авторизованные - уже в куках на месяц, но не об этом.
Пожалуйста, направьте заблудившегося.

Это скрипт, по которому пытаюсь обратиться:
function post_sp($url, $post, $refer, $us, $auth = 1){

	global $CONNECT;

	$ch_proxy = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `login` = '$us'"));
	$ch_proxy = $ch_proxy['proxy'];

	$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36");
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
	curl_setopt($ch, CURLOPT_REFERER, $refer);
	curl_setopt($ch, CURLOPT_COOKIESESSION, true);
	curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie/sp/".$us.".txt");
	curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie/sp/".$us.".txt");


	while ( $auth == 0 ) {

			$filename= 'resource/proxy/proxy.php';
			$txt = file($filename);
			$txt2 = array_slice($txt, 0, 1);
			$txt3 = implode('', $txt2);
			file_put_contents($filename, array_slice($txt, 1));
			$proxy_auth = $txt2[0];

			curl_setopt($ch, CURLOPT_PROXY, $proxy_auth);
			curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
			curl_setopt($ch, CURLOPT_TIMEOUT, 9);
			curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 6);

			curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
			$result  = curl_exec($ch);
			preg_match('/регулярка/', $result, $res);

			if ( $res[0] == 'регулярка' ) {
				$auth = 1;
				mysqli_query($CONNECT, "UPDATE `users` SET proxy='$proxy_auth' WHERE login='$us'");
				$ch_proxy = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `login` = '$us'"));
				$ch_proxy = $ch_proxy['proxy'];
			} else {
				mysqli_query($CONNECT, "UPDATE `users` SET proxy='' WHERE login='$us'");
				$ch_proxy = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `login` = '$us'"));
				$ch_proxy = $ch_proxy['proxy'];
			}

	}
	curl_close($ch);
	return $result;
}
  • Вопрос задан
  • 1138 просмотров
Подписаться 3 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
@Byrger
Разработчик ПО для платежных систем
Я под эти задачи покупаю VPS по 100-200р
На них размещаю простой php скрипт с curl запроса до нужно сайта, а принимает он нужные переменные сверху.
А своим сайтом уже обращаюсь через curl уже на скрипт который на vps лежит.

Так-же у многих VPS хостингов можно купить стек IP адресов.
То есть ставится 1 VPS и покупается допустим 10-100 IP
Ответ написан
Комментировать
@YoungOldMan Автор вопроса
Вдруг кто столкнется с подобным. В общем нашел для решение проблемы в Tor сети.
Однако отмечу, что подойдет далеко не для всех целей.
https://habrahabr.ru/sandbox/38998/
phpforum.su/index.php?showtopic=83831
Тут все подробно расписано. Однако принудительно сменять IP у меня пока не получается.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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