วิธีโพสต์รูปภาพลง Instagram โดยใช้ API


109

ฉันกำลังสร้างแอปพลิเคชั่น php ซึ่งต้องการโพสต์รูปภาพที่ผู้ใช้อัปโหลดไปยัง Instagram โดยตรง แต่หลังจากการค้นหาอย่างรวดเร็วฉันพบว่าไม่มีฟังก์ชันดังกล่าวใน API :( และรู้สึกแปลก ๆ ... เพราะมันควรจะมีให้ฉัน ฉันไม่แน่ใจว่ามีวิธีอื่น (ยกเว้นแอพสำหรับ Android และ iOS) ในการอัปโหลดรูปภาพโดยใช้ php โปรดแจ้งความคิดให้ฉันทราบหากมีความเป็นไปได้

ฉันยังอ่านสิ่งนี้

ฉันจะแชร์ลิงค์และรูปภาพกับ Instagram โดยใช้ PHP ได้อย่างไร


2
ไม่สามารถโพสต์รูปภาพไปยัง Instagram ผ่าน API ได้
Amal Murali

3
ฉันสงสัยว่าพวกเขา - blog.hootsuite.com/schedule-instagram-posts-in-hootsuite - ทำอย่างไร ... (ประกาศบล็อกถูกโพสต์เมื่อ 8 ชั่วโมงที่แล้ว)
Mars Robertson

1
@MichalStefanow ฉันคิดว่ามันเป็นคำถามที่ดีเช่นกัน การประกาศบล็อกดังกล่าวยังมีความคิดเห็นจาก Hootsuite (ในส่วนความคิดเห็นด้านล่างบทความ) ว่าไม่มีการโพสต์โดยตรงไปยัง Instagram เนื่องจากข้อ จำกัด ของ API และการโพสต์ขั้นสุดท้ายจะต้องทำใน Instagram
thecommonthread

แล้วกลางปี ​​2019 ล่ะ? มีการเปลี่ยนแปลงหรือไม่?
userlond

คำตอบ:


81

หากคุณอ่านลิงก์ที่คุณแชร์คำตอบที่ยอมรับคือ:

คุณไม่สามารถโพสต์รูปภาพไปยัง Instagram ผ่าน API

ดูเหมือนว่าคุณสามารถเลียนแบบ instagram บนพีซีได้

Bluestacksเป็นโปรแกรมจำลองที่ให้คุณรันแอพ Android บนพีซี / Mac ของคุณเป็นต้น

ฉันไม่แน่ใจว่ามันทำงานได้ดีแค่ไหน


58
ถ้าไม่มีวิธีทำฉันก็ไม่คิดว่าจะมีวิธี 'อื่น'
Albzi

1
@bart ในเวลาที่ @Ritu โพสต์มันทำ Instagram และposts.soไม่ใช่postso.com
Albzi

2
@usama น่าเสียดายที่ไม่เป็นทางการ แต่ฉันได้ยินข่าวลือว่าถ้าคุณไปที่เว็บไซต์ของพวกเขาและลดขนาดเป็นมุมมองมือถือคุณสามารถทำได้ ไม่ได้ลองด้วยตัวเอง
Albzi

1
@Albzi หากคุณใช้ Google Chrome ไปที่เว็บไซต์ Instagram และคลิกขวาและใช้ "ตรวจสอบ" มันจะปรับขนาดและเปลี่ยนส่วนหัวเป็นลายเซ็นเบราว์เซอร์มือถือที่อนุญาต คุณอาจต้องรีเฟรชหน้า Instagram หนึ่งครั้งใน "ตรวจสอบ" แต่จะช่วยให้คุณสามารถใช้เว็บไซต์เป็นมือถือและสามารถโพสต์รูปภาพและสิ่งที่ไม่ได้ อย่างไรก็ตาม; สิ่งนี้ไม่ได้ช่วยตอบคำถามเกี่ยวกับ API ฉันชอบที่จะสามารถโพสต์รูปภาพจาก PHP ไปยัง Instagram เพื่อแสดงคะแนนสุดท้ายของทีมของเรา
Dawson Irvine

1
จุดยุติธรรม @BrodaNoel บางทีฉันควรเปลี่ยนเป็นไม่เป็นทางการ
Albzi

102

อัปเดต:

ตอนนี้ Instagram กำลังแบนบัญชีและลบภาพโดยใช้วิธีนี้ โปรดใช้ด้วยความระมัดระวัง


ดูเหมือนว่าทุกคนที่ตอบคำถามนี้ด้วยบางสิ่งตามบรรทัดit can't be doneนั้นค่อนข้างถูกต้อง อย่างเป็นทางการคุณไม่สามารถโพสต์รูปภาพไปยัง Instagram ด้วย API ได้ อย่างไรก็ตามหากคุณทำวิศวกรรมย้อนกลับ API คุณสามารถทำได้

function SendRequest($url, $post, $post_data, $user_agent, $cookies) {
    $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);

    if($post) {
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    }

    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);
}

