Instagram?__ a = 1不再工作了

时间:2018-04-13 08:30:57

标签: facebook-graph-api instagram instagram-api

我一直在使用Instagram的未记录的API https://www.instagram.com/<user>/?__a=1来获取网站上的公共用户Feed。一段时间以来,这已不再适用,可能是因为Facebook删除了它。还有其他方法可以轻松获取Instagram帐户的数据吗?

5 个答案:

答案 0 :(得分:20)

我构建了一个小型服务器来进行转换。您将像以前一样使用?__ a = 1 (作为JSON)收到Instagram数据 - 玩得开心

https://www.instapi.io/u/<username>

https://www.instapi.io/u/appwithus

答案 1 :(得分:5)

编辑 15/03 不再工作 似乎 instagram 再次更改了他们的 API,现在它给出了 CORS 错误。

截至 2021 年 2 月 2 日,我找到了解决方案

而不是使用它要求登录的 https://www.instagram.com/username/?__a=1

只添加一个 /channel 似乎就可以了,就像这样:

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

答案 2 :(得分:3)

https://www.instagram.com/<user>/中有一个JSON数据。 您可以使用正则表达式来查找所需内容。

样品

// This regexp gets widest possible dict around "profile_pic_url"
// but inside tag <script type="text/javascript">...</script>
let r = new RegExp('<script type="text\/javascript">' + 
                   '([^{]+?({.*profile_pic_url.*})[^}]+?)' +
                   '<\/script>');

let source = document.documentElement.outerHTML;
let jsonStr = source.match(r)[2];
let data = JSON.parse(jsonStr);
console.log('data', data);

let oldVariantOfData = data['entry_data']['ProfilePage'][0];
console.log('oldVariantOfData', oldVariantOfData);

答案 3 :(得分:2)

在配置文件网址的html响应中附加了相同的响应,我在python中执行此时态解决方案(当我无法使用API​​时):

url_recent_media = 'https://www.instagram.com/%s/' % instagram_id
response = urllib2.urlopen(url_recent_media)

insta_html = response.read()
insta_html_split = insta_html.split('"ProfilePage":[')
if len(insta_html_split) > 1:
    insta_html_split_2 = insta_html_split[1].split(']},"gatekeepers"')
    if len(insta_html_split_2) > 1:
        json_dict = json.loads(insta_html_split_2[0])

我希望这对你有所帮助。

答案 4 :(得分:1)

您可以在不使用Instagram API的情况下尝试。

import json, urllib2

img_dicts = []
url = 'https://www.instagram.com/{}/'.format(instagram_username)
try:
    r = urllib2.urlopen(url, timeout=10.0)
    instagram_html = r.read()
    instagram_html_data = instagram_html.split('"ProfilePage":[')
    if len(instagram_html_data) > 1:
        instagram_html_final_data = instagram_html_data[1].split(']},"gatekeepers"')
        if len(instagram_html_final_data) > 1:
            json_dict = json.loads(instagram_html_final_data[0])
            media = json_dict['graphql']['user']['edge_owner_to_timeline_media']['edges']
            for obj in media:
                img_dicts.append({
                    'id': obj['node']['id'],
                    'caption': obj['node']['edge_media_to_caption']['edges'][0]['node']['text'],
                    'imgurl_standard': obj['node']['display_url'],
                    'imgurl_lower': obj['node']['thumbnail_resources'][4]['src'],
                    'imgurl_thumb': obj['node']['thumbnail_resources'][3]['src']
                })

img_dicts会为您提供不同质量的图片和Instagram帖子的标题。