public Task StartAsync(CancellationToken cancellationToken) { var logger = _logger; LogAppInfo(logger); try { BiliCookie biliBiliCookie = _biliBiliCookie; IDailyTaskAppService dailyTask = _dailyTaskAppService; dailyTask.DoDailyTask(); } catch (Exception ex) { logger.LogError("程序异常终止,原因:{msg}", ex.Message); throw; //Environment.Exit(1); } finally { logger.LogInformation("开始推送"); if (Global.ConfigurationRoot["CloseConsoleWhenEnd"] == "1") { _logger.LogInformation("正在自动关闭应用..."); _applicationLifetime.StopApplication(); } } return(Task.CompletedTask); }
//手机验证码登录 public void Sms_login(string Sms_Code, string ID, login login) { var client = new RestClient("http://passport.bilibili.com/web/login/rapid"); client.Timeout = -1; var request = new RestRequest(Method.POST); request.AddHeader("Content-Type", "application/x-www-form-urlencoded"); request.AddHeader("Cookie", "sid=jd5w5fmn"); request.AddParameter("cid", 1); request.AddParameter("tel", ID); request.AddParameter("smsCode", Sms_Code); IRestResponse response = client.Execute(request); JObject recommend = (JObject)JsonConvert.DeserializeObject(response.Content); string code = recommend["code"].ToString(); if (!string.Equals(code, "0")) { MessageBox.Show(response.Content); } else if (string.Equals(code, "0")) { BiliCookie biliCookie = Get_Cookie(response.Headers[4].ToString()); Login_Success(biliCookie, login); } client = null; request = null; response = null; recommend = null; code = null; }
/// <summary> /// 开始运行 /// </summary> private static void StartRun() { using IServiceScope serviceScope = Global.ServiceProviderRoot.CreateScope(); IServiceProvider di = serviceScope.ServiceProvider; ILogger <Program> logger = di.GetRequiredService <ILogger <Program> >(); LogAppInfo(logger); try { BiliCookie biliBiliCookie = di.GetRequiredService <BiliCookie>(); IDailyTaskAppService dailyTask = di.GetRequiredService <IDailyTaskAppService>(); dailyTask.DoDailyTask(); } catch (Exception ex) { logger.LogError("程序异常终止,原因:{msg}", ex.Message); throw; //Environment.Exit(1); } finally { logger.LogInformation("开始推送"); } }
public DonateCoinDomainService( ILogger <DonateCoinDomainService> logger, IDailyTaskApi dailyTaskApi, BiliCookie cookie, IOptionsMonitor <DailyTaskOptions> dailyTaskOptions, IAccountApi accountApi, ICoinDomainService coinDomainService, IVideoDomainService videoDomainService, IRelationApi relationApi, IOptionsMonitor <Dictionary <string, int> > expDicOptions, IOptionsMonitor <Dictionary <string, string> > donateContinueStatusDicOptions, IVideoApi videoApi ) { _logger = logger; _dailyTaskApi = dailyTaskApi; _biliBiliCookie = cookie; _dailyTaskOptions = dailyTaskOptions.CurrentValue; _accountApi = accountApi; _coinDomainService = coinDomainService; _videoDomainService = videoDomainService; _relationApi = relationApi; _videoApi = videoApi; _expDic = expDicOptions.Get(Constants.OptionsNames.ExpDictionaryName); _donateContinueStatusDic = donateContinueStatusDicOptions.Get(Constants.OptionsNames.DonateCoinCanContinueStatusDictionaryName); }
//登录成功后的操作 public void Login_Success(BiliCookie biliCookie, login login) { if (false == Directory.Exists(@"Data\User\Account\Cookie")) { Directory.CreateDirectory(@"Data\User\Account\Cookie"); } File.WriteAllText(@"Data\User\Account\Cookie\Login_User.Json", JsonConvert.SerializeObject(biliCookie), Encoding.UTF8); login.Login_Success(); }
//获取结果的Cooie public BiliCookie Get_Cookie(string response) { BiliCookie biliCookie = new BiliCookie(); biliCookie.DedeUserID = new Regex(@"DedeUserID=(?<DedeUserID>.*?)[&|;]", RegexOptions.IgnoreCase).Match(response).Groups["DedeUserID"].Value; biliCookie.SESSDATA = new Regex(@"SESSDATA=(?<SESSDATA>.*?)[&|;]", RegexOptions.IgnoreCase).Match(response).Groups["SESSDATA"].Value; biliCookie.bili_jct = new Regex(@"bili_jct=(?<bili_jct>.*?)[&|;]", RegexOptions.IgnoreCase).Match(response).Groups["bili_jct"].Value; return(biliCookie); }
/// <summary> /// 每月领取大会员福利(B币券、大会员权益) /// </summary> /// <param name="useInfo"></param> public BiMessage ReceiveVipPrivilege(BiliUserInfo userInfo, BiliCookie bilicookie) { //if (_dailyTaskOptions.DayOfReceiveVipPrivilege == 0) //{ // _logger.LogInformation("已配置为不进行自动领取会员权益,跳过领取任务"); // return false; //} //int targetDay = _dailyTaskOptions.DayOfReceiveVipPrivilege == -1 // ? 1 // : _dailyTaskOptions.DayOfReceiveVipPrivilege; //if (DateTime.Today.Day != targetDay // && DateTime.Today.Day != DateTime.Today.LastDayOfMonth().Day) //{ // _logger.LogInformation("目标领取日期为{targetDay}号,今天是{day}号,跳过领取任务", targetDay, DateTime.Today.Day); // return false; //} //大会员类型 int vipType = userInfo.GetVipType(); BiMessage result = new BiMessage(); if (vipType == 2) { List <string> message = new List <string>(); string message1 = ""; string message2 = ""; var suc1 = ReceiveVipPrivilege(1, bilicookie, out message1); var suc2 = ReceiveVipPrivilege(2, bilicookie, out message2); message.Add(message1); message.Add(message2); if (suc1 | suc2) { result.Code = 1; result.Message = message; return(result); } else { result.Code = 0; result.Message = message; return(result); } } else { result.Code = 0; result.Message.Add("普通会员和月度大会员每月不赠送B币券,所以不需要领取权益喽"); _logger.LogInformation("普通会员和月度大会员每月不赠送B币券,所以不需要领取权益喽"); return(result); } }
public AccountDomainService(ILogger <AccountDomainService> logger, IDailyTaskApi dailyTaskApi, BiliCookie cookie, IOptionsMonitor <Dictionary <string, int> > dicOptions) { _logger = logger; _dailyTaskApi = dailyTaskApi; _cookie = cookie; _expDic = dicOptions.Get(Constants.OptionsNames.ExpDictionaryName); }
public LiveDomainService(ILogger <LiveDomainService> logger, ILiveApi liveApi, IOptionsMonitor <DailyTaskOptions> dailyTaskOptions, BiliCookie biliCookie) { _logger = logger; _liveApi = liveApi; _biliCookie = biliCookie; _dailyTaskOptions = dailyTaskOptions.CurrentValue; }
public AccountDomainService( ILogger <AccountDomainService> logger, IDailyTaskApi dailyTaskApi, BiliCookie cookie, IUserInfoApi userInfoApi ) { _logger = logger; _dailyTaskApi = dailyTaskApi; _cookie = cookie; _userInfoApi = userInfoApi; }
public BiliBiliToolHostedService( IHostApplicationLifetime applicationLifetime , ILogger <BiliBiliToolHostedService> logger , BiliCookie biliBiliCookie , IDailyTaskAppService dailyTaskAppService ) { _applicationLifetime = applicationLifetime; _logger = logger; _biliBiliCookie = biliBiliCookie; _dailyTaskAppService = dailyTaskAppService; }
public VipPrivilegeDomainService( ILogger <VipPrivilegeDomainService> logger, IDailyTaskApi dailyTaskApi, BiliCookie biliBiliCookieOptions, IOptionsMonitor <DailyTaskOptions> dailyTaskOptions ) { _logger = logger; _dailyTaskApi = dailyTaskApi; _dailyTaskOptions = dailyTaskOptions.CurrentValue; _biliBiliCookie = biliBiliCookieOptions; }
public ChargeDomainService( ILogger <ChargeDomainService> logger, IOptionsMonitor <DailyTaskOptions> dailyTaskOptions, IDailyTaskApi dailyTaskApi, BiliCookie cookie ) { _logger = logger; _dailyTaskOptions = dailyTaskOptions.CurrentValue; _dailyTaskApi = dailyTaskApi; _cookie = cookie; }
public VideoDomainService( ILogger <VideoDomainService> logger, IDailyTaskApi dailyTaskApi, BiliCookie biliBiliCookie, IOptionsMonitor <DailyTaskOptions> dailyTaskOptions, IOptionsMonitor <Dictionary <string, int> > dicOptions, IRelationApi relationApi ) { _logger = logger; _dailyTaskApi = dailyTaskApi; _relationApi = relationApi; _biliBiliCookie = biliBiliCookie; _expDic = dicOptions.Get(Constants.OptionsNames.ExpDictionaryName); _dailyTaskOptions = dailyTaskOptions.CurrentValue; }
public BiliBiliToolHostedService( IHostApplicationLifetime applicationLifetime , IConfiguration configuration , ILogger <BiliBiliToolHostedService> logger , BiliCookie biliBiliCookie , IEnumerable <IAppService> appServices , IOptionsMonitor <SecurityOptions> securityOptions ) { _applicationLifetime = applicationLifetime; _configuration = configuration; _logger = logger; _biliBiliCookie = biliBiliCookie; _appServices = appServices.ToList(); _securityOptions = securityOptions.CurrentValue; }
public async Task Run(IJobExecutionContext context, int jobid) { string cookie = "CURRENT_FNVAL=80; _uuid=846FF8F2-C882-C1CD-808F-DEEA4719175585066infoc; blackside_state=1; rpdid=|(m)mJumk)R0J'uYuku|kmm|; buvid3=BB379260-46D0-407B-B31A-086227A133E1184999infoc; LIVE_BUVID=AUTO4416177595741756; fingerprint3=5bdd4f9e03267a2fa34c274964a20a2b; buvid_fp=BB379260-46D0-407B-B31A-086227A133E1184999infoc; bp_article_offset_4830365=510771353527463951; fingerprint_s=22fdbf4a2d532409728945361a3a8c15; bp_t_offset_4830365=514104505842011394; bp_video_offset_4830365=514160147147869440; PVID=1; bfe_id=1e33d9ad1cb29251013800c68af42315; fingerprint=bf201b8cab1033a1ec48ac66ca6093a4; buvid_fp_plain=3536A90E-676D-49F6-8195-3D36856858C4138393infoc; SESSDATA=524a2906,1634354147,94f35*41; bili_jct=884c71e8fcc5798e65461d34baaac988; DedeUserID=4830365; DedeUserID__ckMd5=3d3f94374f6dd343; sid=d3a6p9a7"; BiliCookie cookieentity = _bilicookieservices.DescribeCookie(cookie); //获取登录用户信息 HttpResponse <BiliUserInfo> biliuserinfo = _biliaccountservice.LoginByCookie(cookie); //获取每日任务 HttpResponse <DailyTaskInfo> daily = _biliaccountservice.GetDailyTaskStatus(cookie); //领取大会员权益 BiMessage viprecive = _vipService.ReceiveVipPrivilege(biliuserinfo.Data, cookieentity); //漫画签到 BiMessage mangasign = _managadomainservice.MangaSign(cookie); DescibeHttpResponse describe = new DescibeHttpResponse(); describe.DescibeResponseString(biliuserinfo.Message); describe.DescibeResponseString(daily.Message); describe.DescibeResponseString(viprecive.Message); describe.DescibeResponseString(mangasign.Message); if (jobid > 0) { var model = await _tasksQzServices.QueryById(jobid); if (model != null) { model.RunTimes += 1; var separator = "<br>"; model.Remark = $"【{DateTime.Now}】执行任务【Id:{context.JobDetail.Key.Name},组别:{context.JobDetail.Key.Group}】【执行成功】:{describe.outstring()} {separator}"; await _tasksQzServices.Update(model); } } await Console.Out.WriteLineAsync("B站签到结果" + describe.outstring()); }
//获取登录二维码的扫码状态 public void Get_Scan_Login_Qrcode_status(object sender, EventArgs e) { var client = new RestClient("http://passport.bilibili.com/qrcode/getLoginInfo"); var request = new RestRequest(Method.POST); request.AddHeader("Content-Type", "application/x-www-form-urlencoded"); request.AddParameter("oauthKey", Scan_oauthKey); IRestResponse response = client.Execute(request); JObject recommend = (JObject)JsonConvert.DeserializeObject(response.Content); if (string.Equals(recommend["status"].ToString(), "True")) { BiliCookie biliCookie = Get_Cookie(recommend["data"]["url"].ToString()); Qrcode_Login(biliCookie, Scan_login); Get_Scan_Login_Qrcode_status_Timer.Stop(); Get_Scan_Login_Qrcode_status_Timer = null; } else if (string.Equals(recommend["status"].ToString(), "False")) { string data = recommend["data"].ToString(); if (string.Equals(data, "-5")) { Scan_login.Scan_status.Text = "扫描成功,请在手机上确认是否授权"; Scan_login.Scan_status.Foreground = new SolidColorBrush(System.Windows.Media.Color.FromRgb(33, 211, 97)); } else if (string.Equals(data, "-4")) { Scan_login.Scan_status.Text = "请使用 哔哩哔哩客户端 扫码登录"; Scan_login.Scan_status.Foreground = new SolidColorBrush(System.Windows.Media.Color.FromRgb(251, 114, 153)); } else if (string.Equals(data, "-2")) { Scan_login.Scan_status.Text = "二维码已失效,请点击二维码刷新"; Scan_login.Scan_status.Foreground = new SolidColorBrush(System.Windows.Media.Color.FromRgb(208, 2, 27)); Get_Scan_Login_Qrcode_status_Timer.Stop(); Get_Scan_Login_Qrcode_status_Timer = null; } } client = null; request = null; response = null; recommend = null; }
/// <summary> /// 领取大会员每月赠送福利 /// </summary> /// <param name="type">1.大会员B币券;2.大会员福利</param> private bool ReceiveVipPrivilege(int type, BiliCookie bilicookie, out string message) { string csrf = bilicookie.BiliJct; string url = string.Format("http://api.bilibili.com/x/vip/privilege/receive?type={0}&csrf={1}", type, csrf); var response = _httphelper.ToPost(url, bilicookie.CookieStr, ""); BiliApiResponse apiResponse = JsonConvert.DeserializeObject <BiliApiResponse>(response.Html); var name = GetPrivilegeName(type); if (apiResponse.Code == 0) { _logger.LogDebug($"{name}成功"); message = $"{name}成功"; return(true); } else { _logger.LogError($"{name}失败,原因: {apiResponse.Message}"); message = $"{name}失败,原因: {apiResponse.Message}"; return(false); } }
public async Task <string> GetUserInfo() { string cookie = "CURRENT_FNVAL=80; _uuid=846FF8F2-C882-C1CD-808F-DEEA4719175585066infoc; blackside_state=1; rpdid=|(m)mJumk)R0J'uYuku|kmm|; buvid3=BB379260-46D0-407B-B31A-086227A133E1184999infoc; LIVE_BUVID=AUTO4416177595741756; fingerprint3=5bdd4f9e03267a2fa34c274964a20a2b; buvid_fp=BB379260-46D0-407B-B31A-086227A133E1184999infoc; bp_article_offset_4830365=510771353527463951; fingerprint_s=22fdbf4a2d532409728945361a3a8c15; bp_t_offset_4830365=514104505842011394; bp_video_offset_4830365=514160147147869440; PVID=1; bfe_id=1e33d9ad1cb29251013800c68af42315; fingerprint=bf201b8cab1033a1ec48ac66ca6093a4; buvid_fp_plain=3536A90E-676D-49F6-8195-3D36856858C4138393infoc; SESSDATA=524a2906,1634354147,94f35*41; bili_jct=884c71e8fcc5798e65461d34baaac988; DedeUserID=4830365; DedeUserID__ckMd5=3d3f94374f6dd343; sid=d3a6p9a7"; BiliCookie cookieentity = _bilicookieservices.DescribeCookie(cookie); //获取登录用户信息 HttpResponse <BiliUserInfo> biliuserinfo = _biliaccountservice.LoginByCookie(cookie); //获取每日任务 HttpResponse <DailyTaskInfo> daily = _biliaccountservice.GetDailyTaskStatus(cookie); //领取大会员权益 BiMessage viprecive = _vipService.ReceiveVipPrivilege(biliuserinfo.Data, cookieentity); //漫画签到 BiMessage mangasign = _managadomainservice.MangaSign(cookie); DescibeHttpResponse describe = new DescibeHttpResponse(); describe.DescibeResponseString(biliuserinfo.Message); describe.DescibeResponseString(daily.Message); describe.DescibeResponseString(viprecive.Message); describe.DescibeResponseString(mangasign.Message); string outstring = describe.outstring(); string csdncookie = "uuid_tt_dd=10_36575270660-1607065853983-192011; UN=u010840685; p_uid=U010000; Hm_ct_6bcd52f51e9b3dce32bec4a3997715ac=6525*1*10_36575270660-1607065853983-192011!5744*1*u010840685; UserName=u010840685; UserInfo=2e1b0c3535df4361b38c567d8878a374; UserToken=2e1b0c3535df4361b38c567d8878a374; UserNick=%E6%AC%B2%E6%80%9D; AU=509; BT=1616394156533; Hm_up_6bcd52f51e9b3dce32bec4a3997715ac=%7B%22islogin%22%3A%7B%22value%22%3A%221%22%2C%22scope%22%3A1%7D%2C%22isonline%22%3A%7B%22value%22%3A%221%22%2C%22scope%22%3A1%7D%2C%22isvip%22%3A%7B%22value%22%3A%220%22%2C%22scope%22%3A1%7D%2C%22uid_%22%3A%7B%22value%22%3A%22u010840685%22%2C%22scope%22%3A1%7D%7D; ssxmod_itna=eqmx0D9Dc73iqxQq0dy7tigYY5APh0xqxqGXxpoDZDiqAPGhDC8ScxD5wEq4KCDy7+xpxCtGRGtW5=7+Tehtyr74GLDmKDy+W6eGGIxBYDQxAYDGDDpXD84DrAxYPG0DiKGRDlIFcDAf=Dbx=2DitSDDUF04G2D7tnzqL42wrDAd+yK7DnD0t5xBdPDcDniQnr=YiTeTNZDBQD7qNnDYo67eDHB2xTeO4f0O+YlPvY0hDG0xfbCY4PbIDei7vYQiOtD8DqQB+d9gkDG3PG2iD===; ssxmod_itna2=eqmx0D9Dc73iqxQq0dy7tigYY5APh0xqxA6b5P4D/iQCDFOYtpcDID5BIcxBM4ZmxwufCrm2qOUQLFIjHq7t+=qrXw0B=DDt0iYd+TIDgSeEyIrWYqYXiRlr0lD9YaW407KFx7=D+OGDD===; __gads=ID=0de619a196a7e516-22ce28af7ec700a4:T=1619073599:RT=1619073599:S=ALNI_MZMiIamo3GoRDRsFpW7RQfIW1wX5g; c_hasSub=true; dc_session_id=10_1619500073751.798823; dc_sid=01fedb8452acf1f00413c34dec3683bd; announcement-new=%7B%22isLogin%22%3Atrue%2C%22announcementUrl%22%3A%22https%3A%2F%2Fblog.csdn.net%2Fblogdevteam%2Farticle%2Fdetails%2F112280974%3Futm_source%3Dgonggao_0107%22%2C%22announcementCount%22%3A0%2C%22announcementExpire%22%3A3600000%7D; c_first_ref=github.com; c_first_page=https%3A//blog.csdn.net/; c_segment=11; Hm_lvt_6bcd52f51e9b3dce32bec4a3997715ac=1619428881,1619430562,1619430574,1619500082; c_ref=https%3A//mp.csdn.net/console/home%3Fspm%3D1001.2100.3001.4503; c_page_id=default; log_Id_click=94; c_pref=https%3A//mp.csdn.net/console/home%3Fspm%3D1001.2100.3001.4503; log_Id_view=739; Hm_lpvt_6bcd52f51e9b3dce32bec4a3997715ac=1619500342; dc_tos=qs7igo; log_Id_pv=427"; _csdnsignservices.CSDNSign(csdncookie); return(""); }
//(网页接口)密码登录 public void Password_login_Web(string username, string password, string hash, Verification_Key verification_key, login login) { Coding coding = new Coding(); var rsa = new RSACryptoServiceProvider(); var public_key = @"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjb4V7EidX/ym28t2ybo0U6t0n 6p4ej8VjqKHg100va6jkNbNTrLQqMCQCAYtXMXXp2Fwkk6WR+12N9zknLjf+C9sx /+l48mjUU8RqahiFD1XT/u2e0m2EN029OhCgkHx3Fc/KlFSIbak93EH/XlYis0w+ Xl69GV6klzgxW6d2xQIDAQAB"; rsa.FromX509PublicKey(Convert.FromBase64String(public_key)); var bytes = Convert.ToBase64String(rsa.Encrypt(Encoding.UTF8.GetBytes("mangohappy"), false)); var client = new RestClient("http://passport.bilibili.com/web/login/v2"); client.Timeout = -1; var request = new RestRequest(Method.POST); request.AddHeader("Content-Type", "application/x-www-form-urlencoded"); request.AddParameter("captchaType", "6"); request.AddParameter("username", username); request.AddParameter("password", Convert.ToBase64String(rsa.Encrypt(Encoding.UTF8.GetBytes(hash + password), false))); request.AddParameter("keep", "true"); request.AddParameter("key", verification_key.key); request.AddParameter("goUrl", coding.UrlEncode("https://www.bilibili.com/")); request.AddParameter("challenge", verification_key.challenge); request.AddParameter("validate", verification_key.validate); request.AddParameter("seccode", verification_key.seccode); IRestResponse response = client.Execute(request); JObject recommend = (JObject)JsonConvert.DeserializeObject(response.Content); string code = recommend["code"].ToString(); if (string.Equals(code, "-2111")) { MessageBox.Show("由于您已开启二次验证,二次验证API出了点问题,请改用扫码或者验证码登录,抱歉了"); /*Verification_Key Double_verification_key = Get_Verification_Key(7); * Double_verification_key.Sms_type = 18; * Double_verification_key.tmp_code = (recommend["data"].ToString()).Substring((recommend["data"].ToString()).IndexOf("tmp_token=") + 10, 32);*/ login.Password_Login.Visibility = Visibility.Hidden; login.Sms_Code_Login.Visibility = Visibility.Visible; /*login.phone_textbox.Text = Double_verification_key.tmp_code; * login.phone_textbox.IsReadOnly = true; * login.Sms_code_Send_buttons.Content = "请验证"; * login.Sms_code_Send_buttons.IsEnabled = false; * login.Sms_Login_button.Content = "请验证"; * login.Sms_Login_button.IsEnabled = false; * login.sendKey_To_Geetest_page(Double_verification_key);*/ } else if (string.Equals(code, "0")) { BiliCookie biliCookie = Get_Cookie(response.Content); Login_Success(biliCookie, login); } else { MessageBox.Show(response.Content); } client = null; request = null; response = null; recommend = null; code = null; }
//二维码登录 public void Qrcode_Login(BiliCookie biliCookie, login login) { Login_Success(biliCookie, login); }