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/<user>/?__a=1
来获取公共用户供稿。
我还可以通过他们的 max_id
查询参数获取多个页面,如下所示:https://www.instagram.com/<user>/?__a=1&max_id=<end_cursor>
end_cursor = json_response.graphql.user.edge_owner_to_timeline_media.page_info.end_cursor
(是的,“has_next_page”是真的)
他们最近对 JSON 格式进行了更改,我认为他们可能破坏了其他功能。
“end_cursor”仍然存在,但当我使用它时,我会返回相同的 Instagram 帖子,就好像我没有使用它一样。
为了确保我清楚,我的问题是max_id=<end_cursor>
似乎不再适用于公共用户供稿。我仍然可以获得前 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&id=<user_id>&first=12&after=<end_cursor>
这会返回:
['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=<instagram_user_id>
:
profile = https://www.instagram.com/<instagram_username>/?__a=1
media = https://instagram.com/graphql/query/?query_id=17888483320059182&id=<profile['graphql']['user']['id']>&first=12&after=<end_cursor>
【讨论】:
这不提供问题的答案,不应放在答案部分 您需要创建自己的问题。每个人都赢得了特权,你也不例外。无论如何,您以答案形式发表的评论都将被删除。总是有审核,您越早了解规则,您就可以更好地使用论坛 @Francisc0 - query_id 是一个永久值(query_id=17851374694183129),将来可能会发生变化:谷歌搜索几十个例子。并且代码来自对 facebook/instagram graphql api 的最新更改,因此它可能会持续几年。同样对于标签搜索尝试https://instagram.com/graphql/query/?query_id=17888483320059182&tag_name=<tag_name>&first=12&after=<end_cursor>
@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
Instagram api 在本地主机上工作正常,但在服务器上发送错误 (https://www.instagram.com/$name/?__a=1)