Яндекс карты Get запрос чтение отзывов

finoz0

Client
Регистрация
20.01.2021
Сообщения
143
Реакции
26
Баллы
28
Пытаюсь получить через гет запрос отзывы сортированные по новизне
вывыв.png
Вот как выглядит запрос на смену вида сортировки
businessId=10661349235&csrfToken=094ef6f7d036ba37715630b2230e01ec2bf54704%3A1641506111&lang=ru&page=1&pageSize=50&ranking=by_time&reqId=1641506111152914-836513780-sas1-6015-4b6-sas-addrs-nmeta-new-8031&s=2107752780&sessionId=1641506111138_175285

Зелёным выделил переменные, которые легко достаются из обычного запроса на https://yandex.ru/maps/org/krasnaya_ploshchad/10661349235/reviews/
А вот красная переменная нигде мне так и не попалась, возможно она берется от работы javascript'а (совсем не эксперт и это вполне может быть не так), но без неё даже проверить не могу, верно ли работает всё остальное. А может я вообще не в ту сторону смотрю и у кого-то будет более светлая мысль.

Вариант с ручным пролистыванием точно не подходит, так как отзывов на компании большое количество и таким образом проект будет выполняться очень долго. Нужны по сути последние 10-20 отзывов максимум
 
Интересный вопрос. Тоже с подобной проблемой столкнулся. С учетом того, что участники форума притворились мертвыми у меня три версии:
1. Вопрос слишком сложен и никто не знает как решить.
2. Вопрос слишком прост, и снизойти до ответа некоторым персонажам с ЧСВ просто ниже их достоинства
3. Зенка умерла и пора переходить в BAS
 
reqId=1641506111 на время похоже очень
 
Ни у кого не получилось разобраться с этим S?
 
У яндекса по данному запросу можно получать отзывы и указывать сортировку по новизне или релевантности:
https://yandex.ru/maps/api/business/fetchReviews?a...}

Все параметры можно получать из html страницы и самый сложный параметр {s_hash} - специальный хэш для верефикации запроса и генерируется он из всех get параметров:
def hash_function(e):
t = len(e)
n = 5381
for r in range(t):
n = 33 * n ^ ord(e[r])
return n & 0xFFFFFFFF

s_hash = hash_function("ajax=1&businessId={busness_id}&csrfToken={csrf_token}&locale=ru_RU&page=1&pageSize=50&ranking=by_time&reqId={req_id}&sessionId={session_id}")


если что пишите мне на почту.
 
@it_monsterVV есть ли простой способ собрать этот хеш внутри зеннопостера? на самом деле эта s много где используется внутри яндекс карт, замечена, как минимум, так же в картинках и подсказках.
 
@it_monsterVV есть ли простой способ собрать этот хеш внутри зеннопостера? на самом деле эта s много где используется внутри яндекс карт, замечена, как минимум, так же в картинках и подсказках.

Попробуйте через кубик JS:
C#:
Развернуть Свернуть Копировать
function hashFunction(e) {
    var t = e.length;
    var n = 5381;
    for (var r = 0; r < t; r++) {
        n = (33 * n) ^ e.charCodeAt(r);
    }
    return n >>> 0; // Приведение к беззнаковому 32-битному числу
}

var s_hash = hashFunction("ajax=1&businessId={busness_id}&csrfToken={csrf_token}&locale=ru_RU&page=1&pageSize=50&ranking=by_time&reqId={req_id}&sessionId={session_id}");
return s_hash;
 
@n0n3mi1y к сожалению не помогло

Для прогрузки полного списка картинок, напрмер, запрос такого вида. Может кто-то сумеет расколдовать этот параметр