function GenerateGuid() {
     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() {  
     $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) {
     return hash_hmac('sha256', $data, 'b4a23f5e39b5929e0666ac5de94c89d1618a2916');
}

function GetPostData($filename) {
    if(!$filename) {
        echo "The image doesn't exist ".$filename;
    } else {
        $post_data = array('device_timestamp' => time(), 
                        'photo' => '@'.$filename);
        return $post_data;
    }
}


// Set the username and password of the account that you wish to post a photo to
$username = 'ig_username';
$password = 'ig_password';

// Set the path to the file that you wish to post.
// This must be jpeg format and it must be a perfect square
$filename = 'pictures/test.jpg';

// Set the caption for the photo
$caption = "Test caption";

// Define the user agent
$agent = GenerateUserAgent();

// Define the GuID
$guid = GenerateGuid();

// Set the devide ID
$device_id = "android-".$guid;

/* LOG IN */
// You must be logged in to the account that you wish to post a photo too
// Set all of the parameters in the string, and then sign it with their API key using SHA-256
$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, $agent, false);

if(strpos($login[1], "Sorry, an error occurred while processing this request.")) {
    echo "Request failed, there's a chance that this proxy/ip is blocked";
} else {            
    if(empty($login[1])) {
        echo "Empty response received from the server while trying to login";
    } else {            
        // Decode the array that is returned
        $obj = @json_decode($login[1], true);

        if(empty($obj)) {
            echo "Could not decode the response: ".$body;
        } else {
            // Post the picture
            $data = GetPostData($filename);
            $post = SendRequest('media/upload/', true, $data, $agent, true);    

            if(empty($post[1])) {
                 echo "Empty response received from the server while trying to post the image";
            } else {
                // Decode the response 
                $obj = @json_decode($post[1], true);

                if(empty($obj)) {
                    echo "Could not decode the response";
                } else {
                    $status = $obj['status'];

                    if($status == 'ok') {
                        // Remove and line breaks from the caption
                        $caption = preg_replace("/\r|\n/", "", $caption);

                        $media_id = $obj['media_id'];
                        $device_id = "android-".$guid;
                        $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';

                       // Now, configure the photo
                       $conf = SendRequest('media/configure/', true, $new_data, $agent, true);

                       if(empty($conf[1])) {
                           echo "Empty response received from the server while trying to configure the image";
                       } else {
                           if(strpos($conf[1], "login_required")) {
                                echo "You are not logged in. There's a chance that the account is banned";
                            } else {
                                $obj = @json_decode($conf[1], true);
                                $status = $obj['status'];

                                if($status != 'fail') {
                                    echo "Success";
                                } else {
                                    echo 'Fail';
                                }
                            }
                        }
                    } else {
                        echo "Status isn't okay";
                    }
                }
            }
        }
    }
}

เพียงคัดลอกและวางโค้ดด้านบนในโปรแกรมแก้ไขข้อความของคุณเปลี่ยนตัวแปรสองสามตัวตามนั้นและ VOILA! ฉันเขียนบทความเกี่ยวกับเรื่องนี้และทำหลายครั้งแล้ว ดูการสาธิตที่นี่


