привет всем.
Я пытаюсь одним пост-запросом изменить аватар в Steam.
Так должен выглядеть запрос:
Вот такой получается у меня:
Код:
using System.Drawing;
using System.Net;
namespace Test
{
class TestProgram
{
static readonly CookieContainer container = new CookieContainer();
static readonly HttpClient client = new HttpClient(new HttpClientHandler()
{
AutomaticDecompression = DecompressionMethods.All,
CookieContainer = container
});
static async Task Main(string[] args)
{
Image newImage = Image.FromFile(@"D:\Bot files\images\photo_2022-01-24_13-01-11.jpg");
ImageConverter _imageConverter = new ImageConverter();
byte[] paramFileStream = (byte[])_imageConverter.ConvertTo(newImage, typeof(byte[]));
client.DefaultRequestHeaders.Add("Accept", "application/json, text/plain, */*");
client.DefaultRequestHeaders.Add("Referer", "https://steamcommunity.com/id/spaden2k/edit/avatar");
client.DefaultRequestHeaders.Add("Origin", "https://steamcommunity.com");
client.DefaultRequestHeaders.Add("Host", "steamcommunity.com");
client.DefaultRequestHeaders.Add("Sec-Fetch-Dest", "empty");
client.DefaultRequestHeaders.Add("Sec-Fetch-Mode", "cors");
client.DefaultRequestHeaders.Add("Sec-Fetch-Site", "same-origin");
client.DefaultRequestHeaders.Add("Connection", "keep-alive");
client.DefaultRequestHeaders.Add("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3");
var cookies = new Cookie("sessionid", "тут данные", "/", "steamcommunity.com");
container.Add(cookies);
cookies = new Cookie("_ga", "тут данные", "/", "steamcommunity.com");
container.Add(cookies);
cookies = new Cookie("_gid", "тут данные", "/", "steamcommunity.com");
container.Add(cookies);
cookies = new Cookie("steamLoginSecure", "тут данные", "/", "steamcommunity.com");
container.Add(cookies);
cookies = new Cookie("browserid", "тут данные", "/", "steamcommunity.com");
container.Add(cookies);
cookies = new Cookie("steamMachineAuth76561198820241567", "тут данные", "/", "steamcommunity.com");
container.Add(cookies);
cookies = new Cookie("steamRememberLogin", "тут данные", "/", "steamcommunity.com");
container.Add(cookies);
var streamImg = new StreamContent(new MemoryStream(paramFileStream));
streamImg.Headers.Add("Content-Disposition", "form-data; name=\"avatar\"; filename=\"blob\"");
streamImg.Headers.Add("Content-Type", "image/png");
var formContent = new MultipartFormDataContent
{
{streamImg,"avatar","blob"},
};
var response = client.PostAsync("https://steamcommunity.com/actions/FileUploader/", formContent).Result;
Console.ReadKey();
}
}
}


_gaи_gidкуки - это Google аналитика, можете их выбросить, они не относятся к Steam, другими словами это отслеживающий вас мусор. Транспортный заголовокConnectionтоже ни к чему, егоHttpClientсам добавит, если посчитает нужным, и скорее всего он так и сделает. А вотUser-Agentя бы добавилclient.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0");. – aepot May 26 '22 at 19:31{ streamImg, stringContent1, stringContent2,... }. Если ответ был полезен, вы можете принять его галочкой. – aepot May 27 '22 at 13:14Я так заметил, что у меня чаще ошибки происходят из-за куков, поэтому я сделал вход в стим с сохранением куков, теперь они будут только актуальные!
– spaden May 27 '22 at 16:22HttpClientправильно с куками работает, если что. То есть если в процессе работы ему от сервера приходят куки, он вносит их в контейнер. https://ru.stackoverflow.com/q/1178026/373567 – aepot May 27 '22 at 16:25