如何正确生成x-instagram-gis

How to correctly generate x-instagram-gis

我在Python3.7中写了下面的函数来生成x-instagram-gis。根据我对这个主题的研究,我收集到我只需要 rhx_gis 和变量(id:profile_id,首先:int<50,之后:end_cursor)来生成 x- instagram-gis.

def generate_x_instagram_gis(rhx_gis, cursor, profile_id):
    params = {
        "id": profile_id,
        "first": 12,
        "after": cursor,
    }
    json_params = json.dumps(params, separators=(',', ':'))
    values = "{}:{}".format(rhx_gis, json_params)
    return hashlib.md5(values.encode('utf-8')).hexdigest()

运行 以下应该 return: 90bd6b662f328642477076d92d599064

rhx_gis = "7733066781d53e86a089eeb454c5446d"
cursor = "QVFBZWRqS0RnbGMtaXJhQzhlRW01R0I2YngtVXNQOGRTZzdHZEdseGcyVE1MdUxFYmYyY011Zkx6dFZtQUlsYWNvRl9DWnhtalpXZ2daSU5YQnFNTFBGRg=="
profile_id = "6822549659" #https://www.instagram.com/kimimatiasraikkonen/

print(generate_x_instagram_gis(rhx_gis, cursor, profile_id))

但是它 returns: f5e1e4be6612701d43523d707e36672b

作为参考,这些是我看过的来源:

我不完全确定我做错了什么,当我 运行 对我的整个程序进行此操作时它不起作用,这是经过多次测试后唯一导致问题的部分。我注意到的另一件事是,当 运行ning on Python3.7 和 Python2.7

时,MD5 是不同的

我想出来了

rhx_gis值是根据headers中发送的user-agent计算出来的。我获得的 rhx_gis 值是使用 python 请求检索的,该请求设置了自己的 user-agent (python-requests 或类似的东西),而我看到的 rhx_gis 值on Postman 是使用不同的 user-agent 创建的(在 Postman 上设置)

为了解决这个问题,我必须在 python 请求中设置与在 Postman 上设置的相同的 user-agent。

headers = {
    'User-Agent' : '' # user-agent here
} 
requests.get(url, headers=headers)

Instagram 好像又更新了 API, query_variable 的格式也变了。看起来如下所示:

{
   "id":"25025320",
   "include_reel":true,
   "fetch_mutual":false,
   "first":13,       
   "after":"QVFDZV9udFJKbVk3OGNlOE1LeGx3V1g0aEUyNFNSQTFUenhWOFVkWktTVzdpdUJRSk9EQXY3Ym9QQXFwTWJEci1pYklhSHFGQU1PTnl6QmhZbGpjalplSQ=="
}