1
ไม่สามารถเข้าสู่ระบบโดยใช้รหัสด้านบนโดยไม่ใช้โทรศัพท์ ฉันเพิ่งใช้ใน localhost โดยใช้พีซีและฉันเพิ่งได้รับข้อความแสดงข้อผิดพลาดเช่นเดียวกับ **** การตอบสนองที่ว่างเปล่าที่ได้รับจากเซิร์ฟเวอร์ขณะพยายามเข้าสู่ระบบ *** วิธีแก้ข้อผิดพลาดนั้น
Rabesh Lal Shrestha

1
มีตัวแปร. net ที่ใช้งานได้จากรหัสนี้หรือไม่ ฉันไม่สามารถทำงานกับ PHP และเวอร์ชัน. NET ของโค้ดนี้จะมีประโยชน์จริงๆ!
Yosoyke

1
ฉันสามารถเรียกใช้สคริปต์ได้สำเร็จในบัญชี Instagram ใหม่
loretoparisi

2
หากคุณได้รับstatus isnt okayโปรดตรวจสอบว่า CURL มีสิทธิ์ในการสร้างไฟล์ cookies.txt chmod 777 /directoryจะทำสิ่งนี้ (ระวัง) ฉันได้รับข้อความแสดงความสำเร็จจากสคริปต์ของคุณ แต่โพสต์ไม่ปรากฏบน Instagram ยังใช้งานได้หรือไม่
kmoney12

8
โค้ดใช้งานได้ดี แต่ guid และ deviceid เปลี่ยนทุกครั้งและ instagram ก็แบนบัญชีของฉันหลังจากโพสต์สำเร็จเพียงครั้งเดียว รูปภาพถูกลบออกด้วย
Alp Altunel

27

อัปเดต ได้แล้ว:

https://developers.facebook.com/docs/instagram-api/content-publishing

Content Publishing API เป็นส่วนย่อยของปลายทาง Instagram Graph API ที่อนุญาตให้คุณเผยแพร่วัตถุสื่อ การเผยแพร่วัตถุสื่อด้วย API นี้เป็นกระบวนการสองขั้นตอนโดยคุณต้องสร้างคอนเทนเนอร์ออบเจ็กต์สื่อก่อนจากนั้นเผยแพร่คอนเทนเนอร์ในบัญชีธุรกิจของคุณ


22
เป็นที่น่าสังเกตว่า "Content Publishing API อยู่ในช่วงเบต้าแบบปิดสำหรับพาร์ทเนอร์การตลาดของ Facebook และพาร์ทเนอร์ Instagram เท่านั้นเราไม่เปิดรับผู้สมัครใหม่ในขณะนี้"
William Reed

สิ่งนี้ใช้ได้กับบัญชีธุรกิจเท่านั้นหรือไม่
Suncatcher

นี่คือคำตอบอย่างไร? เป็นไปไม่ได้ API นี้มีไว้สำหรับพันธมิตรเท่านั้น ...
Matej J

2
มันแจ้งว่าไม่พบเพจ!
Mohamed Imran

12

ตอนนี้ Instagram ช่วยให้ธุรกิจสามารถกำหนดเวลาโพสต์ได้โดยใช้ปลายทางการเผยแพร่เนื้อหาเบต้าใหม่

https://developers.facebook.com/blog/post/2018/01/30/instagram-graph-api-updates/

อย่างไรก็ตามบล็อกโพสต์นี้ - https://business.instagram.com/blog/instagram-api-features-updates - ทำให้ชัดเจนว่าพวกเขากำลังเปิด API นั้นให้กับพันธมิตรการตลาดบน Facebook หรือพันธมิตร Instagram เท่านั้น

ในการเริ่มต้นกับการตั้งเวลาโพสต์โปรดทำงานร่วมกับพันธมิตรการตลาดบน Facebook หรือพันธมิตร Instagram ของเรา

ลิงก์นี้จาก Facebook - https://developers.facebook.com/docs/instagram-api/content-publishing - แสดงรายการเป็นเบต้าแบบปิด

