उपयोगकर्ता के रूप में प्रमाणित किए बिना मैं Instagram से उपयोगकर्ता का मीडिया कैसे प्राप्त कर सकता हूं?


175

मैं उपयोगकर्ता के हाल के इंस्टाग्राम मीडिया को साइडबार पर रखने की कोशिश कर रहा हूं। मैं मीडिया को लाने के लिए इंस्टाग्राम एपीआई का उपयोग करने की कोशिश कर रहा हूं।

http://instagram.com/developer/endpoints/users/

दस्तावेज़ GET के लिए कहता है https://api.instagram.com/v1/users/<user-id>/media/recent/, लेकिन यह OAuth एक्सेस टोकन पास करने के लिए कहता है। एक पहुंच टोकन उपयोगकर्ता की ओर से कार्य करने के लिए प्राधिकरण का प्रतिनिधित्व करता है। मैं नहीं चाहता कि उपयोगकर्ता इसे साइडबार पर देखने के लिए इंस्टाग्राम पर लॉग इन करें। उन्हें इंस्टाग्राम अकाउंट होना भी नहीं चाहिए।

उदाहरण के लिए, मैं http://instagram.com/thebrainscoop पर इंस्टाग्राम पर लॉग इन किए बिना जा सकता हूं और तस्वीरें देख सकता हूं। मैं एपीआई के माध्यम से ऐसा करना चाहता हूं।

इंस्टाग्राम एपीआई में, गैर-उपयोगकर्ता-प्रमाणित अनुरोध एक के client_idबजाय गुजरता है access_token। अगर मैं कोशिश करता हूं, हालांकि, मुझे मिलता है:

{
  "meta":{
    "error_type":"OAuthParameterException",
    "code":400,
    "error_message":"\"access_token\" URL parameter missing. This OAuth request requires an \"access_token\" URL parameter."
  }
}

तो, क्या यह संभव नहीं है? क्या किसी उपयोगकर्ता के नवीनतम (सार्वजनिक) मीडिया को पहले OAuth के माध्यम से एक Instagram खाते में लॉग इन करने के लिए बिना किसी उपयोगकर्ता को लाने का कोई तरीका नहीं है?


यह इस प्लगइन के साथ संभव है, बस स्रोत कोड की जांच करें कि कैसे उन्होंने किसी उपयोगकर्ता के नवीनतम सार्वजनिक मीडिया को अपने उपयोगकर्ता के खाते में प्रवेश करने के लिए कहा बिना। : D smashballoon.com/instagram-feed/demo आपको बस एक क्लाइंट आईडी की जरूरत है, कोई एक्सेस टोकन की जरूरत नहीं है। : D
jehzlau

आपको ऑर्ट करने की जरूरत है ताकि वे आपको ट्रैक कर सकें और आपके डाउनलोड (दरों ...) को हर बड़े एपीआई की तरह सीमित कर सकें। वास्तविक उपयोगकर्ताओं के लिए सार्वजनिक है और स्क्रैपर्स / बॉट्स के लिए सार्वजनिक है, जो आमतौर पर वैसा नहीं है जैसा कि वास्तविक उपयोगकर्ता विज्ञापन देखेंगे और सीधे सेवा का उपयोग करेंगे।
क्रिस्टोफ रूसो

1
इनमें से कोई भी तरीका अब काम नहीं करता है। देखें stackoverflow.com/questions/49852080/...
Moradnejad

जवाबों:


123

यह देर हो चुकी है, लेकिन सार्थक है अगर यह किसी की मदद करता है जैसा कि मैंने इसे इंस्टाग्राम के दस्तावेज में नहीं देखा।

GET पर https://api.instagram.com/v1/users/<user-id>/media/recent/(लेखन के वर्तमान समय में) प्रदर्शन करने के लिए आपको वास्तव में OAuth एक्सेस टोकन की आवश्यकता नहीं है।

आप प्रदर्शन कर सकते हैं https://api.instagram.com/v1/users/[USER ID]/media/recent/?client_id=[CLIENT ID]

[ग्राहक आईडी] वैध क्लाइंट आईडी होगी जो ग्राहकों के प्रबंधन के माध्यम से ऐप में पंजीकृत होगी (उपयोगकर्ता से संबंधित नहीं)। GET उपयोगकर्ताओं के खोज अनुरोध को करके आप उपयोगकर्ता नाम से [USER ID] प्राप्त कर सकते हैं: https://api.instagram.com/v1/users/search?q=[USERNAME]&client_id=[CLIENT ID]


9
मुझे लगता है कि उन्होंने अपना दिमाग फिर से बदल लिया होगा। मुझे वही त्रुटि प्रतिक्रिया मिल रही है जैसा कि ओपी में दिखाया गया है
जेम्स

35
यह केवल 17 नवंबर 2015 से पहले बनाए गए ऐप्स पर ही मान्य है, और जून 2016 के बाद बिल्कुल भी समर्थित नहीं होगा। इसके बाद आपको oauth access_token की आवश्यकता होगी। instagram.com/developer/changelog
Dax Fohl

211
यह बहुत बेवकूफ और परेशान है। वे केवल उन छवियों को प्रदर्शित करने के लिए एक पहुंच टोकन को क्यों मजबूर करेंगे जो पहले से ही सार्वजनिक हैं ? मैं शायद ही दुनिया में हर उपयोगकर्ता के लिए उन्हें कुल्ला करने की कोशिश कर रहा हूं, मैं बस इसके साथ खिलवाड़ करने में घंटों बिताने के बिना एक ग्राहक के नवीनतम इंस्टा को प्रदर्शित करना चाहता हूं। गाह!
मैट फ्लेचर

8
@ कैबस रेट लिमिट, मेट।
वाल्फ

20
@MattFletcher अब और भी अधिक बेवकूफ है, व्यक्ति को ऐप अनुमति की समीक्षा के माध्यम से जाना चाहिए, और यह सुनिश्चित नहीं करना चाहिए कि क्या यह उपयोग करने के बाद भी संभव है "ग्राहक के स्वयं के वेबपेज में फ़ीड दिखाना" उपयोग के मामलों में से एक नहीं है। डुह, ये प्रतिबंध चूसते हैं।
Ciantic

334

