static void OriginalMain() { var done = false; var sw = new Stopwatch(); sw.Start(); for (var i = 0; i < N; i++) { var jintEngine = new Jint.Engine(); jintEngine.Execute(currentScript); done = jintEngine.GetValue("done").AsBoolean(); } sw.Stop(); Console.WriteLine("jint: " + sw.ElapsedMilliseconds / N + " - " + done); done = false; sw.Restart(); for (var i = 0; i < N; i++) { var ironjsEngine = new IronJS.Hosting.CSharp.Context(); ironjsEngine.Execute(currentScript); done = ironjsEngine.GetGlobalAs<bool>("done"); } sw.Stop(); Console.WriteLine("ironjs: " + sw.ElapsedMilliseconds / N + " - " + done); done = false; sw.Restart(); for (var i = 0; i < N; i++) { using (var jsNetEngine = new Noesis.Javascript.JavascriptContext()) { jsNetEngine.Run(currentScript); done = (bool)jsNetEngine.GetParameter("done"); } } sw.Stop(); Console.WriteLine("js.net: " + sw.ElapsedMilliseconds / N + " - " + done); done = false; sw.Restart(); for (var i = 0; i < N; i++) { var jurassicEngine = new Jurassic.ScriptEngine(); jurassicEngine.Execute(currentScript); done = jurassicEngine.GetGlobalValue<bool>("done"); } sw.Stop(); Console.WriteLine("jurassic: " + sw.ElapsedMilliseconds / N + " - " + done); done = false; sw.Restart(); for (var i = 0; i < N; i++) { using (var clearscriptV8 = new Microsoft.ClearScript.V8.V8ScriptEngine()) { clearscriptV8.Execute(currentScript); done = clearscriptV8.Script.done; } } sw.Stop(); Console.WriteLine("clearscriptV8: " + sw.ElapsedMilliseconds / N + " - " + done); done = false; sw.Restart(); using (var clearscriptV8 = new Microsoft.ClearScript.V8.V8Runtime()) { var compiled = clearscriptV8.Compile(currentScript); for (var i = 0; i < N; i++) { using (var engine = clearscriptV8.CreateScriptEngine()) { engine.Evaluate(compiled); done = engine.Script.done; } } } sw.Stop(); Console.WriteLine("clearscriptV8 compiled: " + sw.ElapsedMilliseconds / N + " - " + done); done = false; sw.Restart(); for (var i = 0; i < N; i++) { var nilcontext = new NiL.JS.Core.Context(); nilcontext.Eval(currentScript); done = (bool)nilcontext.GetVariable("done"); } sw.Stop(); Console.WriteLine("niljs: " + sw.ElapsedMilliseconds / N + " - " + done); Console.Read(); }
protected override bool InnerHasVariable(string variableName) { bool result = _jsEngine.HasGlobalValue(variableName); if (result) { object value = _jsEngine.GetGlobalValue(variableName); result = (value.ToString() != "undefined"); } return(result); }
protected override bool InnerHasVariable(string variableName) { bool result; lock (_executionSynchronizer) { result = _jsEngine.HasGlobalValue(variableName); if (result) { object value = _jsEngine.GetGlobalValue(variableName); result = value.ToString() != "undefined"; } } return(result); }
public object InstallBundle(Jurassic.ScriptEngine engine) { engine.Array.InstancePrototype.SetPropertyValue("last", new Sucralose.ArrayLastFunctionInstance(engine, engine.Object.InstancePrototype), false); engine.Number.InstancePrototype.SetPropertyValue("round", new Sucralose.RoundFunctionInstance(engine, engine.Object.InstancePrototype), false); engine.Number.InstancePrototype.SetPropertyValue("ceil", new Sucralose.CeilFunctionInstance(engine, engine.Object.InstancePrototype), false); engine.Number.InstancePrototype.SetPropertyValue("floor", new Sucralose.FloorFunctionInstance(engine, engine.Object.InstancePrototype), false); engine.Number.InstancePrototype.SetPropertyValue("toNumber", new Sucralose.NumberToNumberFunctionInstance(engine, engine.Object.InstancePrototype), false); engine.Object.SetPropertyValue("has", new Sucralose.HasFunctionInstance(engine, engine.Object.InstancePrototype), false); engine.Object.SetPropertyValue("merge", new Sucralose.MergeFunctionInstance(engine, engine.Object.InstancePrototype), false); engine.String.SetPropertyValue("format", new Sucralose.StringFormatFunctionInstance(engine, engine.Object.InstancePrototype), false); engine.String.InstancePrototype.SetPropertyValue("last", new Sucralose.StringLastFunctionInstance(engine, engine.Object.InstancePrototype), false); var json = engine.GetGlobalValue("JSON") as ObjectInstance; if (json == null) { throw new JavaScriptException(engine, "Error", "Unable to locate the JSON Object."); } json.SetPropertyValue("parse2", new Sucralose.Parse2FunctionInstance(engine, engine.Object.InstancePrototype), false); json.SetPropertyValue("stringify2", new Sucralose.Stringify2FunctionInstance(engine, engine.Object.InstancePrototype), false); return(Null.Value); }
public object InstallBundle(Jurassic.ScriptEngine engine) { var baristaInstance = engine.GetGlobalValue("barista") as BaristaGlobal; if (baristaInstance == null) { throw new InvalidOperationException("Barista Global bundle could not be obtained."); } var dependencyResultObj = engine.Object.Construct(); //Require all dependencies.. foreach (var dependency in m_dependencies) { var result = baristaInstance.Common.Require(dependency.Key, null); dependencyResultObj.SetPropertyValue(dependency.Value, result, false); } //If it's a function dependency, execute that. if (this.ScriptFunction != null) { var args = new List <object>(); if (this.ScriptFunction is UserDefinedFunction) { var udf = this.ScriptFunction as UserDefinedFunction; args.AddRange(udf.ArgumentNames.Select(argumentName => dependencyResultObj.HasProperty(argumentName) ? dependencyResultObj.GetPropertyValue(argumentName) : Null.Value)); } return(this.ScriptFunction.Call(engine.Global, args.ToArray())); } //Use the implemented "include" function to include the scripts. //this promotes loose coupling between the script bundle and the include. var variableNames = dependencyResultObj.Properties.Select(pn => pn.Name).ToArray(); var resultArray = engine.Array.Construct(); foreach (var scriptReference in m_scriptReferences) { //Create a new scope, and eval the script within the new scope. var scope = DeclarativeScope.CreateRuntimeScope(engine.CreateGlobalScope(), variableNames); foreach (var property in dependencyResultObj.Properties) { if (property.Value == Undefined.Value || property.Value == Null.Value || property.Value == null) { continue; } scope.SetValue(property.Name, property.Value); } var result = baristaInstance.Include(scriptReference, scope, engine.Global, engine.ForceStrictMode); ArrayInstance.Push(resultArray, result); } return(resultArray.Length == 1 ? resultArray[0] : resultArray); }
public bool Jurassic() { bool done = false; for (var i = 0; i < N; i++) { sharedJurassic.Execute(Script); done |= sharedJurassic.GetGlobalValue <bool>("done"); } return(done); }
public void EngineTest() { var engine = new Jurassic.ScriptEngine(); engine.SetGlobalValue("i", 1); engine.SetGlobalValue("i", 2); Assert.AreEqual(2, engine.GetGlobalValue("i")); engine.SetGlobalFunction("test", new Func<object, object, object, object, string>(Test)); Trace.WriteLine(engine.Evaluate<string>("test(1)")); Trace.WriteLine(engine.CallGlobalFunction<string>("test", new object[] { 1 })); Trace.WriteLine(engine.Array.Call(1, 2, 3).ElementValues.ToList()[2]); }
public void EngineTest() { var engine = new Jurassic.ScriptEngine(); engine.SetGlobalValue("i", 1); engine.SetGlobalValue("i", 2); Assert.AreEqual(2, engine.GetGlobalValue("i")); engine.SetGlobalFunction("test", new Func <object, object, object, object, string>(Test)); Trace.WriteLine(engine.Evaluate <string>("test(1)")); Trace.WriteLine(engine.CallGlobalFunction <string>("test", new object[] { 1 })); Trace.WriteLine(engine.Array.Call(1, 2, 3).ElementValues.ToList()[2]); }
public string GetCodeVersion() { try { var resultado = motorJS.GetGlobalValue <String>("VersionCode"); if (resultado == "undefined") { throw new Exception(); } else { return(resultado); } } catch (Exception) { return("NOT B SERIES COMPATIBLE"); } }
public CVG Process(CVG inputdata, object otherdata = null) { try { //HACK: this feels wrong if (!String.IsNullOrEmpty(CurrentState.Settings.Functions)) { _jsengine.Execute(CurrentState.Settings.Functions); } // Debug.WriteLine("Process();"); //INPUT HACKS // _jsengine.SetGlobalValue("gate_input", inputdata.Gate); // _jsengine.SetGlobalValue("cv_input", inputdata.CV); // _jsengine.SetGlobalValue("parameters_input", inputdata.Parameters); // _jsengine.Execute("var cvg_input = {}; cvg_input['Gate'] = gate_input;cvg_input['CV'] = cv_input;cvg_input['Parameters'] = parameters_input;"); //HACK: i hate this if (otherdata != null) { _jsengine.SetGlobalValue("otherdata_raw", Newtonsoft.Json.JsonConvert.SerializeObject(otherdata)); _jsengine.Execute("var otherdata = JSON.parse(otherdata_raw)"); } _jsengine.SetGlobalValue("cvg_input_raw", Newtonsoft.Json.JsonConvert.SerializeObject(inputdata)); _jsengine.Execute("var cvg_input = JSON.parse(cvg_input_raw)"); //TODO: this seems log winded _jsengine.Execute("var cvg_result = Process(cvg_input) "); //OUTPUT HACKS _jsengine.Execute("; if (cvg_result === undefined){ cvg_result = cvg_input}; var cvg_result_raw = JSON.stringify(cvg_result); "); // _jsengine.Execute(" var gate_result = cvg_result['Gate'] ;var cv_result = cvg_result['CV'] ;var parameters_result = cvg_result['Parameters'] ;"); //var gate_result = (Dictionary<string, List<bool>>)_jsengine.GetGlobalValue("gate_input"); //var cv_result = (Dictionary<string, List<short>>)_jsengine.GetGlobalValue("cv_result"); //var parameters_result = (Dictionary<string, List<short>>)_jsengine.GetGlobalValue("parameters_result"); //HACK: i hate this return(Newtonsoft.Json.JsonConvert.DeserializeObject <CVG>(_jsengine.GetGlobalValue <string>("cvg_result_raw"))); //return new CVG(gate_result, cv_result, parameters_result); }catch (Exception ex) { Debug.WriteLine(ex); } return(inputdata); }
public async static Task <string> GetCoinCheckupDataPath() { var Scraper = new ScrapingBrowser(); var js = new Jurassic.ScriptEngine(); Scraper.AllowAutoRedirect = true; Scraper.AllowMetaRedirect = true; var Page = await Scraper.NavigateToPageAsync(new Uri("https://coincheckup.com/analysis")); var RootScript = Page.Html.SelectSingleNode("//script[contains(text(), 'DATA_URI')]"); var x = js.Evaluate("window = {}"); var result = js.Evaluate(RootScript.InnerText); var root = js.GetGlobalValue <string>("DATA_URI"); return(root); }
public bool JurassicCompiled(Parameter parameter) { Jurassic.ScriptEngine engine = new Jurassic.ScriptEngine(); Jurassic.CompiledScript compiledScript = engine.Compile(new Jurassic.StringScriptSource("n = " + EXPRESSION)); List <int> results = new List <int>(parameter.Numbers.Length); foreach (int number in parameter.Numbers) { engine.SetGlobalValue("n", number); compiledScript.Execute(engine); int result = engine.GetGlobalValue <int>("n"); results.Add(result); } return(Assert(results, parameter.Sum)); }
private ResultPerPageFree InnerUserList(string token, int pageSize, int pageIndex) { var dic = new Dictionary <string, object> { { "t", "user/index" }, { "pagesize", pageSize }, { "pageidx", pageIndex }, { "type", "0" }, { "groupid", GroupId }, { "token", token }, { "lang", Language }, }; //var s = HttpHelper.GetString(DefaultUserListUrl, dic, _cc, null); var stream = HttpExtendedHelper.Get(DefaultUserListUrl, dic, _cc, null); var doc = new HtmlDocument(); doc.Load(stream, Encoding); var ss = doc.DocumentNode.SelectNodes("//script"); var se = new Jurassic.ScriptEngine(); foreach (var s in ss.Where(e => e.GetAttributeValue("src", string.Empty).Equals(string.Empty))) { try { se.Execute("if(typeof(wx)=='undefined') wx={}"); se.Execute(s.InnerText); } catch { // se.Execute("if(!wxwx.cgiData)delete wx"); } } var temp = se.GetGlobalValue("wx") as Jurassic.Library.ObjectInstance; var r = ResultPerPageFree.FromObjectInstance(temp.GetPropertyValue("cgiData") as ObjectInstance); return(r); }
public static HttpResponseMessage GetRequestedPage(WebProxy proxy, IShop shop, string url, CancellationToken token) { var initialUrl = new Uri(url); var host = new Uri(shop.WebsiteBaseUrl); var client = ClientFactory.GetProxiedFirefoxClient(); string initialPage = null; var message1 = new HttpRequestMessage() { Method = HttpMethod.Get, RequestUri = initialUrl }; message1.Headers.AddHeaders(ClientFactory.FireFoxHeaders); using (message1) { var task = client.SendAsync(message1); var result = task.Result; string pageSource = result.Content.ReadAsStringAsync().Result; if (!pageSource.Contains("s,t,o,p,b,r,e,a,k,i,n,g,f")) { result.EnsureSuccessStatusCode(); return(result); } initialPage = pageSource; result.Dispose(); } for (int i = 0; i < 3; i++) { var engine = new Jurassic.ScriptEngine(); engine.SetGlobalValue("interop", "15"); var pass = Regex.Match(initialPage, "name=\"pass\" value=\"(.*?)\"/>").Groups[1].Value; var answer = Regex.Match(initialPage, "name=\"jschl_vc\" value=\"(.*?)\"/>").Groups[1].Value; var script = Regex.Match(initialPage, "setTimeout\\(function\\(\\){(.*?)}, 4000\\);", RegexOptions.Singleline | RegexOptions.IgnoreCase).Groups[1].Value; script = script.Replace("a = document.getElementById('jschl-answer');", string.Empty); script = script.Replace("f.action += location.hash;", string.Empty); script = script.Replace("f.submit();", string.Empty); script = script.Replace("f = document.getElementById('challenge-form');", string.Empty); script = script.Replace("a.value", "interop"); script = script.Replace("t = document.createElement('div');", string.Empty); script = script.Replace("t.innerHTML=\"<a href='/'>x</a>\";", string.Empty); script = script.Replace("t = t.firstChild.href", $"t='{host.AbsoluteUri}';"); var gga = engine.Evaluate(script); var calc = engine.GetGlobalValue <string>("interop"); Task.Delay(5000, token).Wait(token); var uri = new Uri(host, $"/cdn-cgi/l/chk_jschl?jschl_vc={answer}&pass={pass}&jschl_answer={calc}"); var message3 = new HttpRequestMessage() { Method = HttpMethod.Get, RequestUri = uri, Headers = { Referrer = initialUrl } }; message3.Headers.AddHeaders(ClientFactory.FireFoxHeaders); using (message3) { var finalResult = client.SendAsync(message3, token).Result; string pageSource = finalResult.Content.ReadAsStringAsync().Result; if (!pageSource.Contains("s,t,o,p,b,r,e,a,k,i,n,g,f")) { finalResult.EnsureSuccessStatusCode(); return(finalResult); } finalResult.Dispose(); } } throw new WebException("Couldn't bypass cloudfare"); }
private ResultPerPage InnerUserList(string token, int pageSize, int pageIndex) { var dic = new Dictionary<string, object> { {"t", "user/index"}, {"pagesize", pageSize}, {"pageidx", pageIndex}, {"type", "0"}, {"groupid", GroupId}, {"token", token}, {"lang", Language}, }; //var s = HttpHelper.GetString(DefaultUserListUrl, dic, _cc, null); var stream = HttpHelper.Get(DefaultUserListUrl, dic, _cc, null); var doc = new HtmlDocument(); doc.Load(stream, Encoding); var ss = doc.DocumentNode.SelectNodes("//script"); var se = new Jurassic.ScriptEngine(); foreach (var s in ss.Where(e => e.GetAttributeValue("src", string.Empty).Equals(string.Empty))) { try { se.Execute(s.InnerText); } catch { } } var temp = se.GetGlobalValue("cgiData") as Jurassic.Library.ObjectInstance; var r = ResultPerPage.FromObjectInstance(temp); return r; }