Я получил заказ от отца, который хочет создать сайт с играми который он проверил, чтобы его дети могли только на него заходить. Идея в том, чтобы перенаправлять запросы с этого сайта на другой, где игры уже размещены. Однако у меня возникла проблема: когда я пытаюсь обратиться к своему ASP.NET серверу через публичный IP (домен или IP сервера), игры не загружаются. А если использовать локальный IP, то все работает без проблем. Я не совсем понимаю, как это работает, ведь IP-адреса разные, а сервер один и тот же. У меня есть код (который я собираюсь переделать), я просто набросал его за 5 минут, чтобы проверить, будет ли он работать с играми от Яндекса.
public class ProxyController : Controller
{
static string DecompressGZip(byte[] compressedData)
{
using (var compressedStream = new MemoryStream(compressedData))
using (var decompressionStream = new GZipStream(compressedStream, CompressionMode.Decompress))
using (var resultStream = new MemoryStream())
{
decompressionStream.CopyTo(resultStream);
return Encoding.UTF8.GetString(resultStream.ToArray());
}
}
public IActionResult Index(string path)
{
HttpClient httpClient = new HttpClient();
string url = string.Empty;
if (path == "sdk.js")
{
url = "https://app-362399.games.s3.yandex.net/" + path;
}
else
{
url = "https://app-362399.games.s3.yandex.net/362399/g7dwevd9rso4umvjdg6wcuuno719p8fz/" + path;
if (path == "index.html")
{
url += "?lang=ru&sdk=%2Fsdk%2F_%2Fv2.aad3c6478979ba247ee7.js";
var respo2 = httpClient.GetAsync(url).Result;
Response.StatusCode = (int)respo2.StatusCode;
var content2 = respo2.Content.ReadAsByteArrayAsync().Result;
var html = DecompressGZip(content2);
return Content(html, "text/html");
}
}
var respo = httpClient.GetAsync(url).Result;
foreach (var item in respo.Content.Headers)
{
Response.Headers.Add(item.Key, new Microsoft.Extensions.Primitives.StringValues(item.Value.ToArray()));
}
Response.StatusCode = (int)respo.StatusCode;
var content = respo.Content.ReadAsByteArrayAsync().Result;
return File(content, respo.Content.Headers.ContentType?.ToString() ?? "application/json");
}
}
Это такая защита у Яндекса?