var name = "smena8m";
$.get("https://images"+~~(Math.random()*3333)+"-focus-opensocial.googleusercontent.com/gadgets/proxy?container=none&url=https://www.instagram.com/" + name + "/", function(html) {
if (html) {
    var regex = /_sharedData = ({.*);<\/script>/m,
        json = JSON.parse(regex.exec(html)[1]),
        edges = json.entry_data.ProfilePage[0].graphql.user.edge_owner_to_timeline_media.edges;

      $.each(edges, function(n, edge) {
          var node = edge.node;
          $('body').append(
              $('<a/>', {
              href: 'https://instagr.am/p/'+node.shortcode,
              target: '_blank'
          }).css({
              backgroundImage: 'url(' + node.thumbnail_src + ')'
          }));
      });
    }
});
html, body {
  font-size: 0;
  line-height: 0;
}

a {
  display: inline-block;
  width: 25%;
  height: 0;
  padding-bottom: 25%;
  background: #eee 50% 50% no-repeat;
  background-size: cover;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

आप इस तरह के?__a=1 लैंडिंग पृष्ठ के पते का उपयोग करके JSON प्रारूप में किसी भी Instagram उपयोगकर्ता फोटो फ़ीड को डाउनलोड कर सकते हैं । न यूजर आईडी लेने की जरूरत है और न ही कोई ऐप रजिस्टर करना है, न टोकन, न ओथ।

min_idऔर max_idचर के लिए इस्तेमाल किया जा सकता है, उदाहरण यहाँ है

YQLहो सकता है कि स्निप इफ्रेम के अंदर यहां काम न करें, इसलिए आप इसे YQL कंसोल में मैन्युअल रूप से जांच सकते हैं

APRIL 2018 अद्यतन: नवीनतम इंस्टाग्राम अपडेट के बाद आप ग्राहक पक्ष (जावास्क्रिप्ट) पर ऐसा नहीं कर सकते क्योंकि हस्ताक्षरित अनुरोध के लिए कस्टम हेडर CORS Access-Control-Allow-Headersप्रतिबंधों के कारण जावास्क्रिप्ट के साथ सेट नहीं किए जा सकते हैं । यह अभी भी संभव है phpया किसी अन्य सर्वर साइड पद्धति के माध्यम से उचित हस्ताक्षर के आधार पर rhx_gis, csrf_tokenऔर अनुरोध पैरामीटर के साथ ऐसा करना संभव है । आप इसके बारे में और अधिक यहाँ पढ़ सकते हैं ।

JANUARY 2019 UPDATE: YQL सेवानिवृत्त हो गया, इसलिए, CORSइंस्टाग्राम पेज के लिए प्रॉक्सी के रूप में Google छवि प्रॉक्सी के साथ मेरे नवीनतम अपडेट की जांच करें ! तब केवल नकारात्मक क्षण - इस विधि के साथ उपलब्ध नहीं है।

PHP उपाय:

    $html = file_get_contents('https://instagram.com/apple/');
    preg_match('/_sharedData = ({.*);<\/script>/', $html, $matches);
    $profile_data = json_decode($matches[1])->entry_data->ProfilePage[0]->graphql->user;

14
@ 350D आपको यह कैसे पता चला? मैं इसे उनके प्रलेखन में कहीं भी नहीं ढूँढ सकता। मैं सिर्फ इस समापन बिंदु (ईजी स्क्वायर छवियों बनाम गैर-वर्ग के साथ क्या संभव है, इसके बारे में अधिक पढ़ना चाहता हूं, क्या यह जून में समाप्त होने की योजना है, आदि) - धन्यवाद!
फिल जॉनसन

8
@Phil Johnston बस एक शोध hil इसे एक और लें - आप फोटो लैंडिंग पृष्ठ URL के आगे / मीडिया / आकार जोड़ सकते हैं = पूर्ण रिज़ॉल्यूशन फ़ोटो प्राप्त कर सकते हैं।
350D

9
@ user2659694 मैं अंत में इस विधि के साथ अगले पृष्ठों को प्राप्त करने के लिए समाधान ढूंढ सकता हूं जो आप उपयोग कर सकते हैं / मीडिया / /? max_id = [MAX_ID]
रेजा

3
FYI करें यह केवल तभी काम करता है जब आप स्वयं एक Instagram खाते में लॉग इन हों। क्रोम या इसी तरह से गुप्त में इसे करने की कोशिश करें और आप देखेंगे कि JSON प्रतिक्रिया में कोई आइटम नहीं है। मैं एक वेब सर्वर पर URL की सूची प्राप्त करने के लिए इसे एक स्क्रिप्ट में शामिल करने की कोशिश कर रहा था और इसे पुराने प्राधिकरण तरीकों पर वापस जाना था।
रयान जिंक

9
@RyanZink क्या आप एक निजी खाता आज़मा रहे थे? यह मेरे लिए लॉग आउट या सार्वजनिक खातों पर गुप्त कार्य करने के लिए ठीक काम करता है।
रियान

41

11.11.2017 के
बाद से इंस्टाग्राम ने इस डेटा को प्रदान करने के तरीके को बदल दिया, उपरोक्त तरीकों में से कोई भी आजकल काम नहीं करता है। यहां उपयोगकर्ता का मीडिया प्राप्त करने का नया तरीका है:
GET https://instagram.com/graphql/query/?query_id=17888483320059182&variables={"id":"1951415043","first":20,"after":null}
Where:
query_id- स्थायी मूल्य: 17888483320059182 (ध्यान दें कि इसे भविष्य में बदला जा सकता है)।
id- उपयोगकर्ता की आईडी। यह उपयोगकर्ताओं की सूची के साथ आ सकता है। उपयोगकर्ताओं की सूची प्राप्त करने के लिए आप निम्नलिखित अनुरोध का उपयोग कर सकते हैं: GET https://www.instagram.com/web/search/topsearch/?context=blended&query=YOUR_QUERY
first- प्राप्त करने के लिए मदों की मात्रा।
after- अंतिम आइटम की आईडी यदि आप उस आईडी से आइटम प्राप्त करना चाहते हैं।


क्या आप कृपया मुझे यह बता सकते हैं कि उपयोगकर्ता का Id_id और id कहाँ से प्राप्त करें?
विजयसिंह परमार

2
@VijaysinhParmar जैसा कि मैंने उल्लेख किया है, query_idस्थायी मूल्य है। इसका मतलब है कि यह हमेशा 17888483320059182 है (कम से कम जब तक कि इंस्टाग्राम इसे न बदल दे)। उपयोगकर्ता की आईडी - उपयोगकर्ता की आईडी है (मेरे उत्तर को थोड़ा संपादित करें)
फुटनिको

1
मुझे ठीक से याद नहीं है, कहीं इंटरनेट पर। लेकिन मेरा इंस्टाग्राम के साथ कोई संबंध नहीं है, इसलिए अगर यह बदलता है तो मैं आपको नया नहीं बता
पाऊंगा

1
आश्चर्य है कि इस दृष्टिकोण की दर सीमित नीति क्या है?
kkzxak47

1
अगर किसी के पास CURL अनुरोध के माध्यम से इस URL का अनुरोध करने के मुद्दे हैं, तो आपको कुकी अनुरोध शीर्षलेख प्राप्त करने की आवश्यकता है (url चलाने के बाद नेटवर्क टैब खोलें, कुकी शीर्षलेख कॉपी करें और इसे कर्ल अनुरोध शीर्ष लेख में पेस्ट करें। यदि आप ऐसा नहीं करते हैं, तो) आपको एक 403 पहुंच अस्वीकृत त्रुटि मिलेगी)।
एंडर्स

40

मैं प्रमाणीकरण के बिना निम्नलिखित एपीआई का उपयोग करके उपयोगकर्ता का सबसे हालिया मीडिया प्राप्त करने में सक्षम था (विवरण, पसंद, टिप्पणी गिनती सहित)।

https://www.instagram.com/apple/?__a=1

उदाहरण के लिए

https://www.instagram.com/{username}/?__a=1

1
यह मेरे लिए भी काम करता है। लेकिन जब "is_video = true" होता है, तो डेटा में कोई वीडियो url नहीं होता है।
दीदीके

4
ठीक है, आप केवल थंबनेल (वीडियो ही नहीं) प्राप्त कर सकते हैं - दुर्भाग्य से, मुझे इसके लिए कोई आधिकारिक दस्तावेज नहीं मिला और मुझे यह पता नहीं है कि क्या यह एपीआई पदावनत है या यह कब तक समर्थित होने वाला है।
माइकल

8
2018-04-13 तक, यह अब काम नहीं करता है। हो सकता है कि फेसबुक के नवीनतम कैम्ब्रिज एनालिटिका डेटा घोटाले के कारण, वे चीजों को एक टन से कम कर रहे हैं। प्रमाणीकरण के बिना मूल उपयोगकर्ता डेटा प्राप्त करने के लिए कोई अन्य सुझाव?
बेकरवेटसिस्टम

2
हां, एक समय था कि यह एपीआई काम नहीं कर रहा था - लेकिन अब यह फिर से वापस आ गया है
माइकल

4
इसने मेरे लिए काम किया, लेकिन तभी जब मैं इंस्टाग्राम पर लॉग इन हुआ।
zundi

16

पिछले सप्ताह के रूप में, Instagram ने /media/यूआरएल को निष्क्रिय कर दिया , मैंने एक वर्कअराउंड लागू किया, जो अब के लिए बहुत अच्छा काम करता है।

इस सूत्र में सभी की समस्याओं को हल करने के लिए, मैंने इसे लिखा: https://github.com/whizzzkid/instagram-reverse-proxy

यह निम्नलिखित समापन बिंदुओं का उपयोग करके इंस्टाग्राम के सभी सार्वजनिक डेटा प्रदान करता है:

उपयोगकर्ता मीडिया प्राप्त करें:

https://igapi.ga/<username>/media
e.g.: https://igapi.ga/whizzzkid/media 

सीमा गणना के साथ उपयोगकर्ता मीडिया प्राप्त करें:

https://igapi.ga/<username>/media?count=N // 1 < N < 20
e.g.: https://igapi.ga/whizzzkid/media?count=5

JSONP का उपयोग करें:

https://igapi.ga/<username>/media?callback=foo
e.g.: https://igapi.ga/whizzzkid/media?callback=bar

प्रॉक्सी एपीआई प्रतिक्रिया के लिए अगले पृष्ठ और पिछले पृष्ठ URL को भी जोड़ता है ताकि आपको अपने अंत में गणना करने की आवश्यकता न हो।

उम्मीद है तुम लोगों को यह पसंद आया!

इस मौके के लिए @ 350D करने के लिए धन्यवाद :)