API การเผยแพร่เนื้อหาอยู่ในช่วงเบต้าแบบปิดสำหรับพันธมิตรการตลาดของ Facebook และพันธมิตร Instagram เท่านั้น เราไม่เปิดรับผู้สมัครใหม่ในขณะนี้

แต่นี่คือวิธีที่คุณจะทำ:

คุณมีรูปถ่ายที่ ...

https://www.example.com/images/bronz-fonz.jpg

คุณต้องการเผยแพร่ด้วยแฮชแท็ก "#BronzFonz"

คุณสามารถใช้/user/mediaedge เพื่อสร้างคอนเทนเนอร์ดังนี้:

POST graph.facebook.com 
  /17841400008460056/media?
    image_url=https%3A%2F%2Fwww.example.com%2Fimages%2Fbronz-fonz.jpg&
    caption=%23BronzFonz

สิ่งนี้จะส่งคืน ID คอนเทนเนอร์ (สมมติว่า 17889455560051444) ซึ่งคุณจะเผยแพร่โดยใช้ขอบ / user / media_publish ดังนี้:

POST graph.facebook.com
  /17841405822304914/media_publish
    ?creation_id=17889455560051444

ตัวอย่างจากนี้เอกสาร


ขอบคุณ แต่ที่ฉันสามารถสร้างแอพสำหรับสิ่งนี้เช่นเราสามารถสร้างแอพสำหรับ facebook ในพื้นที่ผู้พัฒนา facebook
usama

รหัสนี้ทำให้เกิดข้อผิดพลาด - "แอปพลิเคชันไม่มีความสามารถในการเรียก API นี้"? นี่เป็นสิ่งที่ไม่สมเหตุสมผลจาก บริษัท เทคโนโลยีเหล่านี้ พวกเขาจะขอใช้มาจากพันธมิตรที่ต้องการได้อย่างไรและไม่สร้างแอปของเราเอง
Amit Khare

9

ฉันลองใช้ IFTTT และบริการอื่น ๆ อีกมากมาย แต่ทั้งหมดกำลังทำสิ่งต่างๆหรือโพสต์จาก Instagram ไปยังแพลตฟอร์มอื่นที่ไม่ใช่ Instagram ฉันอ่านเพิ่มเติมเพื่อพบว่า Instagram ไม่มี API ดังกล่าวในตอนนี้

การใช้สแต็กสีน้ำเงินนั้นเกี่ยวข้องกับการติดตั้งจำนวนมากและการทำสิ่งต่างๆด้วยตนเองเท่านั้น

อย่างไรก็ตามคุณสามารถใช้ Google Chrome บนเดสก์ท็อปเพื่อโพสต์บน Instagram ได้ ต้องปรับแต่งเล็กน้อย

  1. เปิด chrome ของคุณและเรียกดู Instagram.com
  2. ไปที่ตรวจสอบองค์ประกอบโดยคลิกขวาที่ chrome
  3. จากเมนูคอร์เนอร์ด้านขวาบนให้เลือกเครื่องมือเพิ่มเติม
  4. เลือกเงื่อนไขเครือข่ายเพิ่มเติม
  5. ในส่วนการเลือกเครือข่ายดูส่วนที่สองมีชื่อตัวแทนผู้ใช้
  6. ยกเลิกการเลือกเลือกโดยอัตโนมัติและเลือกchrome สำหรับ Androidจากรายการตัวแทนผู้ใช้ที่กำหนด
  7. รีเฟรชหน้า Instagram.com ของคุณ

คุณจะสังเกตเห็นการเปลี่ยนแปลงใน UI และตัวเลือกในการโพสต์บน Instagram ชีวิตของคุณตอนนี้ง่าย แจ้งให้เราทราบวิธีที่ง่ายกว่าหากคุณสามารถหาได้

ป้อนคำอธิบายภาพที่นี่

ฉันเขียนบนhttps://www.inteligentcomp.com/2018/11/how-to-upload-to-instagram-from-pc-mac.htmlเกี่ยวกับเรื่องนี้

ภาพหน้าจอการทำงาน

ป้อนคำอธิบายภาพที่นี่


