Skip to content

Commit

Permalink
针对B站近期风控进行调整
Browse files Browse the repository at this point in the history
1.将User-Agent开放为配置,解决当前出现登录报423的问题;
2.新增一个是否跳过每日任务的配置,用于灵活的关闭、开启每日任务。
  • Loading branch information
RayWangQvQ committed Nov 21, 2020
1 parent aaf34aa commit a979847
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 7 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/bilibili-daily-task.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,10 @@ jobs:
Ray_BiliBiliCookie:BiliJct: ${{secrets.BILIJCT}}
Ray_BiliBiliCookie:Bili_jct: ${{secrets.BILI_JCT}} # 为了兼容 GitHub Secrets 经常会被填错
Ray_Push:PushScKey: ${{secrets.PUSHSCKEY}}
Ray_Security:IsSkipDailyTask: ${{secrets.ISSKIPDAILYTASK}}
Ray_Security:IntervalSecondsBetweenRequestApi: ${{secrets.INTERVALSECONDSBETWEENREQUESTAPI}}
Ray_Security:IntervalMethodTypes: ${{secrets.INTERVALMETHODTYPES}}
Ray_Security:UserAgent: ${{secrets.USERAGENT}}
Ray_DailyTaskConfig:NumberOfCoins: ${{secrets.NUMBEROFCOINS}}
Ray_DailyTaskConfig:SelectLike: ${{secrets.SELECTLIKE}}
Ray_DailyTaskConfig:SupportUpIds: ${{secrets.SUPPORTUPIDS}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ namespace Ray.BiliBiliTool.Agent.BiliBiliAgent.Interfaces
[Headers(
"Accept:application/json, text/plain, */*",
"Referer:https://www.bilibili.com/",
"Connection:keep-alive",
"User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36 Edg/85.0.564.70"
"Connection:keep-alive"
)]
public interface IBiliBiliApi
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,13 @@ public static IServiceCollection AddBiliBiliClientApi(this IServiceCollection se
{
services.AddHttpClient();
services.AddHttpClient("BiliBiliWithCookie",
(sp, c) => c.DefaultRequestHeaders.Add("Cookie", sp.GetRequiredService<BiliBiliCookieOptions>().ToString()));
(sp, c) =>
{
c.DefaultRequestHeaders.Add("Cookie",
sp.GetRequiredService<IOptionsMonitor<BiliBiliCookieOptions>>().CurrentValue.ToString());
c.DefaultRequestHeaders.Add("User-Agent",
sp.GetRequiredService<IOptionsMonitor<SecurityOptions>>().CurrentValue.UserAgent);
});

//bilibli
services.AddBiliBiliClientApi<IDailyTaskApi>("https://api.bilibili.com");
Expand Down Expand Up @@ -57,7 +63,10 @@ public static IServiceCollection AddBiliBiliClientApi<TInterface>(this IServiceC
services.AddRefitClient<TInterface>(settings)
.ConfigureHttpClient((sp, c) =>
{
c.DefaultRequestHeaders.Add("Cookie", sp.GetRequiredService<IOptionsMonitor<BiliBiliCookieOptions>>().CurrentValue.ToString());
c.DefaultRequestHeaders.Add("Cookie",
sp.GetRequiredService<IOptionsMonitor<BiliBiliCookieOptions>>().CurrentValue.ToString());
c.DefaultRequestHeaders.Add("User-Agent",
sp.GetRequiredService<IOptionsMonitor<SecurityOptions>>().CurrentValue.UserAgent);
c.BaseAddress = new Uri(host);
})
.AddHttpMessageHandler(sp => new MyHttpClientDelegatingHandler(
Expand Down
13 changes: 12 additions & 1 deletion src/Ray.BiliBiliTool.Application/DailyTaskAppService.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
using System;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Ray.BiliBiliTool.Agent.BiliBiliAgent.Dtos;
using Ray.BiliBiliTool.Application.Attributes;
using Ray.BiliBiliTool.Application.Contracts;
using Ray.BiliBiliTool.Config.Options;
using Ray.BiliBiliTool.DomainService.Interfaces;

namespace Ray.BiliBiliTool.Application
Expand All @@ -16,6 +18,7 @@ public class DailyTaskAppService : IDailyTaskAppService
private readonly ILiveDomainService _liveDomainService;
private readonly IVipPrivilegeDomainService _vipPrivilegeDomainService;
private readonly IChargeDomainService _chargeDomainService;
private readonly SecurityOptions _securityOptions;

public DailyTaskAppService(
ILogger<DailyTaskAppService> logger,
Expand All @@ -24,7 +27,8 @@ public DailyTaskAppService(
IMangaDomainService mangaDomainService,
ILiveDomainService liveDomainService,
IVipPrivilegeDomainService vipPrivilegeDomainService,
IChargeDomainService chargeDomainService)
IChargeDomainService chargeDomainService,
IOptionsMonitor<SecurityOptions> securityOptions)
{
_logger = logger;
_loginDomainService = loginDomainService;
Expand All @@ -33,10 +37,17 @@ public DailyTaskAppService(
_liveDomainService = liveDomainService;
_vipPrivilegeDomainService = vipPrivilegeDomainService;
_chargeDomainService = chargeDomainService;
_securityOptions = securityOptions.CurrentValue;
}

public void DoDailyTask()
{
if(_securityOptions.IsSkipDailyTask)
{
_logger.LogWarning("已配置为跳过每日任务");
return;
}

_logger.LogInformation("-----开始每日任务-----\r\n");

UseInfo userInfo;
Expand Down
10 changes: 10 additions & 0 deletions src/Ray.BiliBiliTool.Config/Options/SecurityOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@ namespace Ray.BiliBiliTool.Config.Options
/// </summary>
public class SecurityOptions
{
/// <summary>
/// 是否跳过执行任务,用于特殊情况下,通过配置灵活的开启和关闭任务
/// </summary>
public bool IsSkipDailyTask { get; set; } = false;

/// <summary>
/// 两次调用api之间间隔的秒数[0,+]
/// 有人担心在几秒内连续调用api会被b站安全机制发现,所以为不放心的朋友添加了间隔秒数配置,两次调用Api之间会大于该秒数
Expand Down Expand Up @@ -43,5 +48,10 @@ public List<HttpMethod> GetIntervalMethods()

return result;
}

/// <summary>
/// 请求B站接口时头部传递的User-Agent
/// </summary>
public string UserAgent { get; set; } = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36 Edg/87.0.664.41";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<Authors>Ray</Authors>
<Version>1.0.9</Version>
<Version>1.0.10</Version>
</PropertyGroup>

<ItemGroup>
Expand Down
4 changes: 3 additions & 1 deletion src/Ray.BiliBiliTool.Console/appsettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,10 @@

//安全相关配置
"Security": {
"IsSkipDailyTask": false,//是否跳过执行任务,用于特殊情况下,通过配置灵活的开启和关闭任务
"IntervalSecondsBetweenRequestApi": 3, //两次调用api之间间隔的秒数[0,+]。因为有人担心在几秒内连续调用api会被b站安全机制发现,所以为不放心的朋友添加了间隔秒数配置,两次连续调用Api之间会大于该秒数
"IntervalMethodTypes": "POST" //间隔秒数所针对的HttpMethod,多个用英文逗号隔开,当前有GET和POST两种,可配置如“GET,POST”。服务器一般对GET请求不是很敏感,建议只针对POST请求做间隔就可以了
"IntervalMethodTypes": "POST", //间隔秒数所针对的HttpMethod,多个用英文逗号隔开,当前有GET和POST两种,可配置如“GET,POST”。服务器一般对GET请求不是很敏感,建议只针对POST请求做间隔就可以了
"UserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36 Edg/87.0.664.41" //请求B站接口时头部传递的User-Agent
},

//微信推送
Expand Down

0 comments on commit a979847

Please sign in to comment.