1
@ जब तक वे बदलते हैं कि चीजें उनके अंत में कैसे काम करती हैं, हम अच्छे हैं! उन्होंने पिछले 3 वर्षों में परेशान नहीं किया, शायद वे अगले 3 में नहीं होंगे
22:55

3
@whizzzkid बुरा भाग्य, वे इसे बदलते हैं। मैंने देखा कि आपको लगता है कि उपयोगकर्ता एंडपॉइंट चीजें करेंगे, लेकिन उपयोगकर्ताओं में लॉग इन नहीं करने के अनुरोधों की सीमाएं हैं। कोई विचार?
नोबेलिक

1
@nobilik वर्कअराउंड जगह में है, igpi.ga/whizzzkid/media?count=3 और igpi.ga/graphql/query/?user_id=1606740654&count=3 दोनों को आपको डेटा वापस करना चाहिए। याद रखें, अपरिभाषित रेफ़रर्स इन url के लिए अक्षम हैं।
व्हिस्ज़किड

1
@whizzzkid - यह काम कर गया! बहुत बहुत धन्यवाद - आप एक विद्वान और सज्जन व्यक्ति हैं!
जेम्स ट्रिकी

1
मैं एक "रेफरल पहुँच से वंचित किया गया था" त्रुटि हो रही है। शायद यह अब काम नहीं करता है?
ख़ालिद १३

14

इंस्टाग्राम एपीआई को उपयोगकर्ता के लिए हालिया मीडिया समापन बिंदु तक पहुंचने के लिए OAuth के माध्यम से उपयोगकर्ता प्रमाणीकरण की आवश्यकता होती है। किसी उपयोगकर्ता के लिए सभी मीडिया प्राप्त करने के लिए अभी कोई अन्य तरीका प्रतीत नहीं होता है।


4
इसका कोई मतलब नहीं है, अगर मैं अपनी खुद की मीडिया को अपनी वेबसाइट पर प्रदर्शित करना चाहता हूं, तो मुझे हर किसी की आवश्यकता क्यों है जो इसे इंस्टाग्राम अकाउंट पर देखना चाहता है?
निन्जासेन

5
Ninjasense - मुझे नहीं लगता कि यह कैसे काम करता है। मुझे लगता है कि आपकी वेबसाइट को इसमें थोड़ा सा कोड रखने की आवश्यकता होगी, जो आपके मीडिया में खींचने के लिए प्रदान किए गए आपके oauth क्रेडेंशियल्स के साथ Instagram API को क्वेरी करेगा। फिर आप अपनी मीडिया को अपनी साइट के किसी भी उपयोगकर्ता को दिखाएंगे। आपकी साइट एकमात्र ऐसी चीज होगी जिसे इंस्टाग्राम के साथ प्रमाणित करने की आवश्यकता है।
बिल रॉक्लिनसन

9

यदि आप किसी एकल खाते पर उपयोग के लिए एक पहुंच टोकन उत्पन्न करने का तरीका ढूंढ रहे हैं, तो आप यह कोशिश कर सकते हैं -> https://coderwall.com/p/cfgneq

मुझे किसी विशेष खाते के लिए सभी नवीनतम मीडिया को हथियाने के लिए इंस्टाग्राम एपि का उपयोग करने का एक तरीका चाहिए था।


