Автор Тема: HTTP аутентификация через ключ/подпись  (Прочитано 697 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ZlojBoter [?]

  • Новичок
  • *
  • Сообщений: 38
  • Репутация: 0
    • Награды
Имеется криптобиржа, с апидоступом (https://wex.nz). "Пиши ботов - нехочу". Для доступа к торговой части, требуется аутентификация.  Имеются с генерированные для пользователя ключ/подпись. Для каждого запроса необходима аутентификация.  Аутентификация происходит посредством отправки следующих HTTP-заголовков:
Key — API-ключ. ХХХХХХХ...........
Sign подпись ХХХХХХХ.....
Еще есть некоторые POST параметры, которые нужно отправлять для каждого запроса(кроме всего прочего подписанные секретным ключом с помощью HMAC-SHA512). 
Проблема, заключается в том, что я себе очень слабо представляю всю архитектуру таких запросов.  :stars: 
Мне необходима помощь, какие-то наводки на функции, и желательно с примерами использования с ключом/подписью/и постпараметрами. Буду рад любой помощи.
Проблем с программированием у меня по большому счету нет, это не просьба типа : "напишите все за меня". Проблема в почти полном непонимании системы подобного рода запросов...
Заранее благодарен  :)

Русское сообщество AutoIt

HTTP аутентификация через ключ/подпись
« Отправлен: Апрель 11, 2018, 21:38:27 »

Оффлайн pww2000 [?]

  • Новичок
  • *
  • Сообщений: 16
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
У меня так заработало (если еще актуально):

Код: AutoIt [Выделить]
$key="oiuhiouhoiui-5646546-87989"
$key2="gfhjgfhgfhfghfjgfgfggg6tr76r7r5ri7r756r75"
$aHost= "https://wex.nz/tapi"

$aPost="getInfo"

$a= Post($aPost,$key,$key2)

ConsoleWrite ($a&@CR)
;{"success":1,"return":{"funds":{"usd":0.00146455,"btc":0.00956002,"ltc":0.00069822,"nmc":0,"rur":0.00654232,"eur":0,"nvc":0,"ppc":0,"dsh":0,"eth":0,"bch":0,"usdet":0,"btcet":0,"ltcet":0.00043177,"ethet":0,"nmcet":0,"nvcet":0,"ppcet":0,"dshet":0,"ruret":0,"euret":0,"bchet":0,"zec":0,"usdt":0},"rights":{"info":1,"trade":1,"withdraw":0},"transaction_count":0,"open_orders":0,"server_time":1526039313}}


Func post($Method, $apikey, $secretkey, $MethodOptions="")

    $NonceUnique = 4;  тут надо доделать счетчик
;~ {"success":0,"error":"invalid nonce parameter; on key:4, you sent:'4', you should send:5"}

    $aHost = "https://wex.nz/tapi/"
    $postdata = "method=" & $Method & $MethodOptions & "&nonce=" & $NonceUnique
    $APIsign = _HashHMAC("SHA512", $postdata, $secretkey, False)
    Global $oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1')
    if @error<>0 Then exit
    $oHTTP.Open("POST", $aHost, false)
    $oHTTP.SetRequestHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)")
    $oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
    $oHTTP.SetRequestHeader("Key", $apikey)
    $oHTTP.SetRequestHeader("Sign",$APIsign)
    $oHTTP.Send($postdata)
    Return $oHTTP.ResponseText
    $oErrorHandler = 0

EndFunc

Func _HashHMAC($sAlgorithm, $bData, $bKey, $bRaw_Output = False)
;~     Local $oHashHMACErrorHandler = ObjEvent("AutoIt.Error", "_HashHMACErrorHandler")
    Local $oHMAC = ObjCreate("System.Security.Cryptography.HMAC" & $sAlgorithm)
    If @error Then SetError(1, 0, "")
    $oHMAC.key = Binary($bKey)
    Local $bHash = $oHMAC.ComputeHash_2(Binary($bData))
    Return SetError(0, 0, $bRaw_Output ? $bHash : StringLower(StringMid($bHash, 3)))
EndFunc   ;==>_HashHMAC
 

« Последнее редактирование: Май 11, 2018, 15:14:36 от pww2000 »

Русское сообщество AutoIt

Re: HTTP аутентификация через ключ/подпись
« Ответ #1 Отправлен: Май 11, 2018, 09:37:46 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
3 Ответов
3069 Просмотров
Последний ответ Декабрь 14, 2011, 18:29:19
от Yuriy
0 Ответов
2177 Просмотров
Последний ответ Март 01, 2012, 03:09:36
от Romus
0 Ответов
2360 Просмотров
Последний ответ Февраль 04, 2013, 11:00:16
от timsky
1 Ответов
2277 Просмотров
Последний ответ Июнь 28, 2013, 09:40:04
от madmasles
1 Ответов
2443 Просмотров
Последний ответ Июль 01, 2013, 09:31:57
от C2H5OH
0 Ответов
1129 Просмотров
Последний ответ Июнь 28, 2013, 19:28:18
от madmasles
0 Ответов
984 Просмотров
Последний ответ Июль 03, 2014, 18:46:32
от Elena1989
5 Ответов
2642 Просмотров
Последний ответ Июнь 04, 2016, 19:10:57
от k790
1 Ответов
945 Просмотров
Последний ответ Октябрь 17, 2016, 16:32:56
от Vovsla
1 Ответов
1279 Просмотров
Последний ответ Октябрь 15, 2017, 00:41:09
от Garrett