如何通过 http 请求在 Instagram 中获取关注者和关注列表
Posted
技术标签:
【中文标题】如何通过 http 请求在 Instagram 中获取关注者和关注列表【英文标题】:How to get followers and following list in Instagram via http requests 【发布时间】:2016-06-06 13:26:31 【问题描述】:我正在寻找一种可能性,通过网络请求(与 Instagram 网站上的方式相同)以 JSON 格式获取关注者和关注列表。 例如,我可以通过请求登录,并获取用户信息:
def get_user_info(self, user_name):
url = "https://www.instagram.com/" + user_name + "/?__a=1"
try:
r = requests.get(url)
except requests.exceptions.ConnectionError:
print 'Seems like dns lookup failed..'
time.sleep(60)
return None
if r.status_code != 200:
print 'User: ' + user_name + ' status code: ' + str(r.status_code)
print r
return None
info = json.loads(r.text)
return info['user']
我试图查看 chrome 向服务器发送的请求,但未成功。 问题是:如何在没有 Instagram API 的情况下准备类似的 get 或 post 请求来检索关注者列表?
【问题讨论】:
找不到页面。 【参考方案1】:使用 query_hash
= "58712303d941c6855d4e888c5f0cd22f"(以下)和 "37479f2b8209594dde7facb0d904896a"(关注者)的 GraphQL 查询会返回此信息。登录后,使用参数query_hash
和variables
对instagram.com/graphql/query 进行GET 查询,其中variables
是一组JSON 格式的变量id
(用户ID,如返回get_user_info()
函数的字典),first
(页面长度,似乎当前最大值为 50)和在后续请求中将 after
设置为上一个响应字典中的 end_cursor
。
或者,Instaloader 库提供了一种方便的登录方式,然后以编程方式访问个人资料的关注者和关注者列表。
import instaloader
# Get instance
L = instaloader.Instaloader()
# Login or load session
L.login(USER, PASSWORD) # (login)
L.interactive_login(USER) # (ask password on terminal)
L.load_session_from_file(USER) # (load session created w/
# `instaloader -l USERNAME`)
# Obtain profile metadata
profile = instaloader.Profile.from_username(L.context, PROFILE)
# Print list of followees
for followee in profile.get_followees():
print(followee.username)
# (likewise with profile.get_followers())
除了username
,full_name
、userid
、followed_by_viewer
等属性在为每个关注者返回的Profile
实例中定义。
【讨论】:
似乎很多类似的工具都在使用GraphQL
和query_hash
作为关注者。我正在尝试使用 Java 来处理同样的事情。你觉得适用吗?你有什么代码可以分享吗?非常感谢。
@aandergr 没关系,每 1k 刮掉的追随者我都会被阻止大约 10 分钟,因为:Too many queries in the last time. Need to wait 630 seconds, until ...
我能以某种方式通过吗?【参考方案2】:
简单(只需将 _a 替换为 __a)
'https://www.instagram.com/'+user_name+'/followers/?_a=1'
'https://www.instagram.com/'+user_name+'/following/?_a=1'
【讨论】:
我试过这种方法,但它重定向到用户名主页,但是如何获取关注者列表? 我在公众号上试过。它适用于您的情况吗? 是的,它可以在浏览器中使用,使用 requests.get 或 curl 可以在此处附上浏览器截图供任何公众号使用吗? 肯定禁用。会提示登录。以上是关于如何通过 http 请求在 Instagram 中获取关注者和关注列表的主要内容,如果未能解决你的问题,请参考以下文章
如何将 instagram curl 发布请求转换为 javascript 请求?
Instagram API - 请求 /tags/xxx/media/recent 中缺少值