5
यह कमोबेश मैंने अंत में क्या किया है: एक नया खाता बनाया, इसके लिए एक टोकन बनाया, और एपीआई कुंजी के बगल में अपने सर्वर कॉन्फ़िगरेशन में उस टोकन को संग्रहीत किया। जेएस ऐप्स के लिए यह एक खराब समाधान है, हालांकि, इसके बाद से उपयोगकर्ता तक आपकी पहुंच को शिपिंग करने की आवश्यकता होती है (जिसे मैंने बहुत सारे उदाहरण कोड देखा है)। मेरे लिए सौभाग्य से, मैं इसे सर्वर-साइड कर सकता हूं।
पीजा

4
@CraigHeneveld आप टोपी का उपयोग कैसे करते हैं? क्या यह आप पर समाप्त नहीं हुआ है?
रयान ओर

क्या टोकन कुछ समय समाप्त हो जाता है?
मोनिटस

यदि मेरी मेमोरी मेरी सेवा करती है, तो कुंजी केवल तभी समाप्त होती है जब आप अपना पासवर्ड बदलते हैं। यहाँ इस मामले पर एक और धागा है -> stackoverflow.com/questions/22753170/…
क्रेग हेनेवल्ड

हम कई उपयोगकर्ता तस्वीरें कैसे प्राप्त कर सकते हैं ?? जैसे हम "," द्वारा अलग-अलग उपयोगकर्ता आईडी के उत्तीर्ण कर सकते हैं?
आदिल केशवानी

9

यहाँ एक रेल समाधान है। यह एक तरह का बैक-डोर है, जो वास्तव में फ्रंट डोर है।

# create a headless browser
b = Watir::Browser.new :phantomjs
uri = 'https://www.instagram.com/explore/tags/' + query
uri = 'https://www.instagram.com/' + query if type == 'user'

b.goto uri

# all data are stored on this page-level object.
o = b.execute_script( 'return window._sharedData;')

b.close

आपके द्वारा वापस प्राप्त की गई वस्तु उपयोगकर्ता की खोज या टैग खोज के आधार पर भिन्न होती है। मुझे इस तरह का डेटा मिलता है:

if type == 'user'
  data = o[ 'entry_data' ][ 'ProfilePage' ][ 0 ][ 'user' ][ 'media' ][ 'nodes' ]
  page_info = o[ 'entry_data' ][ 'ProfilePage' ][ 0 ][ 'user' ][ 'media' ][ 'page_info' ]
  max_id = page_info[ 'end_cursor' ]
  has_next_page = page_info[ 'has_next_page' ]
else
  data = o[ 'entry_data' ][ 'TagPage' ][ 0 ][ 'tag' ][ 'media' ][ 'nodes' ]
  page_info = o[ 'entry_data' ][ 'TagPage' ][ 0 ][ 'tag' ][ 'media' ][ 'page_info' ]
  max_id = page_info[ 'end_cursor' ]
  has_next_page = page_info[ 'has_next_page' ]
end

फिर मैं निम्नलिखित तरीके से एक url का निर्माण करके परिणामों का एक और पेज प्राप्त करता हूं:

  uri = 'https://www.instagram.com/explore/tags/' + query_string.to_s\
    + '?&max_id=' + max_id.to_s
  uri = 'https://www.instagram.com/' + query_string.to_s + '?&max_id='\
    + max_id.to_s if type === 'user'

यह समाधान मेरे लिए काम कर रहा है, लेकिन मुझे इससे थोड़ी परेशानी हो रही है। डेटा लोड करने के बाद, मेरा रेल सर्वर (रेल 5.0.0, प्यूमा 3.6.0 सर्वर का उपयोग करके) बेवजह फिर से चालू हो जाता है ... कोई संभावित समाधान?
लुइस एडुआर्डो रोजस कैबरेरा

8

इंस्टाग्राम के कभी बदलते (और भयावह रूप से डिज़ाइन किए गए) एपीआई स्कीमा के लिए धन्यवाद, उपरोक्त सभी अब अप्रैल 2018 के अनुसार काम नहीं करेंगे।

यहां व्यक्तिगत पोस्ट डेटा तक पहुंचने का नवीनतम तरीका है यदि आप सीधे https://www.instagram.com/username/?__a=1विधि का उपयोग करके उनके एपीआई को क्वेरी कर रहे हैं ।

अपना लौटा JSONडेटा मानते हुए $dataआप निम्न पथ उदाहरणों का उपयोग करके प्रत्येक परिणाम के माध्यम से लूप कर सकते हैं:

foreach ($data->graphql->user->edge_owner_to_timeline_media->edges as $item) {

    $content_id = $item->node->id; 
    $date_posted = $item-node->taken_at_timestamp;
    $comments = $item->node->edge_media_to_comment->count;
    $likes = $item->node->edge_liked_by->count;
    $image = $item->node->display_url;
    $content = $item->node->edge_media_to_caption->edges[0]->node->text;
    // etc etc ....
}

इस हालिया बदलाव में मुख्य बातें graphqlऔर थीं edge_owner_to_timeline_media

ऐसा लगता है कि वे डीईसी 2018 में गैर-व्यापार के ग्राहकों के लिए इस एपीआई एक्सेस को बंद करने जा रहे हैं, इसलिए जब आप कर सकते हैं तो इसका सबसे अधिक लाभ उठाएं

आशा है कि यह किसी की मदद करता है;)


इसने मेरी मदद की, मैं सिर्फ एक ग्राहक के लिए नवीनतम इंस्टाग्राम पोस्ट दिखाना चाहता हूं। धन्यवाद!
वेस्टन डेबोर

1
instagram.com/username/?__a=1 अब त्रुटि देता है: www.instagram.com पर पहुंच अस्वीकृत कर दी गई थी। इस पृष्ठ को देखने के लिए आपके पास प्राधिकरण नहीं है। HTTP ERROR 403 कोई अन्य विचार?
हेस

1
Yep Instagram ने अब इसे मार दिया है। "इंस्टाग्राम उपयोगकर्ताओं की गोपनीयता और सुरक्षा में निरंतर सुधार करने के लिए, हम इंस्टाग्राम एपीआई प्लेटफ़ॉर्म के अपग्रेड को तेज कर रहे हैं, जिससे निम्नलिखित परिवर्तन तुरंत प्रभावी हो जाते हैं। हम समझते हैं कि यह आपके व्यवसाय या सेवाओं को प्रभावित कर सकता है, और हम अपने प्लेटफ़ॉर्म को सुरक्षित रखने में आपके समर्थन की सराहना करते हैं। इन क्षमताओं को तुरंत अक्षम कर दिया जाएगा (पहले 31 जुलाई, 2018 या 11 दिसंबर, 2018 को पदावनति के लिए निर्धारित)। "
मसाला

यदि मैं जो पढ़ रहा हूं वह सही है तो किसी "गैर-व्यवसाय" खाते से चित्र या डेटा प्राप्त करना संभव नहीं होगा। वे पूरी तरह से प्लेटफॉर्म एपीआई को मार रहे हैं। मुझे लगता है कि तब ... instagram.com/developer/changelog
मसाला

