using System.Net.Http;
using System.Net.Http.Headers;
using System.Text.Json;
var request = new // По хорошему надо вынести в отдельный класс или record
{
sinceDateTimeUtc = new DateTime(2020, 01, 01, 0, 0, 0),
tillDateTimeUtc = new DateTime(2022, 12, 11, 0, 0, 0),
};
var httpRequest = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://test/test/test/sync?test&operation=test"),
Headers = {
Authorization = AuthenticationHeaderValue.Parse("1sav23456vdsa7vsa8"),
Accept = {MediaTypeWithQualityHeaderValue.Parse("application/json")}
},
Content = new StringContent(JsonSerializer.Serialize(request))
{
Headers = {
ContentType = MediaTypeHeaderValue.Parse("application/json"),
},
},
};
// По возможности httpClient нужно переиспользовать. Инициализируй 1 раз, сделай побольше запросов, а в конце Dispose()
using var httpClient = new HttpClient();
var response = await httpClient.SendAsync(httpRequest);
// Дальше работаем с response так, как нам нужно
var contentString = await response.Content.ReadAsStringAsync();
Console.WriteLine(contentString);
using System;
using System.Text;
using System.Security.Cryptography;
var attachmentBytes = File.ReadAllBytes("image.png");
var attachment = Convert.ToBase64String(attachmentBytes);
var secretKey = "...";
var str = $"st.attachment={attachment}{secretKey}";
var signature = Md5(str);
Console.WriteLine(signature);
// Функция, полностью повторяющая поведение md5 из php
static string Md5(string data) {
var bytes = Encoding.UTF8.GetBytes(data);
var hash = MD5.HashData(bytes);
return string.Create<byte[]>(hash.Length*2, hash, static (span, hash) => {
for(var i=0; i < hash.Length; i++) {
var slice = span.Slice(i*2, 2);
var octet = hash[i];
octet.TryFormat(slice, out _, "x2");
}
});
}
Вопрос заключается в том, используется ли в серьезных проектах подход использования апи не только для сторонних приложений, но и для самого сайта?
А если их нет, то как можно выйти из этой ситуации?
Я хочу понять возможен в игре мультиаккаунт и бан по железу.