我正在尝试重新实现在 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# 应用程序中的步骤:
- 通过WebClient和JavaScriptSerializer加载带有数据和脚本的 json 。完毕。结果存储在 jsonobject answer中,其中answer.data包含 html 和answer.e - 要执行的脚本。
尝试通过侏罗纪执行加载的脚本:
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。