关于kali 1: Linux2上的Python 2.7.3(默认,2014年3月13日,11:03:55)[GCC 4.7.2]。 请求模块的版本为0.12.1
现在关于kali 2: 在linux2上的Python 2.7.9(默认,2015年3月1日,12:57:24)[GCC 4.9.2]。 请求模块版本为2.7.0
cryptsy很容易api_query:
import hashlib
import hmac
import requests
import time
import urllib
def api_query( method, req = {}):
# API settings
key = API_KEY # your API-key
secret = API_SECRET # your Secret-key
req['method'] = method
req['nonce'] = int( time.time() )
# generate the POST data string
post_data = urllib.urlencode( req )
sign = hmac.new( secret, post_data, hashlib.sha512)
# generate the extra headers
headers = { 'Sign': sign.hexdigest(), 'Key': key }
url = 'https://api.cryptsy.com/api'
print 'post_data = ' + post_data
print 'headers = ' + str( headers )
r = requests.post( url, data=post_data, headers = headers )
print r
for i in r.__dict__:
print ''
print i, r.__dict__[i]
return r.text
它适用于kali 1,但kali 2 - NOT。
>>> print api_query("getinfo")
{"success":"0","error":"Unable to Authorize Request - Check Your Post Data"}
我第一次在qemu推出kali 1并开始比较两个相似的代码。我已将nonce
设置为一个数字并测试了两个post_datas
之间的差异。一切都是平等的。甚至Sign(kali1) == Sign(kali2)
。
我将地址从api.cryptsy.com更改为127.0.0.1。我可以看到,那个:
0.12.1将Data
作为一个编码字符串发送。 - 很好。
2.7.0将字符串转换回HTML Form URL Encoded
。