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

  • Автор темы Автор темы Jeronimo
  • Дата начала Дата начала

Jeronimo

Client
Регистрация
07.01.2014
Сообщения
239
Реакции
204
Баллы
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 можно сгенерировать любой? По крайней мере в сниффере я этот параметр не нашёл.

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

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

Вложения

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

Даже с ------WebKitFormBoundaryHNyjcSAjxtJvmNAd-- не выходит.
 
+ тип данных у тебя неверный в запросе, сравни в оригиналом, там похоже мультипарт должен быть
 
  • Спасибо
Реакции: Jeronimo
А вот что отправляется через фидлер:

upload_2019-1-12_16-46-22.png
 
вот Content-Type поставь такое же в поле типа данных, WebKitFormBoundaryHNyjcSAjxtJvmNAd эта часть должна быть такая же как в теле запроса
 
+ тип данных у тебя неверный в запросе, сравни в оригиналом, там похоже мультипарт должен быть

Менял на мультипарт и на мультипарт дата форм. Всё равно не получается
 
Это данные, которые отправляются после изображения, в charles видно все
upload_2019-1-12_16-56-54.png
 
Рабочий шаблон

Благодарю. Уже получилось самостоятельно реализовать. Действительно, я в фидлере не все передаваемые данные увидел. Теперь знаю где смотреть
 
так на запросах грузит же?
 
Еще такой вопрос, когда руками загружается фото там выбирается никогда не удалять, тут же какой параметр выбирается?
 
Подниму тему , тем более, что предидущий вариант загрузки не работает.
Попробовал сделать на 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
заплачу за готовый шаблон
 
Было бы неплохо.
В 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");
 
Последнее редактирование:
  • Спасибо
Реакции: Agent, doc и White trash
Подскажите, а как вместо пути к картинке вписать переменную?
Вот так string path = @"project.Variables["var1"].Value"; не работает.
Компиляция кода Ошибка в действии "CS1002" "; expected". [Строка: 1; Cтолбец:
 
Последнее редактирование:
Спасибо большое! Работает.
А чтобы картинка никогда не удалялась, я так понимаю, нужно в таком виде эту строчку написать?
C#:
Развернуть Свернуть Копировать
content.Add(new StringContent(""), "expiration");
 
Спасибо большое! Работает.
А чтобы картинка никогда не удалялась, я так понимаю, нужно в таком виде эту строчку написать?
C#:
Развернуть Свернуть Копировать
content.Add(new StringContent(""), "expiration");
Возможно стоит просто закомментировать эту строчку или удалить её - когда время удаления не указывается - в запросе нет этого параметра.
 
  • Спасибо
Реакции: Agent
Что-то поломалось :( Подскажите, как исправить? Вот такая ошибка:
Выполнение действия CSharp OwnCode: "ZennoLab.JXParser.JsonDynamic" не содержит определения для "image"
 
Что-то поломалось :( Подскажите, как исправить? Вот такая ошибка:
Выполнение действия CSharp OwnCode: "ZennoLab.JXParser.JsonDynamic" не содержит определения для "image"
Посмотрите в проджект мейкере, в окне мониторнг трафика что именно за объект присылает сайт в ответ.
Ошибка говорит что поля image в этого объекта нет (или сайт что-то изменил, или запрос не доходит например).
 
Вроде, заработало. Похоже, сбой какой-то был. Спасибо.
 
  • Спасибо
Реакции: BAZAg

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