1
@james_tookey संभव दोस्त नहीं होने वाला। अपने नए गोपनीयता प्रतिबंधों के कारण यह अब केवल व्यावसायिक लोगों के उपयोगकर्ताओं / व्यक्तिगत खातों के डेटा को क्वेरी या पुनर्प्राप्त करने में सक्षम नहीं होगा। मूल रूप से वे सिर्फ व्यक्तिगत खातों के लिए सभी एपीआई उपयोग को मार डाला।
मसाला

7

JSFiddle

जावास्क्रिप्ट:

$(document).ready(function(){

    var username = "leomessi";
    var max_num_items = 5;

    var jqxhr = $.ajax( "https://www.instagram.com/"+username+"/?__a=1" ).done(function() {
        //alert( "success" );
    }).fail(function() {
        //alert( "error" );
    }).always(function(data) {
        //alert( "complete" )
        items = data.graphql.user.edge_owner_to_timeline_media.edges;
        $.each(items, function(n, item) {
            if( (n+1) <= max_num_items )
            {
                var data_li = "<li><a target='_blank' href='https://www.instagram.com/p/"+item.node.shortcode+"'><img src='" + item.node.thumbnail_src + "'/></a></li>";
                $("ul.instagram").append(data_li);
            }
        });

    });

});

HTML:

<ul class="instagram">
</ul>

सीएसएस:

ul.instagram {
    list-style: none;
}

ul.instagram li {
  float: left;
}

ul.instagram li img {
    height: 100px;
}

5

बस @ 350D उत्तर जोड़ना चाहते हैं, क्योंकि यह समझना मेरे लिए कठिन था।

कोड में मेरा तर्क अगला है:

पहली बार एपीआई कॉल करते समय, मैं केवल कॉल कर रहा हूं https://www.instagram.com/_vull_ /media/। जब मुझे प्रतिक्रिया मिलती है, तो मैं बूलियन मान की जांच करता हूं more_available। यदि इसकी सही है, तो मुझे सरणी से अंतिम फोटो मिलती है, इसकी आईडी प्राप्त करें और इस बार फिर इंस्टाग्राम एपीआई पर कॉल करें https://www.instagram.com/_vull_/media/?max_id=1400286183132701451_1642962433

यहां जानने के लिए महत्वपूर्ण बात, यह आईडी सरणी में अंतिम चित्र की आईडी है। तो जब आप सरणी में तस्वीर की अंतिम आईडी के साथ अधिकतम करने के लिए पूछ रहे हैं, तो आपको अगले 20 चित्र मिलेंगे, और इसी तरह।

आशा है कि यह बातें स्पष्ट करें।


4

यदि आप Oauth को बायपास करते हैं, तो आप शायद यह नहीं जान पाएंगे कि वे कौन से इंस्टाग्राम उपयोगकर्ता हैं। यह कहा जा रहा है कि प्रमाणीकरण के बिना इंस्टाग्राम चित्र प्राप्त करने के कुछ तरीके हैं।

  1. Instagram की API आपको उपयोगकर्ता की सबसे लोकप्रिय छवियों को प्रमाणित किए बिना देखने की अनुमति देती है। निम्नलिखित समापन बिंदु का उपयोग करना: यहाँ लिंक है

  2. Instagram इस पर टैग के लिए आरएसएस फ़ीड प्रदान करता है ।

  3. Instagram उपयोगकर्ता पृष्ठ सार्वजनिक हैं, इसलिए आप अपने पृष्ठ और DOM पार्सर को पाने के लिए PHP का उपयोग कर सकते हैं ताकि आप चाहते हैं कि छवि टैग के लिए HTML खोज सकें।


9
पुराना लगता है।
बुरक टोकक

क्या इंस्टाग्राम के लिए प्रमाणीकरण को बायपास करना संभव है
JAck

3

एक और चाल, हैशटैग द्वारा खोज फ़ोटो:

GET https://www.instagram.com/graphql/query/?query_hash=3e7706b09c6184d5eafd8b032dbcf487&variables={"tag_name":"nature","first":25,"after":""}

कहाँ पे:

query_hash - स्थायी मूल्य (मैं 17888483320059182 का हैश प्राप्त कर सकता हूं, भविष्य में इसे बदला जा सकता है)

tag_name - शीर्षक खुद ही बोलता है

first - प्राप्त करने के लिए मदों की मात्रा (मुझे नहीं पता क्यों, लेकिन यह मान अपेक्षित रूप से काम नहीं करता है। लौटी हुई तस्वीरों की वास्तविक संख्या 4.5 से गुणा किए गए मूल्य की तुलना में थोड़ी अधिक है (मूल्य 25 के लिए लगभग 110, और लगभग 460 के लिए 460) मूल्य 100))

after- अंतिम आइटम की आईडी यदि आप उस आईडी से आइटम प्राप्त करना चाहते हैं। end_cursorJSON प्रतिक्रिया के मूल्य का उपयोग यहां किया जा सकता है।


आप इसे कैसे पा सकते हैं?
ekntrtmz

3

खैर, जैसा /?__a=1कि अब तक काम करना बंद कर दिया गया है, इंस्टाग्राम पेज को कर्ल और पार्स का उपयोग करना बेहतर है, जैसा कि इस उत्तर में लिखा गया है: प्रवेश टोकन इंस्टाग्राम एपीआई, बिना लॉग-इन किए उत्पन्न करें?


3

यदि आप क्लाइंटआईडी और टोकन के बिना उपयोगकर्ताओं को खोजना चाहते हैं:

1: यदि आप अपने खोज शब्द के समान अपने नाम वाले सभी उपयोगकर्ताओं को खोजना चाहते हैं:

उस पाठ के साथ SeachName को बदलें जिसे आप खोजना चाहते हैं:

https://www.instagram.com/web/search/topsearch/?query=SearchName

2: यदि आप ठीक उसी नाम के उपयोगकर्ता को खोजना चाहते हैं:

अपने वांछित खोज नाम के साथ उपयोगकर्ता नाम बदलें:

https://www.instagram.com/UserName/?__a=1


2

आप instagram उपयोगकर्ता की सार्वजनिक जानकारी प्राप्त करने में इस API का उपयोग कर सकते हैं:
https://api.lityapp.com/instagrams/thebrainscoop?limit=2

आप सीमा पैरामीटर सेट नहीं है, तो पोस्ट डिफ़ॉल्ट रूप से 12 पर सीमित हैं

यह Api को स्प्रिंगबूट में HtmlUnit के साथ बनाया गया था जैसा कि आप कोड में देख सकते हैं:

