Как правильно сгенерировать x-instagram-gis - PullRequest
0 голосов
/ 28 декабря 2018

Я написал следующую функцию в Python3.7 для генерации x-instagram-gis.Согласно моим исследованиям по этой теме, я понял, что мне нужны только переменные rhx_gis и переменные (id: profile_id, first: int <50, after: end_cursor) для генерации x-instagram-gis. </p>

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()

Запуск следующего должен вернуть: 90bd6b662f328642477076d92d599064

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

print(generate_x_instagram_gis(rhx_gis, cursor, profile_id))

Но он возвращает: f5e1e4be6612701d43523d707e36672b

Для справки, это источники, на которые я смотрел:

Я не совсем уверен, чтоЯ делаю неправильно, когда я запускаю это со всей моей программой, это не работает, и это единственная часть, которая вызывает проблемы после большого тестирования.Еще одна вещь, которую я заметил, заключается в том, что MD5 отличается при работе на Python3.7 и Python2.7

Ответы [ 2 ]

0 голосов
/ 05 января 2019

Кажется, что Instagram снова обновил API, и формат для query_variable изменился.Это выглядит следующим образом:

{
   "id":"25025320",
   "include_reel":true,
   "fetch_mutual":false,
   "first":13,       
   "after":"QVFDZV9udFJKbVk3OGNlOE1LeGx3V1g0aEUyNFNSQTFUenhWOFVkWktTVzdpdUJRSk9EQXY3Ym9QQXFwTWJEci1pYklhSHFGQU1PTnl6QmhZbGpjalplSQ=="
}
0 голосов
/ 29 декабря 2018

Я понял это.

Значение rhx_gis рассчитывается на основе агента пользователя, отправленного в заголовках.Полученное мной значение rhx_gis было получено с помощью запросов python, которые устанавливают свой собственный пользовательский агент (запросы python или что-то подобное), тогда как значение rhx_gis, которое я видел в Postman, было создано с использованием другого пользовательского агента (установленного в Postman)

Чтобы решить эту проблему, мне пришлось установить тот же пользовательский агент в запросах Python, что и в Postman.

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