获取喜欢帖子的用户列表

时间:2017-12-28 09:19:47

标签: javascript php instagram-api

我的一位朋友决定在Instagram上进行抽奖活动,而没有过多考虑如何获得喜欢帖子的完整用户列表。他说他可以从可用/可见列表中选择一个随机用户,但这不公平,所以我决定介入。

这个帖子目前有1.4k喜欢。

首先,我在JS中创建了一个小脚本来查看,向下滚动(填充列表)并最终获得喜欢该帖子的用户。创建这很麻烦,但它确实有效。然后我意识到我无法查看所有用户。虽然有1.4万用户,但我只能列出其中的675个。

以公平的名义,这还不够。所以我开始挖掘更多,并检查(Instagram)帖子页面发布到Instagram Graph API的HTTP请求,以加载更多用户。这就是URL的样子:

https://www.instagram.com/graphql/query/?query_id=SOME_ID&variables={\"shortcode\":\"SHORTCODE\",\"first\":20}

当我向此网址发出请求时,我会收到以下信息:

{
    "data": {
        "shortcode_media": {
            "id": "SOME_ID",
            "shortcode": "SHORTCODE",
            "edge_liked_by": {
                "count": 675,
                "page_info": {
                    "has_next_page": false,
                    "end_cursor": "AQBPkM1xm2XgBx8ZQ8lR6GDsFAvQBx_Eqxg2NnTXN-GUPGhlpUa9_10UoMcJ6xNcIH4"
                },
                "edges": [{
                    "node": {
                        "id": "", // value omitted intentionally
                        "username": "", // value omitted intentionally
                        "full_name": "", // value omitted intentionally
                        "profile_pic_url": "", // value omitted intentionally
                        "is_verified": false,
                        "followed_by_viewer": false,
                        "requested_by_viewer": false
                    }
                },
                ...

这个["edge_liked_by"]["count"]属性设置为675。我猜这是服务器端的限制。当我在URL中增加"first"参数并使其大于675时,它仍会返回675个用户。

我可以克服这个限制并以任何方式获得完整列表吗?

更新:我刚刚对评论做过同样的尝试。该帖子有11.8k评论,这是请求返回的内容:

{
    "data": {
        "shortcode_media": {
            "edge_media_to_comment": {
                "count": 11809,
                "page_info": {
                    "has_next_page": true,
                    "end_cursor": "AQBV53OxNFkaHwJ6xjgHmlI-hwtpHCEeButMmGLwZJ_sjdyUy49gY_WZo1iH_aRcuAFOCzfrKPEktMaQLRjFVAsmQTincJpr4ZTITbTT1BZkJQ"
                },
                "edges": [{
                    "node": {
                        "id": "",
                        "text": "",
                        "created_at": ,
                        "owner": {
                            "id": "",
                            "profile_pic_url": "",
                            "username": ""
                        }
                    }
                },
                ...

评论的确切数量为11809,请求首先列出10259,但还有下一页。所以我要求下一页,就是这样:

{
    "data": {
        "shortcode_media": {
            "edge_media_to_comment": {
                "count": 11809,
                "page_info": {
                    "has_next_page": false,
                    "end_cursor": null
                },
                "edges": [{
                    "node": {
                        "id": "",
                        "text": "",
                        "created_at": ,
                        "owner": {
                            "id": "",
                            "profile_pic_url": "",
                            "username": ""
                        }
                    }
                },
                ...

这次它没有返回剩余的1550(11809 - 10259)用户,但只有356个用户。并且没有下一页。所以似乎存在一些不一致之处。 (也许,有一个隐私问题阻止某些用户被列出?)

0 个答案:

没有答案