Вопрос по загрузке фото на фотохостинг imgbb.com get/post методом

Jeronimo

Client
Регистрация
07.01.2014
Сообщения
236
Благодарностей
205
Баллы
43
Всем привет. Снова столкнулся с проблемой при работе с get/post запросами.

Пытаюсь загрузить фото на фотохостинг https://imgbb.com/, но ничего не получается.

Что делаю:

1. Посылаю get запрос к сайту https://imgbb.com/ и вытаскиваю куки из запроса
2. Делаю POST запрос со следующими параметрами:

upload_2019-1-12_16-31-51.png


upload_2019-1-12_16-32-8.png


В результате запроса получаю такую ошибку:

upload_2019-1-12_16-33-31.png


Уже по всякому пробовал делать запросы, никак не могу понять в чём ошибка.

Ещё вопрос, правильно ли я понял, что параметр ------WebKitFormBoundaryHNyjcSAjxtJvmNAd можно сгенерировать любой? По крайней мере в сниффере я этот параметр не нашёл.

Всем заранее спасибо за ответы.

Шаблон прикрепляю
 

Вложения

nole

Client
Регистрация
19.11.2010
Сообщения
368
Благодарностей
217
Баллы
43
У тебя запрос не полный, как минимум после изображения должен быть закрывающий ------WebKitFormBoundaryHNyjcSAjxtJvmNAd--
Эту часть не видно в мониторе трафика, это баг, такие запросы надо смотреть в фидлере и другом сниффере
 
  • Спасибо
Реакции: Jeronimo

Jeronimo

Client
Регистрация
07.01.2014
Сообщения
236
Благодарностей
205
Баллы
43
У тебя запрос не полный, как минимум после изображения должен быть закрывающий ------WebKitFormBoundaryHNyjcSAjxtJvmNAd--
Эту часть не видно в мониторе трафика, это баг, такие запросы надо смотреть в фидлере и другом сниффере
Даже с ------WebKitFormBoundaryHNyjcSAjxtJvmNAd-- не выходит.
 

nole

Client
Регистрация
19.11.2010
Сообщения
368
Благодарностей
217
Баллы
43

Jeronimo

Client
Регистрация
07.01.2014
Сообщения
236
Благодарностей
205
Баллы
43

nole

Client
Регистрация
19.11.2010
Сообщения
368
Благодарностей
217
Баллы
43
+ тип данных у тебя неверный в запросе, сравни в оригиналом, там похоже мультипарт должен быть
 
  • Спасибо
Реакции: Jeronimo

Jeronimo

Client
Регистрация
07.01.2014
Сообщения
236
Благодарностей
205
Баллы
43
А вот что отправляется через фидлер:

upload_2019-1-12_16-46-22.png
 

nole

Client
Регистрация
19.11.2010
Сообщения
368
Благодарностей
217
Баллы
43
вот Content-Type поставь такое же в поле типа данных, WebKitFormBoundaryHNyjcSAjxtJvmNAd эта часть должна быть такая же как в теле запроса
 

Jeronimo

Client
Регистрация
07.01.2014
Сообщения
236
Благодарностей
205
Баллы
43
+ тип данных у тебя неверный в запросе, сравни в оригиналом, там похоже мультипарт должен быть
Менял на мультипарт и на мультипарт дата форм. Всё равно не получается
 

nole

Client
Регистрация
19.11.2010
Сообщения
368
Благодарностей
217
Баллы
43
Это данные, которые отправляются после изображения, в charles видно все
upload_2019-1-12_16-56-54.png
 

nole

Client
Регистрация
19.11.2010
Сообщения
368
Благодарностей
217
Баллы
43
Рабочий шаблон
 

Вложения

Jeronimo

Client
Регистрация
07.01.2014
Сообщения
236
Благодарностей
205
Баллы
43
Благодарю. Уже получилось самостоятельно реализовать. Действительно, я в фидлере не все передаваемые данные увидел. Теперь знаю где смотреть
 

andropovleva

Client
Регистрация
23.11.2019
Сообщения
580
Благодарностей
45
Баллы
28

andropovleva