public JSONObject getPublicInstagramByUserName(String userName, Integer limit) {
    String html;
    WebClient webClient = new WebClient();

    try {
        webClient.getOptions().setCssEnabled(false);
        webClient.getOptions().setJavaScriptEnabled(false);
        webClient.getOptions().setThrowExceptionOnScriptError(false);
        webClient.getCookieManager().setCookiesEnabled(true);

        Page page = webClient.getPage("https://www.instagram.com/" + userName);
        WebResponse response = page.getWebResponse();

        html = response.getContentAsString();
    } catch (Exception ex) {
        ex.printStackTrace();

        throw new RuntimeException("Ocorreu um erro no Instagram");
    }

    String prefix = "static/bundles/es6/ProfilePageContainer.js";
    String sufix = "\"";
    String script = html.substring(html.indexOf(prefix));

    script = script.substring(0, script.indexOf(sufix));

    try {
        Page page = webClient.getPage("https://www.instagram.com/" + script);
        WebResponse response = page.getWebResponse();

        script = response.getContentAsString();
    } catch (Exception ex) {
        ex.printStackTrace();

        throw new RuntimeException("Ocorreu um erro no Instagram");
    }

    prefix = "l.pagination},queryId:\"";

    String queryHash = script.substring(script.indexOf(prefix) + prefix.length());

    queryHash = queryHash.substring(0, queryHash.indexOf(sufix));
    prefix = "<script type=\"text/javascript\">window._sharedData = ";
    sufix = ";</script>";
    html = html.substring(html.indexOf(prefix) + prefix.length());
    html = html.substring(0, html.indexOf(sufix));

    JSONObject json = new JSONObject(html);
    JSONObject entryData = json.getJSONObject("entry_data");
    JSONObject profilePage = (JSONObject) entryData.getJSONArray("ProfilePage").get(0);
    JSONObject graphql = profilePage.getJSONObject("graphql");
    JSONObject user = graphql.getJSONObject("user");
    JSONObject response = new JSONObject();

    response.put("id", user.getString("id"));
    response.put("username", user.getString("username"));
    response.put("fullName", user.getString("full_name"));
    response.put("followedBy", user.getJSONObject("edge_followed_by").getLong("count"));
    response.put("following", user.getJSONObject("edge_follow").getLong("count"));
    response.put("isBusinessAccount", user.getBoolean("is_business_account"));
    response.put("photoUrl", user.getString("profile_pic_url"));
    response.put("photoUrlHD", user.getString("profile_pic_url_hd"));

    JSONObject edgeOwnerToTimelineMedia = user.getJSONObject("edge_owner_to_timeline_media");
    JSONArray posts = new JSONArray();

    try {
        loadPublicInstagramPosts(webClient, queryHash, user.getString("id"), posts, edgeOwnerToTimelineMedia, limit == null ? 12 : limit);
    } catch (Exception ex) {
        ex.printStackTrace();

        throw new RuntimeException("Você fez muitas chamadas, tente mais tarde");
    }

    response.put("posts", posts);

    return response;
}

private void loadPublicInstagramPosts(WebClient webClient, String queryHash, String userId, JSONArray posts, JSONObject edgeOwnerToTimelineMedia, Integer limit) throws IOException {
    JSONArray edges = edgeOwnerToTimelineMedia.getJSONArray("edges");

    for (Object elem : edges) {
        if (limit != null && posts.length() == limit) {
            return;
        }

        JSONObject node = ((JSONObject) elem).getJSONObject("node");

        if (node.getBoolean("is_video")) {
            continue;
        }

        JSONObject post = new JSONObject();

        post.put("id", node.getString("id"));
        post.put("shortcode", node.getString("shortcode"));

        JSONArray captionEdges = node.getJSONObject("edge_media_to_caption").getJSONArray("edges");

        if (captionEdges.length() > 0) {
            JSONObject captionNode = ((JSONObject) captionEdges.get(0)).getJSONObject("node");

            post.put("caption", captionNode.getString("text"));
        } else {
            post.put("caption", (Object) null);
        }

        post.put("photoUrl", node.getString("display_url"));

        JSONObject dimensions = node.getJSONObject("dimensions");

        post.put("photoWidth", dimensions.getLong("width"));
        post.put("photoHeight", dimensions.getLong("height"));

        JSONArray thumbnailResources = node.getJSONArray("thumbnail_resources");
        JSONArray thumbnails = new JSONArray();

        for (Object elem2 : thumbnailResources) {
            JSONObject obj = (JSONObject) elem2;
            JSONObject thumbnail = new JSONObject();

            thumbnail.put("photoUrl", obj.getString("src"));
            thumbnail.put("photoWidth", obj.getLong("config_width"));
            thumbnail.put("photoHeight", obj.getLong("config_height"));
            thumbnails.put(thumbnail);
        }

        post.put("thumbnails", thumbnails);
        posts.put(post);
    }

    JSONObject pageInfo = edgeOwnerToTimelineMedia.getJSONObject("page_info");

    if (!pageInfo.getBoolean("has_next_page")) {
        return;
    }

    String endCursor = pageInfo.getString("end_cursor");
    String variables = "{\"id\":\"" + userId + "\",\"first\":12,\"after\":\"" + endCursor + "\"}";

    String url = "https://www.instagram.com/graphql/query/?query_hash=" + queryHash + "&variables=" + URLEncoder.encode(variables, "UTF-8");
    Page page = webClient.getPage(url);
    WebResponse response = page.getWebResponse();
    String content = response.getContentAsString();
    JSONObject json = new JSONObject(content);

    loadPublicInstagramPosts(webClient, queryHash, userId, posts, json.getJSONObject("data").getJSONObject("user").getJSONObject("edge_owner_to_timeline_media"), limit);
}


यह प्रतिक्रिया का एक उदाहरण है:

