Как извлечь ссылку НСПК?

При сканировании QR на новых терминалах Сбера получается ссылка на multiqr.ru, где нужно выбрать банк или СБП; после выбора СБП происходит редирект на страницу СБП (НСПК). Можно ли как‑то извлечь прямую ссылку на СБП до редиректа? Если да — как это сделать: парсером, спецбиблиотеками или иным способом?
  • 16 мая 2026 г. 8:00
Ответы на вопрос 2
Короткий ответ — да, обычно можно. Как именно — зависит от того, как multiqr отдаёт ссылку на СБП: через HTTP‑редирект (Location) или «динамически» через JavaScript/клик. Ниже — проверенные способы и примеры.

1) Если это обычный HTTP(3xx)‑редирект
- Посмотреть заголовок Location:
  - curl -s -D - -o /dev/null 'https://multiqr.ru/ВАШ_КОД' | grep -i '^Location:'
  - или получить конечный URL (с переходом по редиректам): curl -s -L -o /dev/null -w '%{url_effective}\n' 'https://multiqr.ru/ВАШ_КОД'
  Часто это достаточно — вы сразу увидите URL, на который редиректит сервер (возможно это ссылка NSPK/СБП).

2) Если ссылка формируется/редиректится через JS или после клика (чаще всего)
- Открыть страницу в браузере и посмотреть исходник / DevTools:
  - View source → поиск по "sbp", "nspk", "sbp://" или по части ожидаемой ссылки.
  - DevTools → Network → нажать на кнопку «СБП» и в списке запросов найти переход/intent/параметр со ссылкой.
  Это самый простой ручной способ.

3) Автоматически (если надо парсить массово)
a) Если ссылка в HTML/JSON на странице — обычный парсер:
  - curl -s 'https://multiqr.ru/ВАШ_КОД' | grep -oP 'https?://[^"'\'' ]*sbp[^"'\'' ]*'
  - Или извлечь JSON из <script> и распарсить jq / python json.
b) Если ссылка генерируется JS/требуется клик — использовать headless browser (Puppeteer/Playwright), перехватывать сетевые запросы или получать href после клика:
  Пример на Playwright (Python):
    from playwright.sync_api import sync_playwright
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=True)
        page = browser.new_page()
        page.on("request", lambda req: print("REQ", req.url))
        page.goto("https://multiqr.ru/ВАШ_КОД")
        page.click("text=СБП")  # или точный селектор кнопки
        browser.close()
  Пример на Puppeteer (Node.js):
    const puppeteer = require('puppeteer');
    (async () => {
      const b = await puppeteer.launch();
      const p = await b.newPage();
      p.on('request', r => console.log('REQ', r.url()));
      await p.goto('https://multiqr.ru/ВАШ_КОД');
      await p.click('selector_кнопки_СБП');
      await b.close();
    })();
  - В этих скриптах вы увидите в логах URL, на который браузер идёт/который открывается — это и есть прямая ссылка на СБП/НСПК.

4) Утилиты для отладки / командная строка
- Использовать headless Chrome + DevTools Protocol (chrome-remote-interface) или cURL + pupeteer при автоматизации.
- Можно также воспользоваться браузерной функцией «Copy link address»/«Copy as cURL» в DevTools → Network.

5) Что ещё учесть
- Иногда multiqr показывает промежуточную страницу с кнопкой «Открыть в банке» и формирует URI схемы sbp://, который открывается приложением банка. Такие схемы видны в href кнопки или в сетевых запросах (intent/redirect). Если это sbp:// — браузер может не следовать автоматически, но вы всё равно сможете скопировать строку.
- Может потребоваться корректный User‑Agent или cookies/рефёрер, если сервер возвращает разные данные для мобайла/десктопа.
- Автоматизация кликов целесообразна, если нужно массово извлекать ссылки. Для единичной проверки проще DevTools.

Если хотите — пришлите конкретную multiqr‑ссылку (или пример HTML) — покажу точную команду/скрипт, как получить ссылку НСПК для неё.
<code>requests.get(multiqr_url)</code> , ищи href с qr.nspk.ru в html. Нет — DevTools Network, кликни СБП.
Похожие вопросы