Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich Fotos auf Instagram hochladen, ohne die offizielle API zu verwenden?
Obwohl es keine offizielle API-Funktion zum Posten von Bildern gibt, ist eine Problemumgehung durch Reverse Engineering der Instagram-API möglich . Durch die Verwendung des bereitgestellten Code-Snippets können Sie Bild-Uploads direkt aus PHP durchführen.
function SendRequest($url, $post, $post_data, $user_agent, $cookies) { // Set cURL options for API requests $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://i.instagram.com/api/v1/'.$url); curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Handle post requests if($post) { curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); } // Cookie handling if($cookies) { curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt'); } else { curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt'); } $response = curl_exec($ch); $http = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); return array($http, $response); } // Utility functions function GenerateGuid() { // Generate a random GUID return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535)); } function GenerateUserAgent() { // Generate a random user agent $resolutions = array('720x1280', '320x480', '480x800', '1024x768', '1280x720', '768x1024', '480x320'); $versions = array('GT-N7000', 'SM-N9000', 'GT-I9220', 'GT-I9100'); $dpis = array('120', '160', '320', '240'); $ver = $versions[array_rand($versions)]; $dpi = $dpis[array_rand($dpis)]; $res = $resolutions[array_rand($resolutions)]; return 'Instagram 4.'.mt_rand(1,2).'.'.mt_rand(0,2).' Android ('.mt_rand(10,11).'/'.mt_rand(1,3).'.'.mt_rand(3,5).'.'.mt_rand(0,5).'; '.$dpi.'; '.$res.'; samsung; '.$ver.'; '.$ver.'; smdkc210; en_US)'; } function GenerateSignature($data) { // Generate an API signature return hash_hmac('sha256', $data, 'b4a23f5e39b5929e0666ac5de94c89d1618a2916'); } function GetPostData($filename) { // Generate post data for image upload if(!$filename) { echo "The image doesn't exist ".$filename; } else { $post_data = array('device_timestamp' => time(), 'photo' => '@'.$filename); return $post_data; } } // Example usage $username = 'your_username'; $password = 'your_password'; $filename = 'your_image.jpg'; $caption = 'your_caption'; $user_agent = GenerateUserAgent(); $device_id = "android-".GenerateGuid(); // Log in to Instagram $data ='{"device_id":"'.$device_id.'","guid":"'.$guid.'","username":"'.$username.'","password":"'.$password.'","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"}'; $sig = GenerateSignature($data); $data = 'signed_body='.$sig.'.'.urlencode($data).'&ig_sig_key_version=4'; $login = SendRequest('accounts/login/', true, $data, $user_agent, false); // Post the picture $data = GetPostData($filename); $post = SendRequest('media/upload/', true, $data, $user_agent, true); // Configure the picture $data = '{"device_id":"'.$device_id.'","guid":"'.$guid.'","media_id":"'.$media_id.'","caption":"'.trim($caption).'","device_timestamp":"'.time().'","source_type":"5","filter_type":"0","extra":"{}","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"}'; $sig = GenerateSignature($data); $new_data = 'signed_body='.$sig.'.'.urlencode($data).'&ig_sig_key_version=4'; $conf = SendRequest('media/configure/', true, $new_data, $user_agent, true);
Wichtiger Hinweis:
Instagram kann Konten sperren, die diese Methode verwenden. Verwenden Sie es mit Vorsicht und auf eigenes Risiko.
Das obige ist der detaillierte Inhalt vonWie kann ich Fotos auf Instagram hochladen, ohne die offizielle API zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!