예제 #1
0
        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);
            }
        }
예제 #2
0
 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();
                }
            }
        }