แต่คุณไม่สามารถโพสต์อะไรได้
Aarvy

1
ฉันเพิ่งโพสต์โดยใช้วิธีการเดียวกัน มันทำงานได้ดีอย่างแน่นอน ดูภาพหน้าจอในการอัปเดต
Dheeraj Thedijje

นี่มันอัจฉริยะ!
Thomas G.

5

สำหรับผู้ใช้ที่พบคำถามนี้คุณสามารถส่งภาพถ่ายไปยังขั้นตอนการแชร์ Instagram (จากแอปของคุณไปยังหน้าจอฟิลเตอร์) บน iPhone โดยใช้ตะขอของ iPhone: http://help.instagram.com/355896521173347นอกเหนือจากนั้นขณะนี้ยังไม่มี ทางในเวอร์ชัน 1 ของ api


1
@Ritu น่าสนใจ. จะต้องเป็นไปได้ แต่ดูเหมือนว่า API จะไม่อนุญาต ขอบคุณสำหรับการแบ่งปันฉันต้องการตรวจสอบ
Amru E.

1
ฉันก็สงสัยเหมือนกันว่าพวกเขาทำมันได้อย่างไรโปรดแบ่งปันหากคุณได้รับสิ่งที่เกี่ยวข้อง
Ritu

2
ดูเหมือนว่าไคลเอนต์ที่ไม่ได้รับอนุญาตส่วนใหญ่จะทำวิศวกรรมย้อนกลับ API โดยการถอดรหัสและตรวจสอบการรับส่งข้อมูล SSL จากแอปไปยังเซิร์ฟเวอร์ อย่างน้อยก็เป็นกรณีของ Snapchat อาจจะเหมือนกันที่นี่
Amru E.

แอป Flume สำหรับ Mac ยังโพสต์ในฟีดของคุณด้วย
Joshua - Pendo

0

ไม่มี API สำหรับโพสต์รูปภาพไปยัง instagram โดยใช้ API แต่มีวิธีง่ายๆคือติดตั้งส่วนขยายของ Google "User Agent" ซึ่งจะแอบแฝงเบราว์เซอร์ของคุณไปยังเวอร์ชัน Chrome บนอุปกรณ์เคลื่อนที่ของ Android นี่คือลิงค์ส่วนขยายhttps://chrome.google.com/webstore/detail/user-agent-switcher/clddifkhlkcojbojppdojfeeikdkgiae?utm_source=chrome-ntp-icon

เพียงคลิกที่ไอคอนส่วนขยายและเลือก chrome สำหรับ Android และเปิด Instagram.com


0

หากมี UI แสดงว่ามี "API" ลองใช้ตัวอย่างต่อไปนี้: ฉันต้องการเผยแพร่รูปภาพที่ฉันใช้ในโพสต์บล็อกใหม่ที่ฉันสร้างขึ้น สมมติว่าเป็น Wordpress

  1. สร้างบริการที่คอยตรวจสอบบล็อกของคุณตลอดเวลาผ่าน RSS
  2. เมื่อมีการโพสต์บล็อกใหม่ให้ดาวน์โหลดรูปภาพ
  3. (ไม่บังคับ) ใช้ API ของบุคคลที่สามเพื่อใช้การวางซ้อนบางอย่างและไม่ใช้อะไรกับรูปภาพของคุณ
  4. วางภาพถ่ายในตำแหน่งที่รู้จักกันดีบนพีซีหรือเซิร์ฟเวอร์ของคุณ
  5. กำหนดค่า Chrome (อ่านด้านบน) เพื่อให้คุณสามารถใช้เบราว์เซอร์เป็นอุปกรณ์เคลื่อนที่ได้
  6. ใช้ Selenium (หรือไลบรารีอื่น ๆ ) จำลองกระบวนการทั้งหมดในการโพสต์บน Instagram
  7. เสร็จแล้ว คุณควรมีไว้

0

