dllweb
@dllweb

Авторизация на instagram через curl, почему не получается?

Всем привет, и вот ещё раз я с тем же вопросом, всё никак не получается авторизоваться на instagram
function getCookie($str){
	
		
		// Разбор куков
		$pattern_exec_cookie = "~Set-Cookie: (.*?);~ui";
		preg_match_all($pattern_exec_cookie, $str, $c);
		$cookie = "";
		foreach($c[0] as $rc){
			$cookie .= str_replace("Set-Cookie: ", "", $rc);
		}

		$cookie_array = explode(";", $cookie);
		$cookie_str = "";
		foreach($cookie_array as $ca){
			$ex = explode("=", $ca);
				if(isset($ex[1]) and !empty($ex[1]) and $ex[1] != '""'){
					$cookie_str .= $ex[0]."=".$ex[1]."; ";
				}
			}
		return trim($cookie_str);
}

$login = "login";
$passw = "Jyv6ddacca";

$user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)';
$url_auth = "https://www.instagram.com/accounts/login";
$url_auth_ajax = "https://www.instagram.com/accounts/login/ajax/";

			$ch = curl_init();
			curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
			curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
			curl_setopt($ch, CURLOPT_TIMEOUT, 30);
			curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
			curl_setopt($ch, CURLOPT_HEADER, true);
			curl_setopt($ch, CURLINFO_HEADER_OUT, true);
			curl_setopt($ch, CURLOPT_URL, $url_auth);

			$curl_exec = curl_exec($ch);
			$bot_cookie = getCookie($curl_exec);

			var_dump($bot_cookie);
			
			curl_close($ch);
			// file_put_contents("insta_cookie.txt", trim($cookie_str)."\n", FILE_APPEND);	
	

			$data = array(
			"username"=>$login,
			"password"=>$passw
			);
			
			$pattern = "~csrftoken=.*?;~ui";
			preg_match($pattern, $bot_cookie, $token);
			$ctoken = explode("=", str_replace(";", "", $token[0]));
			$csrf = $ctoken[1];
			
			
			$ch1 = curl_init();
			curl_setopt($ch1, CURLOPT_USERAGENT, $user_agent);
			curl_setopt($ch1, CURLOPT_SSL_VERIFYHOST, 0);
			curl_setopt($ch1, CURLOPT_SSL_VERIFYPEER, 0);
			curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1);
			curl_setopt($ch1, CURLOPT_NOBODY, 1);	
			curl_setopt($ch1, CURLOPT_TIMEOUT, 30);
			curl_setopt($ch1, CURLOPT_POST, true);
			curl_setopt($ch1, CURLOPT_POSTFIELDS, $data);
			curl_setopt($ch1, CURLOPT_FOLLOWLOCATION, true);
			curl_setopt($ch1, CURLOPT_HEADER, true);
			curl_setopt($ch1, CURLINFO_HEADER_OUT, true);
			curl_setopt($ch1, CURLOPT_HTTPHEADER, array(
			'authority: www.instagram.com',
			'method: POST',
			'path: /accounts/login/ajax/', 
			'scheme: https',
			'content-length: 44',
			'accept: */*',
			'accept-language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,und;q=0.2',
			'content-type: application/x-www-form-urlencoded',
			'cookie: s_network=; ig_pr=1; ig_vw=1920; ds_user_id=2008956070; '.$bot_cookie,
			'origin: https://www.instagram.com',
			'referer: https://www.instagram.com/',
			'user-agent: '.$user_agent,
			'x-csrftoken: '.$csrf,
			'x-instagram-ajax: 1',
			'x-requested-with: XMLHttpRequest')
			);
			curl_setopt($ch1, CURLOPT_URL, $url_auth_ajax);

			
			$result_auth = curl_exec($ch1);
			file_put_contents("insta_cookie.txt", $result_auth."\n", FILE_APPEND);
			$info = curl_getinfo($ch1);
			var_dump($info);
			curl_close($ch1);


Результат

HTTP/1.1 200 OK
Strict-Transport-Security: max-age=86400
Content-Language: ru
Expires: Sat, 01 Jan 2000 00:00:00 GMT
Vary: Cookie, Accept-Language
Pragma: no-cache
Cache-Control: private, no-cache, no-store, must-revalidate
Date: Mon, 24 Oct 2016 12:26:36 GMT
Content-Type: application/json
Set-Cookie: csrftoken=uPBpNRhUyeVowYioX3C8dgIdpynQUShn; expires=Mon, 23-Oct-2017 12:26:36 GMT; Max-Age=31449600; Path=/; secure
Connection: keep-alive
Content-Length: 52

{"status": "ok", "authenticated": false, "user": ""}
  • Вопрос задан
  • 3605 просмотров
Пригласить эксперта
Ответы на вопрос 1
@nomoo
Кажется, тут все есть: stackoverflow.com/a/37711728
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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