csrfToken=f663e319486c506ce1c91b940202a2fafbb69bbf%3A1711538887&fixed_top=aHR0cHM6Ly9hdmF0YXJzLm1kcy55YW5kZXgubmV0L2dldC1hbHRheS82MjIxNTk1LzJhMDAwMDAxODA5ZjBhNjIxZmRmZjE0ZjY0OGZjNmYwZTIxYy8lcw%3D%3D%2CaHR0cHM6Ly9hdmF0YXJzLm1kcy55YW5kZXgubmV0L2dldC1hbHRheS81NTk2NTE2LzJhMDAwMDAxODA5ZjBiNDU5YmNhMzYwNjBjNzY0ZGVmZjgwZi8lcw%3D%3D%2CaHR0cHM6Ly9hdmF0YXJzLm1kcy55YW5kZXgubmV0L2dldC1hbHRheS81MjM1MjIwLzJhMDAwMDAxODA5ZjBhMTQ3MzRjODIwODgzMTA2OGNjYjNhOC8lcw%3D%3D%2CaHR0cHM6Ly9hdmF0YXJzLm1kcy55YW5kZXgubmV0L2dldC1hbHRheS82MDU3NDc3LzJhMDAwMDAxODA5ZjA5YWRhYjE2MzQ4NjczYjk1YzQ1ZjU4Mi8lcw%3D%3D%2CaHR0cHM6Ly9hdmF0YXJzLm1kcy55YW5kZXgubmV0L2dldC1hbHRheS81MjM0NTk5LzJhMDAwMDAxODA5ZjBhYTIyMjBlZmY2ZWVmNmNmYWU4ODE5Ni8lcw%3D%3D%2CaHR0cHM6Ly9hdmF0YXJzLm1kcy55YW5kZXgubmV0L2dldC1hbHRheS82MjAzMDExLzJhMDAwMDAxODA5ZjBiMjVlODEzYTczMWI0ZTJkMDQwZTliNC8lcw%3D%3D%2CaHR0cHM6Ly9hdmF0YXJzLm1kcy55YW5kZXgubmV0L2dldC1hbHRheS81MTAwNzM3LzJhMDAwMDAxODA5ZjBhMzA5MzczNDZhMWUyNzU4ZWRkYTI5MC8lcw%3D%3D%2CaHR0cHM6Ly9hdmF0YXJzLm1kcy55YW5kZXgubmV0L2dldC1hbHRheS80MzkyOTIyLzJhMDAwMDAxODA5ZjA5ZjlkYzIzMTZlZWNjNTZmZTY2NWVjZC8lcw%3D%3D%2CaHR0cHM6Ly9hdmF0YXJzLm1kcy55YW5kZXgubmV0L2dldC1hbHRheS81MDk5MjU2LzJhMDAwMDAxODA5ZjA5OTk3YzhhMTljODUwZWU0YzY5YWJiZi8lcw%3D%3D%2CaHR0cHM6Ly9hdmF0YXJzLm1kcy55YW5kZXgubmV0L2dldC1hbHRheS82MjIxNTk1LzJhMDAwMDAxODA5ZjA5YmZmYTMyNmE4ZWQwNzg4ZTA2ZTJiOS8lcw%3D%3D&id=1102496351&lang=ru_RU&s=3121524897&sessionId=1711538886984530-17741438878999868089-balancer-l7leveler-kubr-yp-sas-253-BAL
 
Вот, что я нашёл в коде:
139776


u = function (e) {...} - эта наша функция хэширования. s.stringify здесь переводит объект в строку get-параметров, предварительно сортируя поля по ключам. Я немного поправил код, так что вот рабочая функция:

JavaScript:
Развернуть Свернуть Копировать
const hash = function(e) {
    var t = Object.keys(e).sort().reduce((obj, key) => {
        obj[key] = e[key];
        return obj;
    }, {});
    t = (new URLSearchParams(t)).toString();
    return t ? String(function(e) {
        for (var t = e.length, n = 5381, r = 0; r < t; r++)
            n = 33 * n ^ e.charCodeAt(r);
        return n >>> 0
    }(t)) : ""
}

hash({
    "csrfToken": "25e3d8a7579e030ade4d99879e37e220db181b83:1770816105",
    "sessionId": "1770816104670129-11568011645588529063-balancer-l7leveler-kubr-yp-sas-232-BAL",
    "ajax": "1",
    "businessId": "1010501395",
    "page": 5,
    "pageSize": 50,
    "reqId": "1770816104716927-820219387-addrs-upper-yp-51",
    "ranking": "by_relevance_org",
    "locale": "ru_RU"
}) // '2242092969'
 
Последнее редактирование модератором:
  • Спасибо
Реакции: Dmitriy_Zenno

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)