{
  "id": "290482318",
  "username": "thebrainscoop",
  "fullName": "Official Fan Page",
  "followedBy": 1023,
  "following": 6,
  "isBusinessAccount": false,
  "photoUrl": "https://scontent-gru2-1.cdninstagram.com/vp/447ffd0262082f373acf3d467435f130/5C709C77/t51.2885-19/11351770_612904665516559_678168252_a.jpg",
  "photoUrlHD": "https://scontent-gru2-1.cdninstagram.com/vp/447ffd0262082f373acf3d467435f130/5C709C77/t51.2885-19/11351770_612904665516559_678168252_a.jpg",
  "posts": [
    {
      "id": "1430331382090378714",
      "shortcode": "BPZjtBUly3a",
      "caption": "If I have any active followers anymore; hello! I'm Brianna, and I created this account when I was just 12 years old to show my love for The Brain Scoop. I'm now nearly finished high school, and just rediscovered it. I just wanted to see if anyone is still active on here, and also correct some of my past mistakes - being a child at the time, I didn't realise I had to credit artists for their work, so I'm going to try to correct that post haste. Also; the font in my bio is horrendous. Why'd I think that was a good idea? Anyway, this is a beautiful artwork of the long-tailed pangolin by @chelsealinaeve . Check her out!",
      "photoUrl": "https://scontent-gru2-1.cdninstagram.com/vp/ab823331376ca46136457f4654bf2880/5CAD48E4/t51.2885-15/e35/16110915_400942200241213_3503127351280009216_n.jpg",
      "photoWidth": 640,
      "photoHeight": 457,
      "thumbnails": [
        {
          "photoUrl": "https://scontent-gru2-1.cdninstagram.com/vp/43b195566d0ef2ad5f4663ff76d62d23/5C76D756/t51.2885-15/e35/c91.0.457.457/s150x150/16110915_400942200241213_3503127351280009216_n.jpg",
          "photoWidth": 150,
          "photoHeight": 150
        },
        {
          "photoUrl": "https://scontent-gru2-1.cdninstagram.com/vp/ae39043a7ac050c56d741d8b4355c185/5C93971C/t51.2885-15/e35/c91.0.457.457/s240x240/16110915_400942200241213_3503127351280009216_n.jpg",
          "photoWidth": 240,
          "photoHeight": 240
        },
        {
          "photoUrl": "https://scontent-gru2-1.cdninstagram.com/vp/ae7a22d09e3ef98d0a6bbf31d621a3b7/5CACBBA6/t51.2885-15/e35/c91.0.457.457/s320x320/16110915_400942200241213_3503127351280009216_n.jpg",
          "photoWidth": 320,
          "photoHeight": 320
        },
        {
          "photoUrl": "https://scontent-gru2-1.cdninstagram.com/vp/1439dc72b70e7c0c0a3afcc30970bb13/5C8E2923/t51.2885-15/e35/c91.0.457.457/16110915_400942200241213_3503127351280009216_n.jpg",
          "photoWidth": 480,
          "photoHeight": 480
        },
        {
          "photoUrl": "https://scontent-gru2-1.cdninstagram.com/vp/1439dc72b70e7c0c0a3afcc30970bb13/5C8E2923/t51.2885-15/e35/c91.0.457.457/16110915_400942200241213_3503127351280009216_n.jpg",
          "photoWidth": 640,
          "photoHeight": 640
        }
      ]
    },
    {
      "id": "442527661838057235",
      "shortcode": "YkLJBXJD8T",
      "caption": null,
      "photoUrl": "https://scontent-gru2-1.cdninstagram.com/vp/dc94b38da679826b9ac94ccd2bcc4928/5C7CDF93/t51.2885-15/e15/11327349_860747310663863_2105199307_n.jpg",
      "photoWidth": 612,
      "photoHeight": 612,
      "thumbnails": [
        {
          "photoUrl": "https://scontent-gru2-1.cdninstagram.com/vp/c1153c6513c44a6463d897e14b2d8f06/5CB13ADD/t51.2885-15/e15/s150x150/11327349_860747310663863_2105199307_n.jpg",
          "photoWidth": 150,
          "photoHeight": 150
        },
        {
          "photoUrl": "https://scontent-gru2-1.cdninstagram.com/vp/47e60ec8bca5a1382cd9ac562439d48c/5CAE6A82/t51.2885-15/e15/s240x240/11327349_860747310663863_2105199307_n.jpg",
          "photoWidth": 240,
          "photoHeight": 240
        },
        {
          "photoUrl": "https://scontent-gru2-1.cdninstagram.com/vp/da0ee5b666ab40e4adc1119e2edca014/5CADCB59/t51.2885-15/e15/s320x320/11327349_860747310663863_2105199307_n.jpg",
          "photoWidth": 320,
          "photoHeight": 320
        },
        {
          "photoUrl": "https://scontent-gru2-1.cdninstagram.com/vp/02ee23571322ea8d0992e81e72f80ef2/5C741048/t51.2885-15/e15/s480x480/11327349_860747310663863_2105199307_n.jpg",
          "photoWidth": 480,
          "photoHeight": 480
        },
        {
          "photoUrl": "https://scontent-gru2-1.cdninstagram.com/vp/dc94b38da679826b9ac94ccd2bcc4928/5C7CDF93/t51.2885-15/e15/11327349_860747310663863_2105199307_n.jpg",
          "photoWidth": 640,
          "photoHeight": 640
        }
      ]
    }
  ]
}

क्या मैं userid (pk) द्वारा डेटा प्राप्त कर सकता हूं
SAURABH RATHOD

क्षमा करें, @SAURABHRATHOD मैंने कोशिश की लेकिन मुझे ऐसा करने का कोई तरीका नहीं मिला। मुझे बहुत खुशी होगी अगर कोई इसका हल निकाले। टिप्पणी के लिए धन्यवाद।
रुआन बैरसू

2

मुझे वास्तव में इस फ़ंक्शन की आवश्यकता थी लेकिन Wordpress के लिए। मैं फिट हूं और इसने पूरी तरह से काम किया