สำหรับใครที่กำลังค้นหาวิธีแก้ปัญหาเกี่ยวกับการโพสต์ลง Instagram โดยใช้AWS lambdaและเชิดหุ่น ( chrome-aws-lambda ) ตั้งข้อสังเกตว่าการแก้ปัญหานี้ช่วยให้คุณสามารถโพสต์ 1 รูปภาพสำหรับแต่ละโพสต์เท่านั้น หากคุณไม่ได้ใช้แลมด้าให้แทนที่chrome-aws-lambdaด้วยpuppeteer.

สำหรับการเปิดตัวครั้งแรกของแลมบ์ดามันเป็นเรื่องปกติที่จะไม่ทำงานเพราะ Instagram ตรวจจับ“พยายามเข้าสู่ระบบที่น่าสงสัย” เพียงแค่ไปที่หน้า Instagram โดยใช้พีซีของคุณและอนุมัติทุกอย่างจะดี

นี่คือรหัสของฉันอย่าลังเลที่จะปรับให้เหมาะสม:

// instagram.js
const chromium = require('chrome-aws-lambda');

const username = process.env.IG_USERNAME;
const password = process.env.IG_PASSWORD;

module.exports.post = async function(fileToUpload, caption){
    const browser = await chromium.puppeteer.launch({
        args: [...chromium.args, '--window-size=520,700'],
        defaultViewport: chromium.defaultViewport,
        executablePath: await chromium.executablePath,
        headless: false,
        ignoreHTTPSErrors: true,
    });
    const page = await browser.newPage();
    await page.setUserAgent('Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_2 like Mac OS X) AppleWebKit/603.2.4 (KHTML, like Gecko) FxiOS/7.5b3349 Mobile/14F89 Safari/603.2.4');
    await page.goto('https://www.instagram.com/', {waitUntil: 'networkidle2'});
    
    const [buttonLogIn] = await page.$x("//button[contains(., 'Log In')]");
    if (buttonLogIn) {
        await buttonLogIn.click();
    }

    await page.waitFor('input[name="username"]');
    await page.type('input[name="username"]', username)
    await page.type('input[name="password"]', password)
    await page.click('form button[type="submit"]');

    await page.waitFor(3000);
    const [buttonSaveInfo] = await page.$x("//button[contains(., 'Not Now')]");
    if (buttonSaveInfo) {
        await buttonSaveInfo.click();
    }

    await page.waitFor(3000);
    const [buttonNotificationNotNow] = await page.$x("//button[contains(., 'Not Now')]");
    const [buttonNotificationCancel] = await page.$x("//button[contains(., 'Cancel')]");
    if (buttonNotificationNotNow) {
        await buttonNotificationNotNow.click();
    } else if (buttonNotificationCancel) {
        await buttonNotificationCancel.click(); 
    }

    await page.waitFor('form[enctype="multipart/form-data"]');
    const inputUploadHandle = await page.$('form[enctype="multipart/form-data"] input[type=file]');

    await page.waitFor(5000);
    const [buttonPopUpNotNow] = await page.$x("//button[contains(., 'Not Now')]");
    const [buttonPopUpCancel] = await page.$x("//button[contains(., 'Cancel')]");
    if (buttonPopUpNotNow) {
        await buttonPopUpNotNow.click();
    } else if (buttonPopUpCancel) {
        await buttonPopUpCancel.click(); 
    }

    await page.click('[data-testid="new-post-button"]')
    await inputUploadHandle.uploadFile(fileToUpload);

    await page.waitFor(3000);
    const [buttonNext] = await page.$x("//button[contains(., 'Next')]");
    await buttonNext.click();

    await page.waitFor(3000);
    await page.type('textarea', caption);

    const [buttonShare] = await page.$x("//button[contains(., 'Share')]");
    await buttonShare.click();
    await page.waitFor(3000);

    return true;
};
// handler.js

await instagram.post('/tmp/image.png', '#text');

มันจะต้องเป็นเส้นทางของแฟ้มท้องถิ่นถ้ามันเป็นของ URL ดาวน์โหลดไป tmp / โฟลเดอร์แรก


นั่นเป็นวิธีแก้ปัญหาที่ค่อนข้างเรียบร้อย :) ขอบคุณ
Kristoffer Berg - EcodeAS
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.