Хотел — чтобы цена ETF в приложении, которое считает мои деньги, обновлялась сама. Источник котировок бесплатный и без ключа, но с рукопожатием: сначала cookie, потом crumb, и только потом батч-запрос на все тикеры сразу.
Споткнулся — рукопожатие перестало проходить: на выдачу crumb приезжал 429, цена стояла. Диагноз показался очевидным: источник закрыл рукопожатие, надо уходить на запрос графика — он отдаёт и котировку, и историю, и обходится без cookie. Решение я одобрил и переписал источник.
Замерил уже после правки, с ноутбука и с сервера, перебирая строку User-Agent. 429 приезжал не на crumb. 429 приезжал на «правдоподобную» полную строку браузера: Chrome/126 — 429, curl — 429, короткая Mozilla/5.0 — 200. Везде, включая crumb. Рукопожатие было живо всё это время, а первая проверка просто шла с другим User-Agent, чем само приложение.
Решил — переход оставить. Не потому, что я был прав, а потому, что рукопожатие — два лишних запроса перед каждым обновлением, и теперь я точно знаю, что они отваливаются молча и по причине, которую не угадаешь. Отвергнутый вариант — вернуть батч: один запрос на все тикеры вместо запроса на каждый. После правки загрузилось 250 дневных цен за год.
Чем плачу — запросом на тикер вместо одного запроса на всех. И отдельно — тем, что правильное решение было принято по неверной причине. Такое приходится объяснять заново: не «сделал», а «сделал, но не из-за того, о чём договаривались». Полная строка браузера выглядит честнее короткой, а проходит короткая — это стоит записать там, где будешь искать в следующий раз.
#отказ