Instagram ?__a=1&max_id=<end_cursor> 不适用于公共用户提要

Posted

技术标签:

【中文标题】Instagram ?__a=1&max_id=<end_cursor> 不适用于公共用户提要【英文标题】:Instagram ?__a=1&max_id=<end_cursor> isn't working for public user feeds 【发布时间】:2018-03-13 20:08:05 【问题描述】:

我一直在使用 Instagram 的未记录 API https://www.instagram.com/&lt;user&gt;/?__a=1 来获取公共用户供稿。

我还可以通过他们的 max_id 查询参数获取多个页面,如下所示:https://www.instagram.com/&lt;user&gt;/?__a=1&amp;max_id=&lt;end_cursor&gt;

end_cursor = json_response.graphql.user.edge_owner_to_timeline_media.page_info.end_cursor

(是的,“has_next_page”是真的)

他们最近对 JSON 格式进行了更改,我认为他们可能破坏了其他功能。

“end_cursor”仍然存在,但当我使用它时,我会返回相同的 Instagram 帖子,就好像我没有使用它一样。

为了确保我清楚,我的问题是max_id=&lt;end_cursor&gt; 似乎不再适用于公共用户供稿。我仍然可以获得前 12 个帖子,但之后就不能再发了。

还有其他人看到这个问题吗?

这是我的意思的 JSFiddle 示例: https://jsfiddle.net/LLsg91ja/33/

【问题讨论】:

【参考方案1】:

2018 年 4 月 14 日 - 不再工作 - INSTAGRAM 弃用了 '?__a=1' 和 '?query_id=17888483320059182' - 这不再有效!

好的,看看这个媒体分页:

https://instagram.com/graphql/query/?query_id=17888483320059182&amp;id=&lt;user_id&gt;&amp;first=12&amp;after=&lt;end_cursor&gt;

这会返回:

['data']['user']['edge_owner_to_timeline_media']['page_info']['end_cursor']

和媒体:

['data']['user']['edge_owner_to_timeline_media']['edges']

“query_id”现在是静态的,所以只需使用:17888483320059182

'id' 是“instagram 用户 id”,所以你必须使用 ?__a=1 来获取 ['graphql']['user']['id']

'first' 是您希望返回的照片数量。只需使用 12 即可保持媒体返回不变。

'after' 是新的 'max_id' 供使用 ['data']['user']['edge_owner_to_timeline_media']['page_info']['end_cursor']

我会进行更多测试并稍后回复。

稍后回复:

据信使用?__a=1 的“分页”已被弃用。如果为真,那么没有答案可以使用?__a=1 为 Instagram 分页解决操作员的直接问题。

但此答案中提供的代码将提供 Instagram 媒体的分页,该分页确实提供了操作所寻求的结果。

答案包含“instagram graphql api”,这是当前的 api(而不是 json ?__a=1 hack),所以这个答案现在应该提供一些稳定性。

在我的现场使用:

在 Instagram 媒体请求之前获取id=&lt;instagram_user_id&gt;

profile = https://www.instagram.com/&lt;instagram_username&gt;/?__a=1

media = https://instagram.com/graphql/query/?query_id=17888483320059182&amp;id=&lt;profile['graphql']['user']['id']&gt;&amp;first=12&amp;after=&lt;end_cursor&gt;

【讨论】:

这不提供问题的答案,不应放在答案部分 您需要创建自己的问题。每个人都赢得了特权,你也不例外。无论如何,您以答案形式发表的评论都将被删除。总是有审核,您越早了解规则,您就可以更好地使用论坛 @Francisc0 - query_id 是一个永久值(query_id=17851374694183129),将来可能会发生变化:谷歌搜索几十个例子。并且代码来自对 facebook/instagram graphql api 的最新更改,因此它可能会持续几年。同样对于标签搜索尝试https://instagram.com/graphql/query/?query_id=17888483320059182&amp;tag_name=&lt;tag_name&gt;&amp;first=12&amp;after=&lt;end_cursor&gt; @arbaz-abid,你是对的,我是错的。 &page=n 不返回下一页资产,只返回首页资产(我以前认为它很奇怪)。目前 ?query_id=params[:query_id] 和 ?__a=1&first=12&after=params[:end_cursor] 不起作用。我会在有时间的时候尝试解决这个问题。 (很抱歉对分页的“二年级”解释 - 教我十几岁的女儿如何编程,所以有时我过度解释:dadsplaining) @WilliamHampshire 这不再起作用 - query_id 和 __a=1 都已被弃用 - 为了回答你的问题,query_id 被硬编码为 'query_id=1785137469418312' - 其中 1785137469418312 来自我有不知道。再次,这不再有效。目前没有其他选择。【参考方案2】:

你可以使用这个:?__a=1&page=3

【讨论】:

即使使用 hastags 也不起作用。 &page=# 无效。

以上是关于Instagram ?__a=1&max_id=<end_cursor> 不适用于公共用户提要的主要内容,如果未能解决你的问题,请参考以下文章

调用 Instagram 'www.instagram.com/explore/tags/tag/?__a=1' 返回 Instagram 登录页面

Instagram ?__a=1 查询:为啥我得到登录页面而不是 JSON?

Instagram 公共 API (/?__a=1) 有效,但仅在某些时候有效

从 instagram __a=1 用 php 读取 JSON

02_python闯关练习_02Max&Min

Instagram api 在本地主机上工作正常,但在服务器上发送错误 (https://www.instagram.com/$name/?__a=1)