我正在尝试重新实现在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#应用程序中的步骤:
尝试通过 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无法转换为对象。
答案 0 :(得分:0)
在old Jurassic issues中找到答案。 我的脚本使用DOM窗口对象,但是:
<强> paulbartrum 2011年1月26日上午11:01
不,抱歉!
这两个框架都依赖于浏览器DOM的存在。通过 默认情况下,Jurassic只能像CoffeeScript一样运行“纯javascript” 编译器。
基本上如果脚本没有引用“文档”或“窗口”它 可能会奏效。