у меня есть скрипт посылающий запросы на ajax апи точку яндекса
params = {
"add_type": "direct",
"ajax": "1",
"direct_page_id": "670942",
# -- начинаем добавлять недостающие поля:
"experimental_business_show_exp_features[0]": "cbrf",
# Блок internal_pron[...]:
"internal_pron[businessDiscovery]": "true",
"internal_pron[centralBankCollaboration]": "true",
"internal_pron[directPoi]": "true",
"internal_pron[directPoiBeltSize]": "0",
"internal_pron[directPpoiCollisionPriority]": "low",
"internal_pron[directPpoiLoadingPriority]": "high",
"internal_pron[flyoverAttractionsMskSpb]": "true",
"internal_pron[flyoverRealtyPopup]": "true",
"internal_pron[friendsSuggestInReviewsButton]": "blue",
"internal_pron[friendsSuggestInReviewsPosition]": "4",
"internal_pron[poiRTContext]": "poisearch",
"internal_pron[tile3dPing]": "true",
"internal_pron[ugcFriendsSuggestSubscribers]": "true",
"internal_pron[vectorPpoiCollisionPriority]": "high",
"internal_pron[vectorPpoiLoadingPriority]": "high",
"internal_pron[vectorRichModelsEnabled]": "true",
"internal_pron[vectorRichPointsEnabled]": "true",
"internal_pron[vectorVmap3]": "true",
"lang": "ru_RU",
"ll": f"{lon},{lat}",
"origin": "maps-form",
"results": str(search_count),
# s=... (часто бывает какое-то случайное число, в вашем примере 2628136381)
"s": "2628136381",
# sessionId
"sessionId": self.session_id,
"snippets": (
"masstransit/2.x,panoramas/1.x,businessrating/1.x,businessimages/1.x,"
"photos/2.x,videos/1.x,experimental/1.x,subtitle/1.x,visits_histogram/2.x,"
"tycoon_owners_personal/1.x,tycoon_posts/1.x,related_adverts/1.x,related_adverts_1org/1.x,"
"city_chains/1.x,route_point/1.x,topplaces/1.x,metrika_snippets/1.x,place_summary/1.x,"
"online_snippets/1.x,provider_data/1.x,service_orgs_experimental/1.x,business_awards_experimental/1.x,"
"business_filter/1.x,histogram/1.x,attractions/1.x,potential_company_owners:user,pin_info/1.x,"
"lavka/1.x,bookings/1.x,bookings_personal/1.x,trust_features/1.x,plus_offers_experimental/1.x,"
"discovery/1.x,toponym_discovery/1.x,relevant_discovery/1.x,visual_hints/1.x,"
"matchedobjects/1.x,topobjects/1.x,org_offer/2.x,hotels_booking/1.x,stories_experimental/1.x,"
"ugc_friends_likes/1.x,fuel/1.x,realty_experimental/2.x,hot_water/1.x,neurosummary,"
"mentioned_on_site/1.x,showtimes/1.x,afisha_json_geozen/1.x,realty_buildings/1.x,"
"media_flow_stories_content/1.x"
),
# spn, test-buckets (можно оставить ваши или взять из эталона)
"spn": "0.000086,0.039207", # как в рабочем запросе
# text
"text": f"{request} {city}" if city else f"{request}",
# по эталону yandex_gid=11, z=14
"yandex_gid": "11",
"z": "14",
}
# Если есть актуальный csrf_token, добавляем и в заголовок, и в params
if self.csrf_token not in (None, ""):
auth_headers["X-Csrf-Token"] = self.csrf_token
params["csrfToken"] = self.csrf_token # <-- важно
url = "https://yandex.ru/maps/api/search"
изначально он получает куки карт, авторизации профиля яндекс и т.д. затем подставляются типичные параметры а после и мой поисковой запрос и координаты.
при первом запросе - логично прилетает новый crsf - токен. при втором запросе я подменяю его в куках и в параметрах. сразу после этого делаю повторный запрос и в ответ летит заветный Bad request. почему так может быть?