/// <summary> /// 获取任务列表,出错时返回null /// </summary> /// <returns></returns> public TaskModel[] GeTaskModel() { string linkurl = "http://disk.yun.uc.cn/uclxmgr/ajaxGetList?offset=0&_=" + Cf_Web.currenttime(); this._httpWeb.Accpet = "application/json, text/javascript, */*; q=0.01"; this._httpWeb.Referer = "http://disk.yun.uc.cn/"; var jsondata = this._httpWeb.CPostOrGet(linkurl, HttpMethod.GET).HtmlValue; jsondata = Regex.Unescape(jsondata); try { JObject jObject = JObject.Parse(jsondata); var data = jObject["uclxList"]; return(JsonConvert.DeserializeObject <TaskModel[]>(data.ToString())); } catch { return(null); } }
/// <summary> /// 获取验证码 /// </summary> public virtual byte[] GetCaptchaBytes() { const string link_1 = "http://yun.uc.cn/cloud/login"; string captchaid_2 = "https://api.open.uc.cn/cas/commonjson/needCaptcha?callback=callback&_=" + Cf_Web.currenttime(); const string captcha_3 = "https://api.open.uc.cn/cas/commonjson/captcha?captchaId="; // 1、访问主页并且得到_loginurl this._httpWeb.AllowAutoRedirect = true; this._httpWeb.EncodingSet = "utf-8"; const string starstring = "<form id=\"loginForm\" target=\"loginiframe\" action=\""; string tempstring = this._httpWeb.CPostOrGet(link_1, HttpMethod.GET).HtmlValue; this._loginurl = tempstring.ExtractStringNoQH(starstring, "\"").FirstOrDefault(); // 2、获取其他captchaid this._httpWeb.Referer = "http://yun.uc.cn/cloud/login"; this._captchaid = this._httpWeb.CPostOrGet(captchaid_2, HttpMethod.GET).HtmlValue.ExtractStringNoQH("'captchaId':'", "'").FirstOrDefault(); // 3、获取captchaBytes this._httpWeb.Referer = "http://yun.uc.cn/cloud/login"; byte[] codeBytes = this._httpWeb.CPostOrGet(captcha_3 + this._captchaid, HttpMethod.GET).Bytes; return(codeBytes); }
/// <summary> /// 刷新验证码,请在调用GetCaptchaBytes()方法之后有必要时再使用 /// </summary> /// <returns></returns> public virtual byte[] RefreshCaptcha() { const string captcha_3 = "https://api.open.uc.cn/cas/commonjson/captcha?captchaId="; string url = "https://api.open.uc.cn/cas/commonjson/refreshCaptchaByIframe?captchaId=&callback=callback&_=" + Cf_Web.currenttime(); this._httpWeb.Referer = "http://yun.uc.cn/cloud/login"; this._captchaid = this._httpWeb.CPostOrGet(url, HttpMethod.GET).HtmlValue.ExtractStringNoQH("'captchaId':'", "'").FirstOrDefault(); this._httpWeb.Referer = "http://yun.uc.cn/cloud/login"; byte[] codeBytes = this._httpWeb.CPostOrGet(captcha_3 + this._captchaid, HttpMethod.GET).Bytes; return(codeBytes); }
/// <summary> /// 获得一个资源下面的所有可播放格式的DownloadModel模型 /// </summary> /// <param name="html"></param> /// <param name="httpWeb"></param> /// <param name="taskid"></param> /// <returns></returns> private static DownloadModel[] GetDownloadModelForHtml(string html, Cf_HttpWeb httpWeb, string taskid) { var data = html.LastExtractString("在线播放</a></li>", "<a onclick="); var djangoid = data.Select(o => o.ExtractStringNoQH("djangoid=\"", "\"").FirstOrDefault()).ToArray(); var name = data.Select(o => o.ExtractStringNoQH("filename=\"", "\"").FirstOrDefault()).ToArray(); DownloadModel[] downloadModels = new DownloadModel[djangoid.Length]; // 注意此处要求djangoid和name的数量必须相等,这里不做判断了,默认相等,出异常再说 for (int i = 0; i < djangoid.Length; i++) { var link = $"{_downloadlink}&djangoID={djangoid[i]}&filename={name[i]}&_={Cf_Web.currenttime()}"; httpWeb.Referer = "http://mydiskm.uc.cn/uclxmgr/btDetail?uc_param_str=frpfvesscplaprnisieint&taskId=" + taskid; httpWeb.Accpet = "application/json, text/javascript, */*"; httpWeb.UserAgent = "Mozilla/5.0 (Linux; U; Android 4.3; zh-CN; TianTian Build/tt) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 UCBrowser/10.6.0.620 U3/0.8.0 Mobile Safari/534.30"; httpWeb.EncodingSet = "utf-8"; var jsondata = httpWeb.CPostOrGet(link, HttpMethod.GET).HtmlValue; jsondata = Regex.Unescape(jsondata); DownloadModel dm = new DownloadModel(); dm.Link_low = jsondata.ExtractStringNoQH("low\":\"", "\"").FirstOrDefault(); dm.Link_hi = jsondata.ExtractStringNoQH("hi\":\"", "\"").FirstOrDefault(); dm.Name = name[i]; downloadModels[i] = dm; } return(downloadModels); }