python-requests从0.12.1升级到2.7.0后中断

时间:2015-08-19 15:54:28

标签: python authentication post python-requests

  1. 关于kali 1: Linux2上的Python 2.7.3(默认,2014年3月13日,11:03:55)[GCC 4.7.2]。 请求模块的版本为0.12.1

  2. 现在关于kali 2: 在linux2上的Python 2.7.9(默认,2015年3月1日,12:57:24)[GCC 4.9.2]。 请求模块版本为2.7.0

  3. 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

0 个答案:

没有答案