Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Muat Naik Foto ke Instagram Tanpa Menggunakan API Rasmi?
Walaupun tiada fungsi API rasmi untuk menyiarkan gambar, penyelesaian boleh dilakukan dengan API Instagram kejuruteraan terbalik . Dengan menggunakan coretan kod yang disediakan, anda boleh mencapai muat naik imej terus daripada PHP.
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);
Notis Penting:
Instagram mungkin melarang akaun menggunakan kaedah ini. Gunakannya dengan berhati-hati dan atas risiko anda sendiri.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Muat Naik Foto ke Instagram Tanpa Menggunakan API Rasmi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!