'How to log in Instagram via cUrl?

$username = "login";
$password = "pass";
$cookie = $username.".txt";
$useragent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/50.0.2661.102 Chrome/50.0.2661.102 Safari/537.36";
$url = 'https://instagram.com/';
$arrSetHeaders = array(
    "User-Agent: $useragent",
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language: en-US,en;q=0.5',
    'Accept-Encoding: deflate, br',
    'Connection: keep-alive',
    'cache-control: max-age=0'
    );
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $arrSetHeaders);     
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__)."/".$cookie);
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__)."/".$cookie);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_POSTREDIR, 3);

$page = curl_exec($ch);
curl_close($ch);
echo $page;
sleep(5);

preg_match_all('/^Set-Cookie:\s*([^;]*)/mi', $page, $matches);
$cookieFileContent = '';
foreach($matches[1] as $item) 
{
    $cookieFileContent .= "$item; ";
}

$cookieFileContent = rtrim($cookieFileContent, '; ');
$cookieFileContent = str_replace('sessionid=; ', '', $cookieFileContent);

$oldContent = file_get_contents(dirname(__FILE__)."/".$cookie);
$oldContArr = explode("\n", $oldContent);

if(count($oldContArr)) {
    foreach($oldContArr as $k => $line){
        if(strstr($line, '# ')){
            unset($oldContArr[$k]);
        }
    }
    $newContent = implode("\n", $oldContArr);
    $newContent = trim($newContent, "\n");
    file_put_contents( dirname(__FILE__)."/".$cookie, $newContent);
}

preg_match('|csrftoken(.*)|', file_get_contents(dirname(__FILE__)."/".$cookie), $csrf);
$crf = trim($csrf[1]);
$arrSetHeaders = array(
    "User-Agent: $useragent",
    "X-CSRFToken: $crf",
    "x-csrftoken: $crf",
    'X-Instagram-AJAX: 1',
    'X-Requested-With: XMLHttpRequest',
    "Referer: https://instagram.com",
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language: en-US,en;q=0.5',
    'Accept-Encoding: deflate, br',
    'Connection: keep-alive',
    'cache-control: max-age=0',
    );
$post = array('username' => $username, 'password' => $password, 'csrfmiddlewaretoken' => $crf);
$url = 'https://instagram.com/accounts/login/ajax/';
curl_setopt($ch, CURLOPT_HTTPHEADER, $arrSetHeaders);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__)."/".$cookie);
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__)."/".$cookie);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_REFERER, 'https://instagram.com/');
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_POSTREDIR, 3);
$page = curl_exec($ch);
curl_close($ch);
var_dump($page);

returns bool(false)

what is wrong? how to log in instagram using curl request to accounts/login/ajax/



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source