Пишу плагин который заточен под определенный сайт, который периодически просит ввести капчу. Плагин должен передать эту капчу удаленному серверу (моему) и вводить полученный от сервера ответ. Плагин используется для того чтобы замаскировать запросы к удаленному серверу - владельцам сайта будет сложнее отследить такое решение.

Все более-менее понятно кроме того каким образом передать капчу на мой сервер?

okkamas_knife пишет

читаем про canvas

спасибо, а можно ссылку? https://developer.mozilla.org/ru/docs/%D0%9E%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_canvas речь об этом?

okkamas_knife пишет

https://www.google.com/search?q=site:de … 2canvas%22
до кучи в теме Готовые кнопки для СВ есть кнопка скриншота а в теме для кнопкописателей есть кнопка постинга иконок там тоже юзается канвас, можно взять как примеры.

скриншот для данной задачи не подходит, второй пример так и не смог найти(( я саму последовательность действий не понимаю - для чего нам нужна канва в данном случае и каким образом из объекта изображения получить контекст, пересмотрел статей 10, но везде только создание изображения и элементарные манипуляции с ними((

okkamas_knife пишет

№2
кнопка Make icons line and post
из того что тебе нужно -
кнопка создаёт страничку с изображениями и потом делает скриншот нужного участка.

а получить контекст картинки без извращений со скринами никак нельзя?

Написал такой вариант

Выделить код

Код:

<!DOCTYPE HTML>
<html>
    <head>
        <title>canvas</title>
        <meta charset="utf-8">
    </head>
    <body>
        <img src="http://forum.mozilla-russia.org/style/img/Moz-infinity/pun_Moz-infinity_forum_logo.png" id="captcha">
        <br>
        <canvas width="500" height="500" id="canvas"></canvas>
        <script>
            var canvas = document.getElementById('canvas'),
                captcha = document.getElementById('captcha'),
                ctx = canvas.getContext('2d'),
                img = new Image();
            img.onload = function() {
                // ctx.clearRect(0, 0, img.width, img.height);
                ctx.drawImage(img, 0, 0);
                // ctx.save();
                console.log(canvas.toDataURL('image/png'));
            }
            img.src = captcha.src;
        </script>
    </body>
</html>

Но возникает ошибка "SecurityError: The operation is insecure." каким образом её можно обойти?

okkamas_knife пишет

никак. потому что для такой операции канвас должен выполнятся из расширения а у страницы недостаточно прав.ну читаем же документацию!

почему данная проблема произошла мне понятно и переводом фразы с английского вы явно не поможете. мануалы смотрел, но большинство из них морально  устарели - примеры не работают даже "as is".
а если картинку перегнать в base64, а потом передать контекст всей страницы, передастся ли она как в коде страницы?

okkamas_knife пишет

еще раз повторяю читаем документацию и .

если б я понимал что читать, то я бы попусту вас не дергал. единственное что нашел по ff и canvas это https://developer.mozilla.org/en-US/docs/Web/HTML/Canvas но к решения проблемы меня это не приблизило. я не понимаю фразы "используем канвас не из страницы а из расширения", что под этим подразумевается? какое-то спец api для canvas в ff? если да, то где про это почитать?

Поймите, что это Вам все понятно и просто потому, что ты в этом давно варитесь, а как могу я что-то найти, если я даже не могу четко сформулировать что именно искать? Когда  начинал работу над этим плагином, то я даже не подозревал, что для реализации такого сравнительно простого действия потребуется столько усилий.

По поводу того откуда запускать, то я пишу и тестирую на основе оф.мануала https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Installation
Смотрю свой пример и понимаю что он неудачный, но я этот код и в плагине конечно проверял.

Спасибо за пример и помощь, буду разбираться.

И еще небольшой вопрос из любопытства - а если с помощью плагина сохранить картинку локально, то потом получиться передать её как описано в моем варианте?

WinterSilence пишет

https://developer.mozilla.org/en-US/docs/Web/HTML/Canvas но к решения проблемы меня это не приблизило

https://developer.mozilla.org/en-US/doc … mage%28%29