如何正确生成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=="
}
我在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=="
}