Задать вопрос
@AmadeyMinisol
full stack web-developer

Авторизация на сайте с использование curl (PHP)?

Добрый день. Поздравляю всех с праздниками.
Возникла проблемка при написании парсера, в частности проблема с авторизацией на сайте https://fl.ru
если быть более конкретным, прикладываю код:
$parser = EvilApplication::getInstance()->getConfig('parser');
		$EvilCurl = curl_init();
		curl_setopt($EvilCurl,CURLOPT_URL,(isset($url)) ? $url : $parser['url']);
		curl_setopt($EvilCurl, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36");
		curl_setopt($EvilCurl, CURLOPT_SSL_VERIFYPEER, 0);
		curl_setopt($EvilCurl, CURLOPT_SSL_VERIFYHOST, 0);
		curl_setopt($EvilCurl, CURLOPT_POST, 1);
		curl_setopt($EvilCurl, CURLOPT_POSTFIELDS, 'action=login&autologin=1&login='.$parser['user_login'].'&passwd='.$parser['user_password'].'&u_token_key=79cdadf2997a19224a1956505ff6f181');
		curl_setopt($EvilCurl, CURLOPT_HEADER, 0);
		curl_setopt($EvilCurl, CURLOPT_REFERER, (isset($url)) ? $url : $parser['url']);
		curl_setopt($EvilCurl, CURLOPT_COOKIESESSION, true);
		curl_setopt($EvilCurl, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($EvilCurl, CURLOPT_COOKIEJAR,  dirname(__FILE__).'/cookie.txt'); 
        curl_setopt($EvilCurl, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt'); 
		$response = curl_exec($EvilCurl);
		#закрываем соединение
		die('Look: '.$response);
		return $response;
  • Вопрос задан
  • 1912 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
@LordTimon
Нужно парсить форму авторизации
В ней есть то, что вам нужно
<input type="hidden" value="b0cd9f3da9116002f2da8m3621578a7c" name="u_token_key">
Ответ написан
Комментировать
Предыдущий оратор прав. Вам нужно парсить u_token_key, а только потом делать запрос на авторизацию. Но лучше не париться и юзать Python + Selenium/Ghost.py
Ответ написан
Комментировать
@AmadeyMinisol Автор вопроса
full stack web-developer
В питон совсем не могу, но вот например пробую делать сначала запрос, получать токен и дальше с ним делать запрос, результат тот же:

public function authUser($url=null,$token = '1'){
		
		$parser = EvilApplication::getInstance()->getConfig('parser');
		$EvilCurl = curl_init();
		curl_setopt($EvilCurl,CURLOPT_URL,(isset($url)) ? $url : $parser['url']);
		curl_setopt($EvilCurl, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36");
		curl_setopt($EvilCurl, CURLOPT_SSL_VERIFYPEER, 0);
		curl_setopt($EvilCurl, CURLOPT_SSL_VERIFYHOST, 0);
		curl_setopt($EvilCurl, CURLOPT_POST, 1);
		curl_setopt($EvilCurl, CURLOPT_POSTFIELDS, 'action=login&autologin=1&login='.$parser['user_login'].'&passwd='.$parser['user_password'].'&u_token_key='.$token);
		curl_setopt($EvilCurl, CURLOPT_HEADER, 0);
		curl_setopt($EvilCurl, CURLOPT_REFERER, (isset($url)) ? $url : $parser['url']);
		curl_setopt($EvilCurl, CURLOPT_COOKIESESSION, true);
		curl_setopt($EvilCurl, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($EvilCurl, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($EvilCurl, CURLOPT_COOKIEJAR,  dirname(__FILE__).'/cookie.txt'); 
		curl_setopt($EvilCurl, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt'); 
		$response = curl_exec($EvilCurl);
		#закрываем соединение
		if($token=='1'){
			$pos = strpos($response,'var _TOKEN_KEY =');
			$data = substr($response, $pos,strlen($response));
			$pos = strpos($data,"';");
			$data = substr($data, 0,$pos);
			$this->authUser($url,str_replace("var _TOKEN_KEY = '",'',$data));
		}else{
			die($response);
		}
		curl_close($EvilCurl);
		#return $response;
	}
Ответ написан
Ваш ответ на вопрос

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

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