Оценивать с помощью юрского кода js, который модифицирует html

Я пытаюсь переопределить получение капчи внутри приложения C#. Возникли проблемы из-за отсутствия опыта в JS.

GET-запрос возвращает данные, которые содержат тег captcha src, по умолчанию пустой.

...
<div class="context"><img src="" id="capchaVisual" alt="loading..."></div>
...

Он также возвращает некоторый JavaScript, который заполняет капчу, например:

function() {
var h = window.location.href;
if (h.indexOf("mytag") + 1) {
    var scr = $("#capchaVisual").attr("src");
    $("#capchaVisual").attr("src", scr + "data:image/jpeg;base64,/9j/MYCAPTCHADECODED...");
}

Мои шаги в приложении C#:

  1. Загрузите JSON с данными и скриптами через WebClient и JavaScriptSerializer. Готово. Результат хранится в ответе jsonobject, где answer.data содержит html, а answer.e - скрипты для выполнения.
  2. Попробуйте выполнить загруженные скрипты через юрский период:

        var engine = new Jurassic.ScriptEngine();
        engine.EnableDebugging = true;
        //engine.SetGlobalValue("window", answer.data);
    
        foreach (var line in answer.e)
        {
            var evalresult = engine.Evaluate(line);
            string t = evalresult.ToString();
        }
    

    Ошибка с: ReferenceError: окно не определено.
    Если раскомментируйте строку 3 engine.SetGlobalValue("window", answer.data), получите еще одну ошибку: TypeError: undefined не может быть преобразован в объект.

1 ответ

Нашел ответ в старых юрских вопросах. Мои сценарии используют объект окна DOM, но:

Полбартрум 26 января 2011 в 11:01

Нет извините!

Обе эти платформы основаны на существовании DOM браузера. По умолчанию Jurassic может запускать только "чистый javascript", как компилятор CoffeeScript.

В основном, если скрипт не ссылается на "документ" или "окно", он, вероятно, будет работать.

Другие вопросы по тегам