public static string GetJsonValueForKey(string html, string key) { string value = string.Empty; try { // Getting json string from variable HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); doc.LoadHtml(html); var script = doc.DocumentNode.Descendants() .Where(n => n.Name == "script") .First().InnerText; // Return the data of spect and stringify it into a proper JSON object var engine = new Jurassic.ScriptEngine(); var result = engine.Evaluate("(function() { " + script + " return gm_init_vars; })()"); var json = JSONObject.Stringify(engine, result); // Json parsing value = GetJsonObjectValue(json, key); } catch (Exception ex) { ex.ToString(); throw; } return(value); }
private void Init() { var BaiduEncoderResourceBase64 = File.ReadAllText(_ResourceFilePath); bool IsHashCorrect = false; using (SHA256 sha256Hash = SHA256.Create()) { IsHashCorrect = Helper.VerifyHash(sha256Hash, BaiduEncoderResourceBase64, savedHash); } if (!IsHashCorrect) { return; } try { string BaiduEncoderJS = Helper.Base64Decode(BaiduEncoderResourceBase64); _BaiduEncoderEngine = new Jurassic.ScriptEngine(); _BaiduEncoderEngine.Evaluate(BaiduEncoderJS); } catch (Exception e) { _Logger?.WriteLog(e.ToString()); _IsAvaliable = false; return; } _IsAvaliable = true; }
private decimal CalTotal(int grade, List <StudentScore> scores) { if (UserSettings.Current != null) { try { var func = UserSettings.Current.GetTotalExpression(grade); if (!string.IsNullOrEmpty(func)) { func = Extra(func, scores, "0"); } if (!string.IsNullOrEmpty(func)) { if (_JS == null) { _JS = new Jurassic.ScriptEngine(); } object temp = _JS.Evaluate(func); return(Math.Round(Convert.ToDecimal(temp), 1)); } } catch (Exception ex) { LJH.GeneralLibrary.ExceptionHandling.ExceptionPolicy.HandleException(ex); } } return(0); }
protected override void Initialize() { timers = new TimerManager(); js = new Jurassic.ScriptEngine(); js.SetGlobalFunction("setTimeout", new Action <Jurassic.Library.FunctionInstance, int>(setTimeout)); js.SetGlobalFunction("setInterval", new Action <Jurassic.Library.FunctionInstance, int>(setInterval)); js.SetGlobalFunction("clearTimeout", new Action <int>(clearTimeout)); js.SetGlobalFunction("clearInterval", new Action <int>(clearInterval)); js.SetGlobalValue("window", js.Global); js.SetGlobalValue("console", new JSConsole(js)); js.SetGlobalValue("Canvas", new JSCanvasConstructor(js)); js.SetGlobalValue("Image", new JSImageConstructor(js)); #if !XBOX if (GenerateAndExit != null) { GenerateAssemblyAndExit(GenerateAndExit); return; } #endif #if XBOX || RELEASE // On the XBOX or RELEASE config, run the compiled JavaScript from the Assembly js.LoadFromAssembly("ImpactGame"); Generated.Main(js, js.CreateGlobalScope(), js.Global); #else // In Windows/DEBUG, run JavaScript directly from source js.EnableDebugging = true; js.Evaluate(new Jurassic.FileScriptSource("Game/index.js")); #endif base.Initialize(); }
protected override object InnerEvaluate(string expression, string documentName) { object result; string uniqueDocumentName = GetUniqueDocumentName(documentName, false); lock (_executionSynchronizer) { try { var source = new OriginalStringScriptSource(expression, uniqueDocumentName); result = _jsEngine.Evaluate(source); } catch (OriginalJsException e) { throw ConvertJavascriptExceptionToJsRuntimeException(e); } catch (NotImplementedException e) { throw new JsRuntimeException(e.Message, e); } } result = MapToHostType(result); return(result); }
private void Init() { var PapagoEncoderResource = File.ReadAllText(ResourceFilePath); bool IsHashCorrect = false; using (SHA256 sha256Hash = SHA256.Create()) { IsHashCorrect = Helper.VerifyHash(sha256Hash, PapagoEncoderResource, savedHash); } if (!IsHashCorrect) { return; } try { string PapagoEncoderResourceDecrypted = StringCipher.Decrypt(PapagoEncoderResource, password); string PapagoEncoderJS = Helper.Base64Decode(PapagoEncoderResourceDecrypted); PapgoEncoderEngine = new Jurassic.ScriptEngine(); PapgoEncoderEngine.Evaluate(PapagoEncoderJS); } catch (Exception e) { _Logger?.WriteLog(e.ToString()); _IsAvaliable = false; return; } _IsAvaliable = true; }
public static object Evaluate(string script) { object result; if (Engine == JSEngine.JScript) { if (jscriptEngine == null) { jscriptEngine = ActiveScriptEngine.FromLanguage(ScriptLanguage.JScript); } result = jscriptEngine.Evaluate(script); if (result == DBNull.Value) { result = Jurassic.Null.Value; } else if (result == null) { result = Jurassic.Undefined.Value; } } else { InitializeJurassic(); result = jurassicScriptEngine.Evaluate(script); } return(result); }
protected override void Decrypt(string content, out string[] links, out string password) { links = null; password = null; // unescape content content = Regex.Unescape(content); // get encrypted data Regex rgxData = new Regex("crypted=(.*?)(&|$)"); String data = rgxData.Match(content).Groups[1].ToString(); // get encrypted pass Regex rgxKey = new Regex("jk=(.*?){(.*?)}(;|&|$)"); String key = rgxKey.Match(content).Groups[2].ToString(); // get archive password Regex rgxPass = new Regex("passwords=(.*?)(&|$)"); password = rgxPass.Match(content).Groups[1].ToString(); var jsEngine = new Jurassic.ScriptEngine(); key = jsEngine.Evaluate("(function (){" + key + "})()").ToString(); // decode key key = key.ToUpper(); String decKey = ""; for (int i = 0; i < key.Length; i += 2) { decKey += (char)Convert.ToUInt16(key.Substring(i, 2), 16); } // decode data byte[] dataByte = Convert.FromBase64String(data); // decrypt that shit! RijndaelManaged rDel = new RijndaelManaged(); System.Text.ASCIIEncoding aEc = new System.Text.ASCIIEncoding(); rDel.Key = aEc.GetBytes(decKey); rDel.IV = aEc.GetBytes(decKey); rDel.Mode = CipherMode.CBC; rDel.Padding = PaddingMode.None; ICryptoTransform cTransform = rDel.CreateDecryptor(); byte[] resultArray = cTransform.TransformFinalBlock(dataByte, 0, dataByte.Length); String rawLinks = aEc.GetString(resultArray); // replace empty paddings Regex rgx = new Regex("\u0000+$"); String cleanLinks = rgx.Replace(rawLinks, ""); // replace newlines rgx = new Regex("\n+"); cleanLinks = rgx.Replace(cleanLinks, "\r\n"); links = cleanLinks.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); }
protected override Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { var task = base.SendAsync(request, cancellationToken); var response = task.Result; if (base.CookieContainer.GetCookieHeader(request.RequestUri).Contains("cf_clearance")) { return(task); } IEnumerable <string> values; if (response.Headers.TryGetValues("refresh", out values) && values.FirstOrDefault().Contains("URL=/cdn-cgi/") && response.Headers.Server.ToString() == "cloudflare-nginx") { Console.WriteLine("Solving cloudflare challenge . . . "); string content = response.Content.ReadAsStringAsync().Result; var htmlDocument = new HtmlDocument(); htmlDocument.LoadHtml(content); var jschl_vc = htmlDocument.DocumentNode.SelectSingleNode(@".//input[@name=""jschl_vc""]").Attributes["value"].Value; var pass = htmlDocument.DocumentNode.SelectSingleNode(@".//input[@name=""pass""]").Attributes["value"].Value; var script = htmlDocument.DocumentNode.SelectSingleNode(@".//script").InnerText; var regex = new string[3] { @"setTimeout\(function\(\){(.+)},\s*\d*\s*\)\s*;", @"^\n*\s*(var\s+.*?;)", @"(?<=\s+;)(.+t.length;)" }; string function, vars, calc; function = Regex.Match(script, regex[0], RegexOptions.Singleline).Value; vars = Regex.Match(function, regex[1], RegexOptions.Multiline).Value; calc = Regex.Match(function, regex[2], RegexOptions.Singleline).Value .Replace("a.value", "var result") .Replace("t.length", (request.RequestUri.Host.Length).ToString());; var engine = new Jurassic.ScriptEngine(); object result = engine.Evaluate("function getAnswer() {" + vars + calc + "return result;" + "} getAnswer();"); Thread.Sleep(5000); var requestUri = request.RequestUri; request.RequestUri = new Uri(requestUri, String.Format("cdn-cgi/l/chk_jschl?jschl_vc={0}&pass={1}&jschl_answer={2}", jschl_vc, pass, result.ToString())); base.SendAsync(request, cancellationToken).Wait(); request.RequestUri = requestUri; return(base.SendAsync(request, cancellationToken)); } return(task); }
public void PreevaluateStaticMethod() { var expression = Expression(model => GetText()); var script = Translate(expression); var engine = new Jurassic.ScriptEngine(); var result = engine.Evaluate($"({script})()"); Assert.AreEqual("Text", result); }
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); }
static void Main(string[] args) { var eng = new Jurassic.ScriptEngine(); eng.Evaluate("function text(){return JSON.stringify( {'a':10,'b':20});}"); var rs = eng.CallGlobalFunction <string>("text"); //var model = Util.SerializerJsonOrEntity.GetObject<model>(rs); //Console.WriteLine(model.a); Console.Read(); }
public T Evaluate <T>(string script, params object[] parameters) { var engine = new Jurassic.ScriptEngine(); int i = 0; foreach (var p in parameters) { engine.SetGlobalValue("parameter" + i, p); i++; } return(engine.Evaluate <T>(script)); }
private T Evaluate <T>(Jurassic.ScriptEngine engine, string script) { try { return(engine.Evaluate <T>(script)); } catch (Exception e) { this._log.Error("脚本解析异常", e); throw new Exception("脚本解析异常:" + e.Message); } }
static object EvalJScript(string jScript, params string[] dependencies) { var engine = new Jurassic.ScriptEngine(); var scriptWithDependencies = string.Join("\r\n\r\n", dependencies) + "\r\n" + jScript; object result = null; try { var evalJScript = engine.Evaluate(scriptWithDependencies); if (evalJScript is Jurassic.Library.UserDefinedFunction) { engine.Execute(scriptWithDependencies); return engine.Evaluate("out()"); } return evalJScript; } catch (Exception ex) { throw new InvalidJavascriptException(jScript, ex); } return result; }
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 Jurassic.ScriptEngine Debug() { Jurassic.ScriptEngine engine = new Jurassic.ScriptEngine(); foreach (string item in Directory.GetFiles(TemplateFolder, "*.js")) { engine.Evaluate(new Jurassic.FileScriptSource(item)); } DatabaseJson = Newtonsoft.Json.JsonConvert.SerializeObject(Database, Newtonsoft.Json.Formatting.Indented, new Newtonsoft.Json.Converters.StringEnumConverter()); SettingJson = Newtonsoft.Json.JsonConvert.SerializeObject(Settings, Newtonsoft.Json.Formatting.Indented); return(engine); }
private void Init() { try { var YandexEncoderResource = File.ReadAllText(_ResourceFilePath); var YandexAuthResource = File.ReadAllText(_AccountsFilePath); bool IsHashCorrect = false; using (SHA256 sha256Hash = SHA256.Create()) { IsHashCorrect = Helper.VerifyHash(sha256Hash, YandexEncoderResource, _EncoderHash); IsHashCorrect = IsHashCorrect && Helper.VerifyHash(sha256Hash, YandexAuthResource, _AuthHash); } if (!IsHashCorrect) { return; } string YandexEncoderResourceDecrypted = StringCipher.Decrypt(YandexEncoderResource, _Password); string YandexEncoderJS = Helper.Base64Decode(YandexEncoderResourceDecrypted); _YandexEncoderEngine = new Jurassic.ScriptEngine(); _YandexEncoderEngine.Evaluate(YandexEncoderJS); string yandexAuthResourceDecrypted = StringCipher.Decrypt(YandexAuthResource, _Password); string yandexAuthJson = Helper.Base64Decode(yandexAuthResourceDecrypted); var yandexAccs = JsonConvert.DeserializeObject <List <YandexAuthContainer> >(yandexAuthJson); List <YandexSession> sessions = new List <YandexSession>(); foreach (var acc in yandexAccs) { sessions.Add(new YandexSession(acc, _Logger)); } _YandexSessions = sessions.Shuffle(); _IsAvaliable = true; } catch (Exception e) { _Logger?.WriteLog(e.ToString()); _IsAvaliable = false; return; } }
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 bool Jurassic(Parameter parameter) { Jurassic.ScriptEngine engine = new Jurassic.ScriptEngine(); List <int> results = new List <int>(parameter.Statements.Length); foreach (string statement in parameter.Statements) { int result = engine.Evaluate <int>(statement); results.Add(result); } return(Assert(results, parameter.Sum)); }
public string UseJurassic(List <string> Parameters) { int a; int b; int.TryParse(Parameters[0], out a); int.TryParse(Parameters[1], out b); var engine = new Jurassic.ScriptEngine(); engine.Evaluate("function test(a, b) { return a + b }"); var ret = engine.CallGlobalFunction <int>("test", a, b); return(ret.ToString()); }
public bool Jurassic(Parameter parameter) { Jurassic.ScriptEngine engine = new Jurassic.ScriptEngine(); List <int> results = new List <int>(parameter.Numbers.Length); foreach (int number in parameter.Numbers) { engine.SetGlobalValue("n", number); int result = engine.Evaluate <int>(EXPRESSION); results.Add(result); } return(Assert(results, parameter.Sum)); }
public bool Jurassic(Parameter parameter) { Jurassic.ScriptEngine engine = new Jurassic.ScriptEngine(); //engine.EnableExposedClrTypes = true; engine.SetGlobalValue("n", engine.Array.New(parameter.Numbers.Cast <object>().ToArray())); List <int> results = new List <int>(parameter.Numbers.Length); foreach (int number in parameter.Numbers) { int result = engine.Evaluate <int>(parameter.Statements[number]); results.Add(result); } return(Assert(results, parameter.Sum)); }
protected override object InnerEvaluate(string expression) { object result; try { result = _jsEngine.Evaluate(expression); } catch (OriginalJsException e) { throw ConvertJavascriptExceptionToJsRuntimeException(e); } result = MapToHostType(result); return(result); }
private void list() { try { txtPageNow.Text = pageNow.ToString(); string start = pageNow > 1 ? ((pageNow - 1) * interval).ToString() : "0"; string url = getUrl(curcol, start); string s; using (System.Net.WebClient wc = new System.Net.WebClient()) { Byte[] pageData = wc.DownloadData(url); s = System.Text.Encoding.GetEncoding("GBK").GetString(pageData); //Stream stream = new System.IO.MemoryStream(Encoding.Convert(Encoding.GetEncoding("GBK"), Encoding.UTF8, pageData)); //s = System.Text.Encoding.UTF8.GetString(pageData);去除中文乱码 s += @" function getstring(){ var s=serv_loadColumnNews(); return JSON.stringify(s); } "; var eng = new Jurassic.ScriptEngine(); eng.Evaluate(s); var b = eng.CallGlobalFunction <string>(@"getstring"); m = JsonConvert.DeserializeObject <oainfo>(b); } pagesAll = m.total / interval + (m.total % interval == 0 ? 0 : 1); labPageAll.Text = pagesAll.ToString(); listDoc.Items.Clear(); foreach (var v in m.informations) { ListViewItem lvi = new ListViewItem(); lvi = listDoc.Items.Add(v.id); lvi.SubItems.Add(v.bt); lvi.SubItems.Add(v.time); lvi.SubItems.Add(v.mc); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private static void StartSpider(Options param) { ScriptProcessor pageProcessor = ScriptProcessorBuilder.Custom().Language(param.Lang).ScriptFromFile(param.File).Thread(param.Thread).Build(); pageProcessor.Site.SleepTime = param.Sleep; pageProcessor.Site.RetryTimes = 3; pageProcessor.Site.AcceptStatCode = new HashSet <int> { 200, 404, 403, 500, 502 }; Core.Spider spider = Core.Spider.Create(pageProcessor).SetThreadNum(param.Thread); spider.ClearPipeline(); StringBuilder builder = new StringBuilder(); using (StreamReader sr = new StreamReader(typeof(ScriptConsole).Assembly.GetManifestResourceStream("Java2Dotnet.Spider.Scripts.Resource.js.define.js"))) { string line; while ((line = sr.ReadLine()) != null) { builder.AppendLine(line); } } string script = builder + Environment.NewLine + File.ReadAllText(param.File); Jurassic.ScriptEngine engine = new Jurassic.ScriptEngine { EnableExposedClrTypes = true }; //engine.SetGlobalValue("page", new Page()); engine.SetGlobalValue("config", new Site()); engine.Evaluate(script); foreach (string url in param.Urls) { spider.AddUrl(url); } spider.Run(); }
protected override object InnerEvaluate(string expression, string documentName) { object result; string uniqueDocumentName = GetUniqueDocumentName(documentName, false); lock (_executionSynchronizer) { try { var source = new OriginalStringScriptSource(expression, uniqueDocumentName); result = _jsEngine.Evaluate(source); } catch (OriginalJavaScriptException e) { throw WrapJavaScriptException(e); } } result = MapToHostType(result); return(result); }
public static string analysis(string s) { var engine = new Jurassic.ScriptEngine(); engine.Evaluate(@"var _0x37e6 = ['\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2B\x2F\x3D', '', '\x73\x75\x62\x73\x74\x72', '\x63\x68\x61\x72\x41\x74', '\x69\x6E\x64\x65\x78\x4F\x66', '\x66\x72\x6F\x6D\x43\x68\x61\x72\x43\x6F\x64\x65', '\x6C\x65\x6E\x67\x74\x68', '\x6A\x6F\x69\x6E', '\x63\x68\x61\x72\x43\x6F\x64\x65\x41\x74']; function jj(_0x79b1x2) { var _0x79b1x3 = _0x37e6[0]; var _0x79b1x4, _0x79b1x5, _0x79b1x6, _0x79b1x7, _0x79b1x8, _0x79b1x9, _0x79b1xa, _0x79b1xb, _0x79b1xc = 0, _0x79b1xd = 0, _0x79b1xe = _0x37e6[1], _0x79b1xf = []; if (!_0x79b1x2) { return _0x79b1x2; }; _0x79b1x2 = _0x79b1x2[_0x37e6[2]](2); _0x79b1x2 += _0x37e6[1]; do { _0x79b1x7 = _0x79b1x3[_0x37e6[4]](_0x79b1x2[_0x37e6[3]](_0x79b1xc++)); _0x79b1x8 = _0x79b1x3[_0x37e6[4]](_0x79b1x2[_0x37e6[3]](_0x79b1xc++)); _0x79b1x9 = _0x79b1x3[_0x37e6[4]](_0x79b1x2[_0x37e6[3]](_0x79b1xc++)); _0x79b1xa = _0x79b1x3[_0x37e6[4]](_0x79b1x2[_0x37e6[3]](_0x79b1xc++)); _0x79b1xb = _0x79b1x7 << 18 | _0x79b1x8 << 12 | _0x79b1x9 << 6 | _0x79b1xa; _0x79b1x4 = _0x79b1xb >> 16 & 0xff; _0x79b1x5 = _0x79b1xb >> 8 & 0xff; _0x79b1x6 = _0x79b1xb & 0xff; if (_0x79b1x9 == 64) { _0x79b1xf[_0x79b1xd++] = String[_0x37e6[5]](_0x79b1x4); } else { if (_0x79b1xa == 64) { _0x79b1xf[_0x79b1xd++] = String[_0x37e6[5]](_0x79b1x4, _0x79b1x5); } else { _0x79b1xf[_0x79b1xd++] = String[_0x37e6[5]](_0x79b1x4, _0x79b1x5, _0x79b1x6); }; }; } while ( _0x79b1xc < _0x79b1x2 [ _0x37e6 [ 6 ]]);; _0x79b1xe = _0x79b1xf[_0x37e6[7]](_0x37e6[1]); return utf8d(_0x79b1xe); }; function utf8d(_0x79b1x11) { var _0x79b1x12 = _0x37e6[1], _0x79b1xc = 0, _0x79b1x13 = c1 = c2 = 0; while (_0x79b1xc < _0x79b1x11[_0x37e6[6]]) { _0x79b1x13 = _0x79b1x11[_0x37e6[8]](_0x79b1xc); if (_0x79b1x13 < 128) { _0x79b1x12 += String[_0x37e6[5]](_0x79b1x13); _0x79b1xc++; } else { if ((_0x79b1x13 > 191) && (_0x79b1x13 < 224)) { c2 = _0x79b1x11[_0x37e6[8]](_0x79b1xc + 1); _0x79b1x12 += String[_0x37e6[5]](((_0x79b1x13 & 31) << 6) | (c2 & 63)); _0x79b1xc += 2; } else { c2 = _0x79b1x11[_0x37e6[8]](_0x79b1xc + 1); c3 = _0x79b1x11[_0x37e6[8]](_0x79b1xc + 2); _0x79b1x12 += String[_0x37e6[5]](((_0x79b1x13 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); _0x79b1xc += 3; }; }; }; return _0x79b1x12; };"); string res = engine.CallGlobalFunction <string>("jj", s); //Regex r2 = new Regex(@"Vídeo Id: .*<br>Sìze:"); //Item.id = r2.Matches(res)[0].Value.Split(new string[] { "Vídeo Id: ", "<br>Sìze:" }, StringSplitOptions.RemoveEmptyEntries)[0]; //Item.id = "<a>" + Item.torrent.Replace(">", "/>")+"</a>"; //XmlDocument xmlDoc = new XmlDocument(); //xmlDoc.LoadXml(Item.id); //string id=""; //foreach (XmlNode x in xmlDoc.GetElementsByTagName("a")[0].ChildNodes) //{ // string key = x.Attributes["style"].Value; // key = key.Substring(0, key.IndexOf(";") + 1); // key = dictionary[key]; // id += key; //} res = res.Replace(">", "/>"); Regex r1 = new Regex("<img src=\".*?px;\"/>"); MatchCollection mc = r1.Matches(res); foreach (Match m in mc) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(m.ToString()); string key = xmlDoc.GetElementsByTagName("img")[0].Attributes["style"].Value; key = key.Substring(0, key.IndexOf(";")); string cha = dictionary[key]; res = res.Replace(m.ToString(), cha); } Item.info = res; Regex r2 = new Regex("Vídeo Id: .*?<br/>"); Item.id = r2.Matches(res)[0].ToString().Split(new string[] { "Vídeo Id: ", "<br/>" }, StringSplitOptions.RemoveEmptyEntries)[0]; return(Item.id); }
public static object Evaluate(string script) { InitializeJurassic(); return(jurassicScriptEngine.Evaluate(script)); }
private void list() { try { txtPageNow.Text = pageNow.ToString(); string start = pageNow > 1 ? ((pageNow - 1) * interval).ToString() : "0"; string url = getUrl(curcol, start); string s; using (System.Net.WebClient wc = new System.Net.WebClient()) { Byte[] pageData = wc.DownloadData(url); s = System.Text.Encoding.GetEncoding("GBK").GetString(pageData); //Stream stream = new System.IO.MemoryStream(Encoding.Convert(Encoding.GetEncoding("GBK"), Encoding.UTF8, pageData)); //s = System.Text.Encoding.UTF8.GetString(pageData);去除中文乱码 s += @" function getstring(){ var s=serv_loadColumnNews(); return JSON.stringify(s); } "; var eng = new Jurassic.ScriptEngine(); eng.Evaluate(s); var b = eng.CallGlobalFunction<string>(@"getstring"); m = JsonConvert.DeserializeObject<oainfo>(b); } pagesAll = m.total / interval + (m.total % interval == 0 ? 0 : 1); labPageAll.Text = pagesAll.ToString(); listDoc.Items.Clear(); foreach (var v in m.informations) { ListViewItem lvi = new ListViewItem(); lvi = listDoc.Items.Add(v.id); lvi.SubItems.Add(v.bt); lvi.SubItems.Add(v.time); lvi.SubItems.Add(v.mc); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }
protected void ProcessRequest(HttpListenerContext context) { Debug.WriteLine(context.Request.RawUrl); // build response data HttpListenerResponse response = context.Response; string responseString = ""; response.StatusCode = 200; response.Headers.Add("Content-Type: text/html"); // crossdomain.xml if (context.Request.RawUrl == "/crossdomain.xml") { responseString = "<?xml version=\"1.0\"?>" + "<!DOCTYPE cross-domain-policy SYSTEM \"http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd\">" + "<cross-domain-policy>" + "<allow-access-from domain=\"*\" />" + "</cross-domain-policy>"; } else if( context.Request.RawUrl == "/jdcheck.js" ) { responseString = "jdownloader=true; var version='18507';"; } else if (context.Request.RawUrl.StartsWith("/flash")) { if (context.Request.RawUrl.Contains("addcrypted2")) { System.IO.Stream body = context.Request.InputStream; System.IO.StreamReader reader = new System.IO.StreamReader(body, context.Request.ContentEncoding); String requestBody = System.Web.HttpUtility.UrlDecode(reader.ReadToEnd()); // get encrypted data Regex rgxData = new Regex("crypted=(.*?)(&|$)"); String data = rgxData.Match(requestBody).Groups[1].ToString(); // get encrypted pass Regex rgxPass = new Regex("jk=(.*?){(.*?)}(&|$)"); String pass = rgxPass.Match(requestBody).Groups[2].ToString(); var jsEngine = new Jurassic.ScriptEngine(); pass = jsEngine.Evaluate("(function (){" + pass + "})()").ToString(); // show decrypted links Dispatcher.BeginInvoke( new Action<Object>((sender) => { showDecryptedLinks(pass,data); }) , new object[] { this } ); responseString = "success\r\n"; } else { responseString = "JDownloader"; } } else { response.StatusCode = 400; } byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString); response.ContentLength64 = buffer.Length; // output response System.IO.Stream output = response.OutputStream; output.Write(buffer, 0, buffer.Length); output.Close(); }
private static void StartSpider(Options param) { ScriptProcessor pageProcessor = ScriptProcessorBuilder.Custom().Language(param.Lang).ScriptFromFile(param.File).Thread(param.Thread).Build(); pageProcessor.Site.SleepTime = param.Sleep; pageProcessor.Site.RetryTimes = 3; pageProcessor.Site.AcceptStatCode=new HashSet<int> { 200, 404, 403, 500, 502 }; Core.Spider spider = Core.Spider.Create(pageProcessor).SetThreadNum(param.Thread); spider.ClearPipeline(); StringBuilder builder = new StringBuilder(); using (StreamReader sr = new StreamReader(typeof(ScriptConsole).Assembly.GetManifestResourceStream("Java2Dotnet.Spider.Scripts.Resource.js.define.js"))) { string line; while ((line = sr.ReadLine()) != null) { builder.AppendLine(line); } } string script = builder + Environment.NewLine + File.ReadAllText(param.File); Jurassic.ScriptEngine engine = new Jurassic.ScriptEngine { EnableExposedClrTypes = true }; //engine.SetGlobalValue("page", new Page()); engine.SetGlobalValue("config", new Site()); engine.Evaluate(script); foreach (string url in param.Urls) { spider.AddUrl(url); } spider.Run(); }
private string EvalJs(string js) { var engine = new Jurassic.ScriptEngine(); return(engine.Evaluate(js).ToString()); }
/// <summary> /// 进行打卡 /// </summary> /// <returns></returns> public bool Do() { GlobalVars.log.Info("正在进行打卡"); FrmMain.statusHandler?.Invoke(null, new Msg("正在进行打卡")); // 先GET一下BASE,获取到WID、UID以及历史打卡数据 HttpClientHandler handler = new HttpClientHandler { CookieContainer = this.cookie, UseCookies = true }; HttpClient client = new HttpClient(handler); client.Timeout = TimeSpan.FromSeconds(60); client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36"); HttpResponseMessage res; try { res = client.GetAsync(IsBachelor ? BASE_BC : BASE).Result; } catch (AggregateException e) { GlobalVars.log.Error($"打卡凭据获取失败,请检查网络链接,详细信息:{e.Message}"); FrmMain.statusHandler?.Invoke(null, new Msg("打卡凭据获取失败,请检查网络链接")); return(false); } // 把结果加载成HAP文档 HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); doc.LoadHtml(res.Content.ReadAsStringAsync().Result); var scripts = doc.DocumentNode.Descendants() .Where(n => n.Name == "script"); string fullScript = ""; foreach (var t in scripts) { if (t.InnerHtml.Length > 0) { fullScript = t.InnerHtml; break; } } // 解析WID和UID object result; string wid, uid; string[] fullScriptLines = fullScript.Split('\n'); var engine = new Jurassic.ScriptEngine(); try { result = engine.Evaluate("(function() { " + fullScriptLines[WIDLine] + "\n return _selfFormWid; })()"); wid = result.ToString(); result = engine.Evaluate("(function() { " + fullScriptLines[UIDLine] + "\n return _userId; })()"); uid = result.ToString(); // 检查uid是否合理 long.Parse(uid); } catch (IndexOutOfRangeException e) { GlobalVars.log.Error($"解析WID和UID失败,错误类型1,详细信息:{e.Message}"); FrmMain.statusHandler?.Invoke(null, new Msg("解析WID和UID失败")); return(false); } catch (Jurassic.JavaScriptException e) { GlobalVars.log.Error($"解析WID和UID失败,错误类型2,详细信息:{e.Message}"); FrmMain.statusHandler?.Invoke(null, new Msg("解析WID和UID失败")); return(false); } catch (Exception e) { GlobalVars.log.Error($"解析WID和UID失败,错误类型3,详细信息:{e.Message}"); FrmMain.statusHandler?.Invoke(null, new Msg("解析WID和UID失败")); return(false); } // 计算得到真正的API接口 string realAPI = API + $"?wid={wid}&userId={uid}"; // 取得往日填报信息 StringBuilder sb = new StringBuilder(); try { for (int i = FillBeginLine; i <= FillEndLine; i++) { sb.Append(fullScriptLines[i]).Append("\n"); } } catch (IndexOutOfRangeException e) { GlobalVars.log.Error($"解析历史打卡数据失败,详细信息:{e.Message}"); FrmMain.statusHandler?.Invoke(null, new Msg("解析历史打卡数据失败")); return(false); } // 生成打卡信息 BachelorCheckinData bachelorCheckinData = default(BachelorCheckinData); CheckinData checkinData = default(CheckinData); try { // 序列化填报信息 result = engine.Evaluate("(function() { " + sb.ToString() + " return fillDetail; })()"); string json = JSONObject.Stringify(engine, result); dynamic fillDatas; // 将填报信息转换成打卡信息 if (IsBachelor) { fillDatas = JsonConvert.DeserializeObject <List <BachelorFillData> >(json); bachelorCheckinData = Utils.ChangeType <BachelorFillData, BachelorCheckinData>(fillDatas[0]); } else { fillDatas = JsonConvert.DeserializeObject <List <FillData> >(json); checkinData = Utils.ChangeType <FillData, CheckinData>(fillDatas[0]); } } catch (Exception e) { GlobalVars.log.Error($"序列化历史打卡数据失败,详细信息:{e.Message}"); FrmMain.statusHandler?.Invoke(null, new Msg("序列化历史打卡数据失败")); return(false); } // 赋值打卡数据的最后一项 var now = DateTime.Now; var nvc = new List <KeyValuePair <string, string> >(); if (IsBachelor) { bachelorCheckinData.DATETIME_CYCLE = now.ToString("yyyy/MM/dd"); nvc = Utils.ConvertToKeyValuePairs <BachelorCheckinData>(bachelorCheckinData); } else { checkinData.DATETIME_CYCLE = now.ToString("yyyy/MM/dd"); nvc = Utils.ConvertToKeyValuePairs <CheckinData>(checkinData); } // 打卡 var req = new HttpRequestMessage(HttpMethod.Post, realAPI) { Content = new FormUrlEncodedContent(nvc) }; try { res = client.SendAsync(req).Result; } catch (AggregateException e) { GlobalVars.log.Error($"传输打卡数据失败,请检查网络连接,详细信息:{e.Message}"); FrmMain.statusHandler?.Invoke(null, new Msg("打卡失败,请检查网络链接")); return(false); } if (res.StatusCode == HttpStatusCode.OK) { GlobalVars.log.Info("打卡成功!"); FrmMain.statusHandler?.Invoke(null, new Msg("打卡成功!")); return(true); } else { GlobalVars.log.Error($"打卡失败!服务器返回代码:{res.StatusCode}"); FrmMain.statusHandler?.Invoke(null, new Msg("打卡失败,未知原因")); return(false); } }
int BuildWordXmlTableLine(PrintOption option, List<ListViewItem> items, int nIndex, XmlTextWriter writer, bool bCutText) { string strError = ""; int nRet = 0; if (nIndex >= items.Count) { strError = "error: nIndex(" + nIndex.ToString() + ") >= items.Count(" + items.Count.ToString() + ")"; goto ERROR1; } ListViewItem item = items[nIndex]; string strMARC = ""; string strOutMarcSyntax = ""; if (this.MarcFilter != null || option.HasEvalue() == true) { // TODO: 有错误要明显报出来,否则容易在打印出来后才发现,就晚了 // 获得MARC格式书目记录 string strBiblioRecPath = ListViewUtil.GetItemText(item, COLUMN_BIBLIORECPATH); nRet = GetMarc(strBiblioRecPath, out strMARC, out strOutMarcSyntax, out strError); if (nRet == -1) goto ERROR1; if (this.MarcFilter != null) { this.ColumnTable.Clear(); // 清除上一记录处理时残余的内容 this.MarcFilter.Host.UiItem = item; // 当前正在处理的 ListViewItem // 触发filter中的Record相关动作 nRet = this.MarcFilter.DoRecord( null, strMARC, strOutMarcSyntax, nIndex, out strError); if (nRet == -1) goto ERROR1; } } // <w:tr> writer.WriteStartElement("w", "tr", m_strWordMlNsUri); for (int i = 0; i < option.Columns.Count; i++) { Column column = option.Columns[i]; // int nIndex = nPage * option.LinesPerPage + nLine; /* if (nIndex >= items.Count) break; ListViewItem item = items[nIndex]; * */ string strContent = ""; if (string.IsNullOrEmpty(column.Evalue) == false) { Jurassic.ScriptEngine engine = new Jurassic.ScriptEngine(); engine.EnableExposedClrTypes = true; engine.SetGlobalValue("syntax", strOutMarcSyntax); engine.SetGlobalValue("biblio", new MarcRecord(strMARC)); strContent = engine.Evaluate(column.Evalue).ToString(); } else { strContent = GetColumnContent(item, column.Name); if (strContent == "!!!#") { // strContent = ((nPage * option.LinesPerPage) + nLine + 1).ToString(); strContent = (nIndex + 1).ToString(); } if (strContent == "!!!biblioPrice") { // 看看自己是不是处在切换边沿 string strCurLineBiblioRecPath = GetColumnContent(item, "biblioRecpath"); string strNextLineBiblioRecPath = ""; if (nIndex < items.Count - 1) { ListViewItem next_item = items[nIndex + 1]; strNextLineBiblioRecPath = GetColumnContent(next_item, "biblioRecpath"); } if (strCurLineBiblioRecPath != strNextLineBiblioRecPath) { // 处在切换边沿 // 汇总前面的册价格 strContent = ComputeBiblioPrice(items, nIndex).ToString(); // bBiblioSumLine = true; } else { // 其他普通行 strContent = ""; // " "; } } } if (bCutText == true) { // 截断字符串 if (column.MaxChars != -1) { if (strContent.Length > column.MaxChars) { strContent = strContent.Substring(0, column.MaxChars); strContent += "..."; } } } if (String.IsNullOrEmpty(strContent) == true) strContent = ""; // " "; // string strClass = Global.GetLeft(column.Name); // <w:tc> writer.WriteStartElement("w", "tc", m_strWordMlNsUri); WriteParagraph(writer, strContent); // <w:tc> writer.WriteEndElement(); } /* if (bBiblioSumLine == false) { StreamUtil.WriteText(strFileName, "<tr class='content'>"); } else { StreamUtil.WriteText(strFileName, "<tr class='content_biblio_sum'>"); }*/ // <w:tr> writer.WriteEndElement(); // sw.WriteLine(strLineContent); return 0; ERROR1: // <w:tr> writer.WriteStartElement("w", "tr", m_strWordMlNsUri); // <w:tc> writer.WriteStartElement("w", "tc", m_strWordMlNsUri); WriteParagraph(writer, strError); // <w:tc> writer.WriteEndElement(); // <w:tr> writer.WriteEndElement(); return -1; }
int BuildTextTableLine(PrintOption option, List<ListViewItem> items, int nIndex, StreamWriter sw, // ref ExcelDocument doc, IXLWorksheet sheet, bool bCutText) { string strError = ""; int nRet = 0; if (nIndex >= items.Count) { strError = "error: nIndex(" + nIndex.ToString() + ") >= items.Count(" + items.Count.ToString() + ")"; goto ERROR1; } ListViewItem item = items[nIndex]; string strMARC = ""; string strOutMarcSyntax = ""; if (this.MarcFilter != null || option.HasEvalue() == true) { // TODO: 有错误要明显报出来,否则容易在打印出来后才发现,就晚了 // 获得MARC格式书目记录 string strBiblioRecPath = ListViewUtil.GetItemText(item, COLUMN_BIBLIORECPATH); nRet = GetMarc(strBiblioRecPath, out strMARC, out strOutMarcSyntax, out strError); if (nRet == -1) goto ERROR1; if (this.MarcFilter != null) { this.ColumnTable.Clear(); // 清除上一记录处理时残余的内容 this.MarcFilter.Host.UiItem = item; // 当前正在处理的 ListViewItem // 触发filter中的Record相关动作 nRet = this.MarcFilter.DoRecord( null, strMARC, strOutMarcSyntax, nIndex, out strError); if (nRet == -1) goto ERROR1; } } // 栏目内容 string strLineContent = ""; // bool bBiblioSumLine = false; // 是否为种的最后一行(汇总行) List<CellData> cells = new List<CellData>(); int nColIndex = 0; for (int i = 0; i < option.Columns.Count; i++) { Column column = option.Columns[i]; bool bNumber = false; // int nIndex = nPage * option.LinesPerPage + nLine; /* if (nIndex >= items.Count) break; ListViewItem item = items[nIndex]; * */ string strContent = ""; if (string.IsNullOrEmpty(column.Evalue) == false) { Jurassic.ScriptEngine engine = new Jurassic.ScriptEngine(); engine.EnableExposedClrTypes = true; engine.SetGlobalValue("syntax", strOutMarcSyntax); engine.SetGlobalValue("biblio", new MarcRecord(strMARC)); strContent = engine.Evaluate(column.Evalue).ToString(); } else { strContent = GetColumnContent(item, column.Name); if (strContent == "!!!#") { // strContent = ((nPage * option.LinesPerPage) + nLine + 1).ToString(); strContent = (nIndex + 1).ToString(); bNumber = true; } if (strContent == "!!!biblioPrice") { // 看看自己是不是处在切换边沿 string strCurLineBiblioRecPath = GetColumnContent(item, "biblioRecpath"); string strNextLineBiblioRecPath = ""; if (nIndex < items.Count - 1) { ListViewItem next_item = items[nIndex + 1]; strNextLineBiblioRecPath = GetColumnContent(next_item, "biblioRecpath"); } if (strCurLineBiblioRecPath != strNextLineBiblioRecPath) { // 处在切换边沿 // 汇总前面的册价格 strContent = ComputeBiblioPrice(items, nIndex).ToString(); // bBiblioSumLine = true; } else { // 其他普通行 strContent = ""; // " "; } } } if (bCutText == true) { // 截断字符串 if (column.MaxChars != -1) { if (strContent.Length > column.MaxChars) { strContent = strContent.Substring(0, column.MaxChars); strContent += "..."; } } } if (String.IsNullOrEmpty(strContent) == true) strContent = ""; // " "; // string strClass = Global.GetLeft(column.Name); if (i != 0) strLineContent += "\t"; strLineContent += strContent; if (sheet != null) { #if NO CellData cell = new CellData(nColIndex++, strContent, !bNumber, 5); cells.Add(cell); #endif IXLCell cell = sheet.Cell(nIndex + _nTopIndex + 1, nColIndex + 1); if (bNumber == true) cell.Value = strContent; else cell.SetValue(strContent); cell.Style.Alignment.WrapText = true; cell.Style.Alignment.Vertical = XLAlignmentVerticalValues.Center; nColIndex++; } } /* if (bBiblioSumLine == false) { StreamUtil.WriteText(strFileName, "<tr class='content'>"); } else { StreamUtil.WriteText(strFileName, "<tr class='content_biblio_sum'>"); }*/ if (sw != null) sw.WriteLine(strLineContent); #if NO if (doc != null) doc.WriteExcelLine(nIndex + _nTopIndex, cells, WriteExcelLineStyle.AutoString); // WriteExcelLineStyle.None #endif return 0; ERROR1: if (sw != null) sw.WriteLine(strError); if (sheet != null) { #if NO List<CellData> temp_cells = new List<CellData>(); temp_cells.Add(new CellData(0, strError)); doc.WriteExcelLine(nIndex + _nTopIndex, temp_cells); #endif IXLCell cell = sheet.Cell(nIndex + _nTopIndex + 1, 1); cell.Value = strError; } return -1; }
int BuildHtmlTableLine(PrintOption option, List<ListViewItem> items, string strFileName, int nPage, int nLine) { // 栏目内容 string strLineContent = ""; int nRet = 0; bool bBiblioSumLine = false; // 是否为种的最后一行(汇总行) int nIndex = nPage * option.LinesPerPage + nLine; if (nIndex >= items.Count) goto END1; ListViewItem item = items[nIndex]; string strMARC = ""; string strOutMarcSyntax = ""; if (this.MarcFilter != null || option.HasEvalue() == true) { string strError = ""; // TODO: 有错误要明显报出来,否则容易在打印出来后才发现,就晚了 // 获得MARC格式书目记录 string strBiblioRecPath = ListViewUtil.GetItemText(item, COLUMN_BIBLIORECPATH); // TODO: 可以 cache,提高速度 nRet = GetMarc(strBiblioRecPath, out strMARC, out strOutMarcSyntax, out strError); if (nRet == -1) { strLineContent = strError; goto END1; } if (this.MarcFilter != null) { this.ColumnTable.Clear(); // 清除上一记录处理时残余的内容 this.MarcFilter.Host.UiItem = item; // 当前正在处理的 ListViewItem // 触发filter中的Record相关动作 nRet = this.MarcFilter.DoRecord( null, strMARC, strOutMarcSyntax, nIndex, out strError); if (nRet == -1) { strLineContent = strError; goto END1; } } } for (int i = 0; i < option.Columns.Count; i++) { Column column = option.Columns[i]; /* int nIndex = nPage * option.LinesPerPage + nLine; if (nIndex >= items.Count) break; ListViewItem item = items[nIndex]; * */ string strContent = ""; if (string.IsNullOrEmpty(column.Evalue) == false) { Jurassic.ScriptEngine engine = new Jurassic.ScriptEngine(); engine.EnableExposedClrTypes = true; engine.SetGlobalValue("syntax", strOutMarcSyntax); engine.SetGlobalValue("biblio", new MarcRecord(strMARC)); strContent = engine.Evaluate(column.Evalue).ToString(); } else { strContent = GetColumnContent(item, column.Name); if (strContent == "!!!#") strContent = ((nPage * option.LinesPerPage) + nLine + 1).ToString(); if (strContent == "!!!biblioPrice") { // 看看自己是不是处在切换边沿 string strCurLineBiblioRecPath = GetColumnContent(item, "biblioRecpath"); string strNextLineBiblioRecPath = ""; if (nIndex < items.Count - 1) { ListViewItem next_item = items[nIndex + 1]; strNextLineBiblioRecPath = GetColumnContent(next_item, "biblioRecpath"); } if (strCurLineBiblioRecPath != strNextLineBiblioRecPath) { // 处在切换边沿 // 汇总前面的册价格 strContent = ComputeBiblioPrice(items, nIndex).ToString(); bBiblioSumLine = true; } else { // 其他普通行 strContent = " "; } } } // 截断字符串 if (column.MaxChars != -1) { if (strContent.Length > column.MaxChars) { strContent = strContent.Substring(0, column.MaxChars); strContent += "..."; } } if (String.IsNullOrEmpty(strContent) == true) strContent = " "; string strClass = StringUtil.GetLeft(column.Name); if (strClass.Length > 0 && strClass[0] == '@') { strClass = "ext_" + strClass.Substring(1); } strLineContent += IndentString(4) + "<td class='" + strClass + "'>" + strContent + "</td>\r\n"; } END1: string strOdd = ""; if (((nLine + 1) % 2) != 0) // 用每页内的行号来计算奇数 strOdd = " odd"; string strBiblioSum = ""; if (bBiblioSumLine == true) strBiblioSum = " biblio_sum"; // 2009/10/10 changed StreamUtil.WriteText(strFileName, IndentString(3) + "<tr class='content" + strBiblioSum + strOdd + "'><!-- 内容行" + (bBiblioSumLine == true ? "(书目汇总)" : "") + (nIndex + 1).ToString() + " -->\r\n"); StreamUtil.WriteText(strFileName, strLineContent); StreamUtil.WriteText(strFileName, IndentString(3) + "</tr>\r\n"); return 0; }
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"); }
protected override void Initialize() { timers = new TimerManager(); js = new Jurassic.ScriptEngine(); js.SetGlobalFunction("setTimeout", new Action<Jurassic.Library.FunctionInstance, int>(setTimeout)); js.SetGlobalFunction("setInterval", new Action<Jurassic.Library.FunctionInstance, int>(setInterval)); js.SetGlobalFunction("clearTimeout", new Action<int>(clearTimeout)); js.SetGlobalFunction("clearInterval", new Action<int>(clearInterval)); js.SetGlobalValue("window", js.Global); js.SetGlobalValue("console", new JSConsole(js)); js.SetGlobalValue("Canvas", new JSCanvasConstructor(js)); js.SetGlobalValue("Image", new JSImageConstructor(js)); #if !XBOX if (GenerateAndExit != null) { GenerateAssemblyAndExit(GenerateAndExit); return; } #endif #if XBOX || RELEASE // On the XBOX or RELEASE config, run the compiled JavaScript from the Assembly js.LoadFromAssembly("ImpactGame"); Generated.Main(js, js.CreateGlobalScope(), js.Global); #else // In Windows/DEBUG, run JavaScript directly from source js.EnableDebugging = true; js.Evaluate(new Jurassic.FileScriptSource("Game/index.js")); #endif base.Initialize(); }