есть такая приколюха как открыть новую вкладку, там собствеено и открываешь новый сайт, но не забудь после открытия новой вкладки проверить список открытых вкладок, для этого есть специальный экшен , в нём ты и увидишь какой юрл у тебя в какой вкладке (с каким номером) в твоём в браузере открыты. После того как нашел номер кладки которую ты только что открыл, используй экшен закрыть вкладку , и у тебя закроется открытая только что вкладка и останется та на которую ты хотел вернуться. Да можно конечно закрыть первую вкладку и у тебя останется нулевая но в сложных скриптах бывают траблы и моржно запутаться и закрыть не ту)
Помогите с проблемой генерации хэша Authorization: SAPISIDHASH
-
1685631199 - Unix Time Stamp
X-Goog-Api-Key - как правило , статичный заголовок -
Только что посмотрел их код в гмейле как этот заголовок создается. Ты говорил про хеш, который зависит от куки, урл и времени. Однако в гмейле там немного по-другому, по крайней мере это то что я вижу из кода. Там два заголовка, это так. Правда тот который имеет вид SAPISIDHASH $time_$hash не генерится под каждый новый запрос, а вычисляется один раз на страницу, по крайней мере у меня так в браузере, но это не суть.
- Тот заголовок что имеет вид SAPISIDHASH $hash:
$hash получается хешированием строки "$SAPISID $url". Я хз что там за функция хеширования, мне лень искать псевдокоды и сравнивать алгоритмы, но допустим это SHA-1 как ты и говоришь. Так вот при хешировании этого заголовка время не играет никакой роли, там его нет. - А вот как раз с заголовком SAPISIDHASH $time_$hash - там уже так:
$hash получается хешированием строки "$time $SAPISID $url", при этом что в заголовке, что при хешировании $time одинаковые.
- Тот заголовок что имеет вид SAPISIDHASH $hash:
-
@High-Level , в моем случае, я работаю с временем через $time_msec = intval(microtime(true) * 1000. По поводу Unix Time Stamp похоже на правильный вариант, проверю. Одного не понимаю, в этом случае, что до нижнего подчеркивания, что после, происходит вычисление времени. Как то дико
-
@kavo Вот именно у меня APISIDHASH $time_$hash меняется для каждого запроса. Сейчас опять перепроверил:
Authorization: SAPISIDHASH 1685681773_7b45633dcb71cbd15849d56ff5ad10dcdbd3fc1b
Authorization: SAPISIDHASH 1685681774_2a91e055fa4c01a80e9ed39cd65068c6ba9a9314
Как видишь разница что в $time, что в $hash имеется, и это идущие друг за другом post-запросы. А вот в хэше из 40 символов да, так и есть, он меняется раз в сессию.
И выше писали, что заголовок X-Goog-Api-Key статичный. Это тоже не так. В каждом запросе он так же разный:
X-Goog-Api-Key: AIzaSyABqJ85_R2irnKzMtGBL0iHuyFBi6Efk1w
X-Goog-Api-Key: AIzaSyA7gAruVC1V-GYDhbDF3Szc2YgUTo1-YHM
По поводу заголовка SAPISIDHASH $hash мне вообще нужно их хеширования время убрать? В итоге, если я все правильно понимаю, то мне нужно из хеширования SAPISIDHASH $hash убрать время, а в $time_$has как раз его добавить. В итоге до нижнего подчеркивания будут хешированные данные времени, а после него хеш sapisid_cookie и URL. Все верно? -
Ну тебе нужно поэтому было в посте писать на каком ты ресурсе делаешь это, и ты в чем там смотришь? В хроме в панельке Network?.
Но то что у тебя для каждого запроса оно меняется - ну и че, генерируй так же для каждого запроса.
Время должно быть в секундах, а не миллисекундах только

На картинке хорошо видно че происходит.Насчет X-Goog-Api-Key, ты если бы сервис сказал, я бы его нашел. В гмейле есть X-Goog-Auth-User, и он тоже зависит от какой-то ветки. Если она есть - то там будет значение, если нет - то будет 0.
-
@kavo said in Помогите с проблемой генерации хэша Authorization: SAPISIDHASH:
Время должно быть в секундах, а не миллисекундах только
Ок, принял, поменяю.
"если бы сервис сказал" - Вот он
-
@High-Level и @kavo спасибо за подсказки. Вроде справился с Authorization: SAPISIDHASH
В итоге у меня получается, что Authorization: SAPISIDHASH 5af9ca3bc0ca2fc23021551098dc613235a58742 хэшируется (sha1) из значений $sapisid_cookie и $URL, и оно меняется только при изменений этих данных(параметр $time в него не включен ), а второе Authorization: SAPISIDHASH 1685699777_38dc2bf80f96b8045f3992667f19ecaa894ad53b состоит из $time_$auth_hash, где $auth_hash, это хэш из $time,$sapisid_cookie и $URL. Параметр $time в хеше и в значении до нижнего подчеркивания один и тот же. Соответсвенно, итоговый Authorization: SAPISIDHASH меняется каждый раз в связи с изменением времени. Реализовал получение этих обоих параметров в один код. В результате Authorization: SAPISIDHASH 5af9ca3bc0ca2fc23021551098dc613235a58742 отрабатывается на отлично. SAPISIDHASH 1685699777_38dc2bf80f96b8045f3992667f19ecaa894ad53b еще не проверял, так как с ним в запросе всегда находится X-Goog-Api-Key, который еще не раскурил. Вроде как все ок!Единственное, @kavo, посмотри пожалуйста на досуге, про заголовок X-Goog-Api-Key. Линк на сервис выше скинул. Еще раз всем спасибо!
-
Он статичный на все запросы, каким образом он у тебя может меняться?

Вот он прям в скрипте здесь задан

Если просто ПКМ по этому скрипту, скопировать линк и вставить в браузере, то там будет именно этот апи ключ.
Другое дело, что скрипт не всегда один и тот же, но у меня что в своем гугл хроме, что в антике с другим акком + прокси, эти api key одинаковые. -
Скорей всего дело в том, что ты не сможешь повторить с обычным аккаунтом gmail все действия, которые у меня осуществляются на аккаунте WS(work space). На обычном аккаунте это выполнить нельзя. Но реально, значение X-Goog-Api-Key, меняется от одного post-запроса к другому в рамках одной сессии. Да даже не сессии, в рамках пару секунд. Но опять же почему то не всегда, но в 90% случаев это именно так. Тем не менее, X-Goog-Api-Key ты же нашел, и я не думаю, что он будет менять место. Как его лучше выцарапать?
-
Хз как будет он в твоем случае собираться, но вообще он находится если девтулсе во вкладке Network нажать Ctrl+F и вбить значение из запроса. В результатах поиска будет скрипт где прям в сорсе этот ключ находится.
У тебя такое ощущение что каждый раз страница загружается по новой перед следующим твоим пост запросом. Это бы объясняло почему каждый раз время меняется в Auth хедере, да и апи ключ. Либо там вообще в work space скрипты другие, но в обычном акке и апи ключ, и auth header высчитывается только один раз при загрузке страницы -
@kavo said in Помогите с проблемой генерации хэша Authorization: SAPISIDHASH:
У тебя такое ощущение что каждый раз страница загружается по новой перед следующим твоим пост запросом
Нет, но там все работает в iFrame. Может это как то влияет?