public static void FetchFollowerList(RequestObject req) { string re = Encoding.UTF8.GetString(req.repByte); int page = (int)req.meta["page"]; string userId = (string)req.meta["userId"]; Follower followerObject = JsonConvert.DeserializeObject <Follower>(re); for (int i = 0; i < followerObject.data.list.Count; i++) { int uid = followerObject.data.list[i].mid; RequestObject requestObject = new RequestObject(); Uri followerUrl = new Uri($"https://api.bilibili.com/x/relation/modify"); requestObject.url = followerUrl; WebHeaderCollection webHeader = new WebHeaderCollection(); webHeader.Add(HttpRequestHeader.Cookie, authUtil.cookieString); requestObject.requestHeaders = webHeader; requestObject.method = Method.form; NameValueCollection paras = new NameValueCollection(); paras.Add("fid", uid.ToString()); paras.Add("act", "5"); paras.Add("re_src", "11"); paras.Add("jsonp", "jsonp"); paras.Add("csrf", authUtil.bili_jct); requestObject.requestPara = paras; requestObject.callBackFunc = BlockUserCallBack; requestCore.AddReq(requestObject); } if (followerObject.data.list.Count == 50 && page != 5) { page++; RequestObject requestObject = new RequestObject(); Uri followerUrl = new Uri($"https://api.bilibili.com/x/relation/followers?vmid={userId}&pn={page}&ps=50&order=desc&jsonp=jsonp"); requestObject.url = followerUrl; WebHeaderCollection webHeader = new WebHeaderCollection(); webHeader.Add(HttpRequestHeader.Cookie, authUtil.cookieString); requestObject.requestHeaders = webHeader; requestObject.method = Method.get; requestObject.callBackFunc = BlockChainCore.FetchFollowerList; requestObject.meta["page"] = page; requestObject.meta["userId"] = userId; requestCore.AddReq(requestObject); } }
private void userIdBlockStartBtn_Click(object sender, EventArgs e) { if (!authUtil.isLogin) { MessageBox.Show("未登录"); } else { RequestObject requestObject = new RequestObject(); Uri followerUrl = new Uri($"https://api.bilibili.com/x/relation/followers?vmid={userIdTextbox.Text}&pn=1&ps=50&order=desc&jsonp=jsonp"); requestObject.url = followerUrl; WebHeaderCollection webHeader = new WebHeaderCollection(); webHeader.Add(HttpRequestHeader.Cookie, authUtil.cookieString); requestObject.requestHeaders = webHeader; requestObject.method = Method.get; requestObject.callBackFunc = BlockChainCore.FetchFollowerList; requestObject.meta["page"] = 1; requestObject.meta["userId"] = userIdTextbox.Text; requestCore.AddReq(requestObject); } }
private void LoginBroswer_Navigating(object sender, WebBrowserNavigatingEventArgs e) { WebBrowser webBrowser = (WebBrowser)sender; if (e.Url.AbsolutePath != "blank") { if (e.Url.ToString().Contains("https://passport.biligame.com/crossDomain?")) { //登陆成功 NameValueCollection param = HttpUtility.ParseQueryString(e.Url.Query); if (param != null && param.Count == 6) { LogUtil.Log("登陆成功"); authUtil.bili_jct = param["bili_jct"]; authUtil.DedeUserID = param["DedeUserID"]; authUtil.DedeUserID__ckMd5 = param["DedeUserID__ckMd5"]; authUtil.SESSDATA = param["SESSDATA"]; authUtil.Expires = param["Expires"]; StringBuilder cookieString = new StringBuilder(); cookieString.Append("bili_jct=").Append(HttpUtility.UrlEncode(param["bili_jct"])).Append("; "); cookieString.Append("DedeUserID=").Append(HttpUtility.UrlEncode(param["DedeUserID"])).Append("; "); cookieString.Append("DedeUserID__ckMd5=").Append(HttpUtility.UrlEncode(param["DedeUserID__ckMd5"])).Append("; "); cookieString.Append("SESSDATA=").Append(HttpUtility.UrlEncode(param["SESSDATA"])); authUtil.cookieString = cookieString.ToString(); authUtil.isLogin = true; RequestObject requestObject = new RequestObject(); Uri followerUrl = new Uri($"https://api.bilibili.com/x/web-interface/nav"); requestObject.url = followerUrl; WebHeaderCollection webHeader = new WebHeaderCollection(); webHeader.Add(HttpRequestHeader.Cookie, authUtil.cookieString); requestObject.requestHeaders = webHeader; requestObject.method = Method.get; requestObject.callBackFunc = BlockChainCore.FetchLoginUserInfoCallBack; requestCore.AddReq(requestObject); MessageBox.Show("登陆成功"); this.Close(); } else { MessageBox.Show("登陆失败,请重试。"); loginBroswer.Navigate(new Uri("https://passport.bilibili.com/ajax/miniLogin/minilogin")); } } else { HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create(e.Url); myRequest.Headers.Add(HttpRequestHeader.ContentEncoding, "utf-8"); myRequest.Headers.Add(HttpRequestHeader.Upgrade, "1"); myRequest.Headers.Add("Sec-Fetch-Site", "none"); myRequest.Headers.Add("Sec-Fetch-Mode", "navigate"); myRequest.Headers.Add("Sec-Fetch-User", "?1"); myRequest.Headers.Add("Accept-Encoding", "gzip, deflate"); myRequest.Headers.Add("Pragma", "no-cache"); myRequest.Headers.Add("Cache-Control", "no-cache"); myRequest.Headers.Add("Accept-Language", "zh-CN,zh;q=0.9,ja;q=0.8"); myRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"; myRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3"; //WebProxy myProxy = new WebProxy("127.0.0.1", 8080); //myRequest.Proxy = myProxy; HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); loginBroswer.DocumentStream = myResponse.GetResponseStream(); } } }