Авторизация по API с отправкой HTTP-заголовка. Помогите кто может!

Поддержка
  • Привет, форумчане
    Не простой вопрос и даже просьба к вам у меня сегодня.
    Нужно разобраться как пройти авторизацию на бирже Битмекс по API.
    Один чел мне сказал, что это делается путем отправки HTTP-заголовков.
    В качестве исходных данных имеется:

    1. apiKey = 11111111111 и apiSecret = 222222222222222 (это для примера). Они указаны в личном кабинете биржи и у каждого уникальные. С их помощью нужно авторизоваться.
    2. Документация биржи. На сайте расписано заумным языком как происходит авторизация на биржи по API и даны ссылки на примеры (на гитхабе) рабочего кода авторизации на разных языках: https://www.bitmex.com/app/apiKeysUsage#-
      Далее в документации имеется информация по POST и GET запросам: https://www.bitmex.com/api/explorer/#/
      Интересует в первую очередь запрос на создание ордера (мне главное принцип понять на примере, а там разберусь сам наверное). Для этого можно сразу перейти в пункт в разноцветном раскрывающемся списке «Order : Placement, Cancellation, Amending, and History». Далее POST запрос «Create a new order.». Будет куча описания и ниже поля. В качестве необходимых нужно заполнить следующие поля: symbol (значение будет XBTUSD), side (значение Buy, т.е. покупка), orderQty (значение 1, т.е. 1 доллар), price (пускай будет 5000). После заполнения ниже нажимаем кнопку «Try it out!» и нам формируют данные (Curl, Request URL и прочее). Куда их вставлять и девать мне не понятно!
      Запросы на создание ордера должны проходить одновременно с авторизацией, как я понимаю.

    И вот на основе этих данных и документации нужно сформировать HTTP (или POST) запрос на создание ордера (в Басе переходим в меню HTTP-клиент, -> POST-запрос). То бишь как то прописать это в бас. И прописать я полагаю нужно вот сюда (см. скриншот). Т.е. прописать URL запроса, заголовок и возможно Post Data. Что конкретно писать в моем случае я не понимаю.

    alt text

    Для тестирования можно использовать демо версию биржи: https://testnet.bitmex.com/app/trade/XBTUSD

    Прошу не менять пароль, т.к. это демо аккаунт и реальных денег там нет.
    Было бы неплохо если б кто нибудь обучающими видео BAS для API поделился. Был бы рад.

  • Чувак, это слишком сложно. Здесь в основном дают советы по правильной настройке функционала БАС, по корректной логике выполнения скрипта, отладке ошибок. Но ты превзашел всех: ты хочешь, чтобы мы изучили документацию API сайта и дали готовое решение? Иногда нужно учиться самому. И прежде, чем приступать к запросам на HTTP, изучи, как это впринципе работает, тогда не будет возникать вопросов на этот счет.
    Ну может, кто-то из старожилов форума и найдет время на это.

  • Тебе не поможет просто пост отправить, судя по их документации надо например нод использовать...

  • This post is deleted!
  • @allive Вы о чем вообще? оно просто не будет работать не используя нод потому что требуется каждый раз SHA256 высчитывать.

  • @botovod А не думал почитать о пост/гет запросах. Там нет ничего сложного. А раскуривать огромное api это биржа за спасибо врядли кто-то будет.

  • This post is deleted!
  • @denis_krsk тут требуется каждый раз SHA256 высчитывать. id кликка и его ловить или ес4е как логин обзовут и тамак написана фсе)) с чего там считает на странице или есче как но тему решили значит такк

  • This post is deleted!
  • This post is deleted!
  • @allive Дружище ты вообще о чем?!

  • This post is deleted!
  • This post is deleted!
  • сами разбирайтесь

  • @olegtut said in Авторизация по API с отправкой HTTP-заголовка. Помогите кто может!:

    Чувак, это слишком сложно. Здесь в основном дают советы по правильной настройке функционала БАС, по корректной логике выполнения скрипта, отладке ошибок. Но ты превзашел всех: ты хочешь, чтобы мы изучили документацию API сайта и дали готовое решение? Иногда нужно учиться самому. И прежде, чем приступать к запросам на HTTP, изучи, как это впринципе работает, тогда не будет возникать вопросов на этот счет.

    С простым API мне понятно как работать, уже писал скрипты: API-ключ указывается в URL ссылке и дополнительные параметры. Затем просто выполняем переход по ссылке и получаем ответ в формате JSON. На некоторых биржах так и сделано, но только не на Битмекс.
    Рад бы изучить. Жаль уроки у автора только для премиум пользователей, я таким не являюсь. Мож поделитесь?

    @root said in Авторизация по API с отправкой HTTP-заголовка. Помогите кто может!:

    Вы о чем вообще? оно просто не будет работать не используя нод потому что требуется каждый раз SHA256 высчитывать.

    Мне по сути придется свой сервер поднимать на основе их скриптов, т.е. мой комп будет работать как сервер? Их скрипты по моему как раз это и делают. Надо только разобраться куда чего вставлять.

  • @botovod said in Авторизация по API с отправкой HTTP-заголовка. Помогите кто может!:

    Жаль уроки у автора только для премиум пользователей

    А где Вы нашли уроки только для премиум? я премиум но нигде не встречал уроков именно для этой категории.
    Все что видел есть на ютубе и там оно доступно для всех

  • @root said in Авторизация по API с отправкой HTTP-заголовка. Помогите кто может!:

    @allive Вы о чем вообще? оно просто не будет работать не используя нод потому что требуется каждый раз SHA256 высчитывать.

    можно и без нод. https://passwordsgenerator.net/sha256-hash-generator/ запрос туда и все.

  • @botovod said in Авторизация по API с отправкой HTTP-заголовка. Помогите кто может!:

    Мне по сути придется свой сервер поднимать на основе их скриптов, т.е. мой комп будет работать как сервер? Их скрипты по моему как раз это и делают. Надо только разобраться куда чего вставлять.

    не нужно этого. простое клиентское приложение, в документации все подробно расписано

  • Спасибо за подсказки ребята. У меня немного прояснилось как это должно выглядеть.
    Решил попробовать через Node JS, в БАСе это меню "встроенные языки" -> "Node.js". Туда я добавил программный код, который предлагает БИТМЕКС на гитхабе: взято тут https://github.com/BitMEX/api-connectors/tree/master/official-http/node-request

    var request = require('request');
    var crypto = require('crypto');
    
    var apiKey = "API_KEY";
    var apiSecret = "API_SECRET";
    
    var verb = 'POST',
      path = '/api/v1/order',
      expires = new Date().getTime() + (60 * 1000), // 1 min in the future
      data = {symbol:"XBTUSD",orderQty:1,price:590,ordType:"Limit"};
    
    // Pre-compute the postBody so we can be sure that we're using *exactly* the same body in the request
    // and in the signature. If you don't do this, you might get differently-sorted keys and blow the signature.
    var postBody = JSON.stringify(data);
    
    var signature = crypto.createHmac('sha256', apiSecret).update(verb + path + expires + postBody).digest('hex');
    
    var headers = {
      'content-type' : 'application/json',
      'Accept': 'application/json',
      'X-Requested-With': 'XMLHttpRequest',
      // This example uses the 'expires' scheme. You can also use the 'nonce' scheme. See
      // https://www.bitmex.com/app/apiKeysUsage for more details.
      'api-expires': expires,
      'api-key': apiKey,
      'api-signature': signature
    };
    
    const requestOptions = {
      headers: headers,
      url:'https://testnet.bitmex.com'+path,
      method: verb,
      body: postBody
    };
    
    request(requestOptions, function(error, response, body) {
      if (error) { console.log(error); }
      console.log(body);
    });
    

    API_KEY и API_SECRET разумеется заменил на свои рабочие значения.
    Но БАС выдает ошибку: Cannot find module 'request'
    В чем ошибка и как исправить?

  • @botovod Node js говорит, что у тебя не установлен модуль request и скорее всего ещё crypto.

  • 0 Votes
    1 Posts
    249 Views
  • 0 Votes
    2 Posts
    416 Views
  • HTTP cookie

    Поддержка
    1 Votes
    1 Posts
    330 Views
  • 0 Votes
    4 Posts
    623 Views
  • http запросы

    Поддержка
    0 Votes
    19 Posts
    5677 Views