SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.

Поддержка
  • Появилась задача получить base64 контейнера canvas со страницы стороннего сайта. Вариант скриншот не подходит, так как размер изображения тогда будет маленьким, в том время как оригинал canvas'a, если в CSS поменять его высоту выше, намного больше.
    Ошибка: SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.
    Как воссоздать проблему: зайти на поиск Яндекса, ввести любую фразу, пролистать за топ 10, потом выскачет каптча как на скриншоте ниже с canvas эл-том.
    Здесь говорится про изменение crossorigin, как это можно применить через БАС? https://stackoverflow.com/questions/22710627/tainted-canvases-may-not-be-exported

    Снимок экрана 2023-09-23 в 09.11.57.png

  • @riki

    Прям какая-то эпидемия с этим Яндексом с начала сентября.

    Самый правильный путь - это MITM между браузером и интернетом, который будет доставать нужные тебе данные, менять заголовки, куда-то сохранять нужную тебе картинку или любые другие вещи.

    Что-то обсуждалось на этому форуме не так давно в том числе.

    Есть весьма не нулевая вероятность, что человек пытался решить ровно эту же задачу именно для Яндекса:

    https://community.bablosoft.com/topic/25624/выполнять-при-каждой-загрузке-страницы-в-браузере

  • @riki эта картинка приходит в запросе, перехвати модулем сеть через последний элемент кэша.
    Не слушай выше совет, не нужнен никакой mitm.

  • @FastSpace said in SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.:

    @riki эта картинка приходит в запросе, перехвати модулем сеть через последний элемент кэша.

    Это тоже вариант MITM с конкретной реализацией на стороне BAS.

    Но я решил, раз человек пришел с этим вопросом на форум, значит он попробовал решить сам задачу и у него не вышло. Где попробовал - это попробовал стандартными средствами BAS достать данные из кэша и там ничего не оказалось. Такое может быть, не все запросы попадают в кэш.

    Моя ошибка - решил я за человека не верно.

  • @sergerdn у Яндекса всё работает. Там задание и картинка по двум маскам в base64 падает.