<script>
    jQuery(function($){
        var name = "caririceara.comcariri";
        $.get("https://images"+~~(Math.random()*33)+"-focus-opensocial.googleusercontent.com/gadgets/proxy?container=none&url=https://www.instagram.com/" + name + "/", function(html) {
            if (html) {
                var regex = /_sharedData = ({.*);<\/script>/m,
                  json = JSON.parse(regex.exec(html)[1]),
                  edges = json.entry_data.ProfilePage[0].graphql.user.edge_owner_to_timeline_media.edges;
              $.each(edges, function(n, edge) {
                   if (n <= 7){
                     var node = edge.node;
                    $('.img_ins').append('<a href="https://instagr.am/p/'+node.shortcode+'" target="_blank"><img src="'+node.thumbnail_src+'" width="150"></a>');
                   }
              });
            }
        });
    }); 
    </script>

1

नीचे दिए गए नोडज कोड एक Instagram पेज से लोकप्रिय छवियों को स्क्रैप करते हैं। फ़ंक्शन 'स्क्रैपइन्स्टाग्रामपेज' पोस्ट एजिंग प्रभाव का ध्यान रखता है।

var request = require('parse5');
var request = require('request');
var rp      = require('request-promise');
var $       = require('cheerio'); // Basically jQuery for node.js 
const jsdom = require("jsdom");    
const { JSDOM } = jsdom;


function ScrapeInstagramPage (args) {
    dout("ScrapeInstagramPage for username -> " + args.username);
    var query_url = 'https://www.instagram.com/' + args.username + '/';

    var cookieString = '';

    var options = {
        url: query_url,
        method: 'GET',
        headers: {
            'x-requested-with' : 'XMLHttpRequest',
            'accept-language'  : 'en-US,en;q=0.8,pt;q=0.6,hi;q=0.4', 
            'User-Agent'       : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
            'referer'          : 'https://www.instagram.com/dress_blouse_designer/',
            'Cookie'           : cookieString,
            'Accept'           : '*/*',
            'Connection'       : 'keep-alive',
            'authority'        : 'www.instagram.com' 
        }
    };


    function dout (msg) {
        if (args.debug) {
            console.log(msg);
        }
    }

    function autoParse(body, response, resolveWithFullResponse) {
        // FIXME: The content type string could contain additional values like the charset. 
        // Consider using the `content-type` library for a robust comparison. 
        if (response.headers['content-type'] === 'application/json') {
            return JSON.parse(body);
        } else if (response.headers['content-type'] === 'text/html') {
            return $.load(body);
        } else {
            return body;
        }
    }

    options.transform = autoParse;


    rp(options)
        .then(function (autoParsedBody) {
            if (args.debug) {
                console.log("Responce of 'Get first user page': ");
                console.log(autoParsedBody);
                console.log("Creating JSDOM from above Responce...");
            }

            const dom = new JSDOM(autoParsedBody.html(), { runScripts: "dangerously" });
            if (args.debug) console.log(dom.window._sharedData); // full data doc form instagram for a page

            var user = dom.window._sharedData.entry_data.ProfilePage[0].user;
            if (args.debug) {
                console.log(user); // page user
                console.log(user.id); // user ID
                console.log(user.full_name); // user full_name
                console.log(user.username); // user username
                console.log(user.followed_by.count); // user followed_by
                console.log(user.profile_pic_url_hd); // user profile pic
                console.log(autoParsedBody.html());
            }

            if (user.is_private) {
                dout ("User account is PRIVATE");
            } else {
                dout ("User account is public");
                GetPostsFromUser(user.id, 5000, undefined);
            }
        })
        .catch(function (err) {
            console.log( "ERROR: " + err );
        });  

    var pop_posts = [];
    function GetPostsFromUser (user_id, first, end_cursor) {
        var end_cursor_str = "";
        if (end_cursor != undefined) {
            end_cursor_str = '&after=' + end_cursor;
        }

        options.url = 'https://www.instagram.com/graphql/query/?query_id=17880160963012870&id=' 
                        + user_id + '&first=' + first + end_cursor_str;

        rp(options)
            .then(function (autoParsedBody) {
                if (autoParsedBody.status === "ok") {
                    if (args.debug) console.log(autoParsedBody.data);
                    var posts = autoParsedBody.data.user.edge_owner_to_timeline_media;

                    // POSTS processing
                    if (posts.edges.length > 0) {
                        //console.log(posts.edges);
                        pop_posts = pop_posts.concat
                        (posts.edges.map(function(e) {
                            var d = new Date();
                            var now_seconds = d.getTime() / 1000;

                            var seconds_since_post = now_seconds - e.node.taken_at_timestamp;
                            //console.log("seconds_since_post: " + seconds_since_post);

                            var ageing = 10; // valuses (1-10]; big value means no ageing
                            var days_since_post = Math.floor(seconds_since_post/(24*60*60));
                            var df = (Math.log(ageing+days_since_post) / (Math.log(ageing)));
                            var likes_per_day = (e.node.edge_liked_by.count / df);
                            // console.log("likes: " + e.node.edge_liked_by.count);
                            //console.log("df: " + df);
                            //console.log("likes_per_day: " + likes_per_day);
                            //return (likes_per_day > 10 * 1000);
                            var obj = {};
                            obj.url = e.node.display_url;
                            obj.likes_per_day = likes_per_day;
                            obj.days_since_post = days_since_post;
                            obj.total_likes = e.node.edge_liked_by.count;
                            return obj;
                        }
                        ));

                        pop_posts.sort(function (b,a) {
                          if (a.likes_per_day < b.likes_per_day)
                            return -1;
                          if (a.likes_per_day > b.likes_per_day)
                            return 1;
                          return 0;
                        });

                        //console.log(pop_posts);

                        pop_posts.forEach(function (obj) {
                            console.log(obj.url);
                        });
                    }

                    if (posts.page_info.has_next_page) {
                        GetPostsFromUser(user_id, first, posts.page_info.end_cursor);
                    }
                } else {
                    console.log( "ERROR: Posts AJAX call not returned good..." );
                }
            })
            .catch(function (err) {
                console.log( "ERROR: " + err );
            }); 
    }
}


ScrapeInstagramPage ({username : "dress_blouse_designer", debug : false});

इसे यहाँ आज़माएँ

उदाहरण: दिए गए URL के लिए ' https://www.instagram.com/dress_blouse_designer/ ' फ़ंक्शन कह सकते हैं

ScrapeInstagramPage ({username : "dress_blouse_designer", debug : false});

मैं केवल पहले 12 पोस्ट देख पा रहा हूं, मैं उन सभी को कैसे प्राप्त कर सकता हूं?
राहुल गावले

0

यह एक सरल अजाक्स कॉल और इमेज पथ को पुनरावृत्त करने का काम करता है।

        var name = "nasa";
        $.get("https://www.instagram.com/" + name + "/?__a=1", function (data, status) {
            console.log('IG_NODES', data.user.media.nodes);
            $.each(data.user.media.nodes, function (n, item) {
                console.log('ITEMS', item.display_src);
                $('body').append(
                    "<div class='col-md-4'><img class='img-fluid d-block' src='" + item.display_src + "'></div>"
                );
            });
        })

इसने मेरे लिए काम किया, लेकिन तभी जब मैं इंस्टाग्राम पर लॉग इन हुआ।
zundi

-1

यहाँ एक php स्क्रिप्ट है जो छवियों को डाउनलोड करती है और छवियों पर लिंक के साथ एक html फ़ाइल बनाती है। Php संस्करण के लिए क्रेडिट 350D, यह सिर्फ विस्तृत है..मैं यह सुझाव देता हूं कि यह एक क्रॉन जॉब है और फायरिंग होती है जो अक्सर आपको चाहिए। मई 2019 के रूप में काम कर सत्यापित

<?
$user = 'smena8m';
$igdata = file_get_contents('https://instagram.com/'.$user.'/');
preg_match('/_sharedData = ({.*);<\/script>/',$igdata,$matches);
$profile_data = json_decode($matches[1])->entry_data->ProfilePage[0]->graphql->user;
$html = '<div class="instagramBox" style="display:inline-grid;grid-template-columns:auto auto auto;">';
$i = 0;
$max = 9;
while($i<$max){
    $imglink = $profile_data->edge_owner_to_timeline_media->edges[$i]->node->shortcode;
    $img = $profile_data->edge_owner_to_timeline_media->edges[$i]->node->thumbnail_resources[0]->src;
    file_put_contents('ig'.$i.'.jpg',file_get_contents($img));
    $html .= '<a href="https://www.instagram.com/p/'.$imglink.'/" target="_blank"><img src="ig'.$i.'.jpg" /></a>';
    $i++;
}
$html .= '</div>';
$instagram = fopen('instagram.html','w');
fwrite($instagram,$html);
fclose($instagram);
?>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.