0

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

GET-request 返回数据,其中包含验证码 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. 尝试通过侏罗纪执行加载的脚本:

        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: window is not defined
    如果取消注释第 3 行engine.SetGlobalValue("window", answer.data),则会出现另一个错误:TypeError: undefined cannot be convert to an object

4

1 回答 1

0

在旧侏罗纪问题中找到了答案。我的脚本使用 DOM 窗口对象,但是:

回复 2011 年 1 月 26 日上午 11:01

不,对不起!

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

基本上,如果脚本不引用“文档”或“窗口”,它可能会起作用。

于 2017-05-15T18:13:32.550 回答