Client
Регистрация
23.11.2019
Сообщения
580
Благодарностей
45
Баллы
28

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 794
Благодарностей
2 466
Баллы
113
Последнее редактирование:

andropovleva

Client
Регистрация
23.11.2019
Сообщения
580
Благодарностей
45
Баллы
28
так на запросах грузит же?
 

andropovleva

Client
Регистрация
23.11.2019
Сообщения
580
Благодарностей
45
Баллы
28

andropovleva

Client
Регистрация
23.11.2019
Сообщения
580
Благодарностей
45
Баллы
28
Еще такой вопрос, когда руками загружается фото там выбирается никогда не удалять, тут же какой параметр выбирается?
 

Jurtsche

Client
Регистрация
04.12.2015
Сообщения
30
Благодарностей
11
Баллы
8
Подниму тему , тем более, что предидущий вариант загрузки не работает.
Попробовал сделать на c# , но похоже , что то делаю не так, тоже не работает . Помогите советом.
C#:
var key = project.Variables["key"].Value;
var image = project.Variables["Base64"].Value;
string data = string.Empty;
data += "--8d769bc76365cd4\n";
 resRequest = new[] {ZennoPoster.HttpPost("https://api.imgbb.com/1/upload?key=" + key + "&image=" + image +",     
    data,
    "multipart/form-data",
    "",
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
    30000,
    "",
    "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0",
    true,
    5,}
    new[] {"Host: api.imgbb.com"} );
 
  • Спасибо
Реакции: Sho

ivan777

Client
Регистрация
10.12.2018
Сообщения
76
Благодарностей
24
Баллы
8
заплачу за готовый шаблон
 

selectel56

Client
Регистрация
11.12.2016
Сообщения
100
Благодарностей
53
Баллы
28
  • Спасибо
Реакции: White trash

White trash

Client
Регистрация
09.06.2014
Сообщения
835
Благодарностей
364
Баллы
63

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 794
Благодарностей
2 466
Баллы
113
Было бы неплохо.
В GAS добавляем System.Net.Http.
110477


В директивы:
C#:
using System.Net.Http;
using System.Net.Http.Headers;
110478


В кубик пихаем код, расположенный ниже, заменяя только путь к картинке.
C#:
string path = @"C:\Users\User\Desktop\картинка.jpg"; // Путь к картинке
string url = @"https://imgbb.com";
var auth_token = Regex.Match(ZennoPoster.HttpGet(url), @"(?<=PF\.obj\.config\.auth_token="").*?(?="";)").Value;

var sBoundary = DateTime.Now.Ticks.ToString("x");
var content = new MultipartFormDataContent(sBoundary);
    content.Add(new StreamContent(File.OpenRead(path)), name: "source", fileName: Path.GetFileName(path));
    content.Add(new StringContent("file"), "type");
    content.Add(new StringContent("upload"), "action");
    content.Add(new StringContent(string.Format(@"{0}",(int)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds)), "timestamp");
    content.Add(new StringContent("P6D"), "expiration");
    content.Add(new StringContent(auth_token), "auth_token");
    //string proxy = "127.0.0.1:8888";
string response = ZennoPoster.HTTP.Request(
    method: ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.POST,
    url: url+"/json",
    content: content.ReadAsByteArrayAsync().Result, 
    contentPostingType: string.Format("multipart/form-data;boundary={0}", sBoundary),
   // proxy: proxy,
    Encoding: "UTF-8",
    respType:ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    Timeout: 30000,
    Cookies: string.Empty,
   // UserAgent: UserAgent,
    AdditionalHeaders: new string[0],
    UseOriginalUrl: true,
    throwExceptionOnError: true,
    removeDefaultHeaders: true
  );
    
project.Json.FromString(response);
return project.Json.image.url;
В результате получаем:
110481
110479


Что собственно и будет возвращать нужную картинку.

В этой строчке кода указано, чтобы картинка удалилась через 6 дней - менять при необходимости.:
content.Add(new StringContent("P6D"), "expiration");
 
Последнее редактирование:
  • Спасибо
Реакции: doc и White trash

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)