使用jurassic js代码进行评估,修改html

时间:2017-05-15 14:18:38

标签: javascript c# jurassic

我正在尝试重新实现在c#应用程序中获取验证码。有问题,因为没有JS的经验。

GET-request返回包含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. 通过WebClientJavaScriptSerializer向json加载数据和脚本。完成。结果存储在jsonobject answer 中,其中 answer.data 包含html, answer.e - 要执行的脚本。
  2. 尝试通过 Jurassic

    执行加载的脚本
        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 个答案:

答案 0 :(得分:0)

old Jurassic issues中找到答案。 我的脚本使用DOM窗口对象,但是:

<强> paulbartrum 2011年1月26日上午11:01

  

不,抱歉!

     

这两个框架都依赖于浏览器DOM的存在。通过   默认情况下,Jurassic只能像CoffeeScript一样运行“纯javascript”   编译器。

     

基本上如果脚本没有引用“文档”或“窗口”它   可能会奏效。