初始化 monorepo: Go后端(7微服务) + Unity客户端(9模块) + 启动器 HTML5原型: Three.js 3D体素世界, Perlin噪声地形, 原版材质, 22种方块 Minecraft创造模式背包: 双栏布局, 拖拽移动物品, 方向性元件引脚 AI助搭策划文档 + 客户端/服务端骨架 + Docker Compose + CI
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using PCL.Core.App;
|
||||
|
||||
namespace PCL.Network;
|
||||
|
||||
public static class RequestSigning
|
||||
{
|
||||
internal static string SecretCdnSign(string urlWithMark)
|
||||
{
|
||||
if (!urlWithMark.EndsWithF("{CDN}"))
|
||||
return urlWithMark;
|
||||
return urlWithMark.Replace("{CDN}", "").Replace(" ", "%20");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置 Headers 的 UA、Referer。
|
||||
/// </summary>
|
||||
internal static void SecretHeadersSign(string url, ref HttpRequestMessage client, bool useBrowserUserAgent = false,
|
||||
string customUserAgent = "")
|
||||
{
|
||||
client.Version = HttpVersion.Version20;
|
||||
client.VersionPolicy = HttpVersionPolicy.RequestVersionOrLower;
|
||||
if (Uri.TryCreate(url, UriKind.Absolute, out var parsedUri)
|
||||
&& (parsedUri.Host == "api.curseforge.com"
|
||||
|| parsedUri.Host == "edge.forgecdn.net"
|
||||
|| parsedUri.Host == "mediafilez.forgecdn.net"))
|
||||
{
|
||||
client.Headers.Add("x-api-key", Secrets.CurseForgeAPIKey);
|
||||
}
|
||||
var userAgent = !string.IsNullOrEmpty(customUserAgent)
|
||||
? customUserAgent
|
||||
: useBrowserUserAgent
|
||||
? $"PCL2/{ModBase.upstreamVersion}.{ModBase.versionBranchCode} PCLCE/{ModBase.versionStandardCode} Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 Edg/136.0.0.0"
|
||||
: $"PCL2/{ModBase.upstreamVersion}.{ModBase.versionBranchCode} PCLCE/{ModBase.versionStandardCode}";
|
||||
client.Headers.Add("User-Agent", userAgent);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user