Доброго времени друзья, вопрос следующий, сколько раз не пытался авторизоваться на инстаграме через
PHP используя CURL так и не получилось в итоге. Делаю следующим образом
создаю запрос на страницу - "
https://www.instagram.com/accounts/login"
Сразу же выдергиваю оттуда csrf токен для последующего обращения заполненной формы, отправляю, в ответ приходит какой-то ужос
Ниже привожу полный код попытки авторизации, объясните пожалуйста что происходит, что я делаю не так?
<?php
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 = "PssWrd";
$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";
$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);
curl_close($ch);
$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, 0);
curl_setopt($ch1, CURLOPT_COOKIE, $bot_cookie);
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-encoding: gzip, deflate, br',
'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; '.$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);
echo $result_auth;
curl_close($ch1);
?>
Пожалуйста!