【问题标题】:Python Web3 connect to Ankr Binance Smart Chain API, through user and passwordPython Web3 通过用户和密码连接到 Ankr Binance Smart Chain API
【发布时间】:2021-07-23 22:47:56
【问题描述】:

也许这是一个愚蠢的问题,但对于 web3.js,可以选择使用另一个 API 服务 Ankr,而不是 Infura。 Ankr 允许访问费用较低的 BSC 网络。我似乎无法弄清楚如何通过 python web3 连接到 Ankr,因为它需要使用用户名和密码进行身份验证。当我运行 python 代码时它返回 false。我不确定我应该为 web3.py 使用哪些键,或者调用的语法可能是错误的,当我使用请求库时一切正常,所以地址不是问题。

# Python Code Unsuccessful 
Ankr_bsc_url = 'https............' 
web3 = Web3(Web3.HTTPProvider(Ankr_bsc_url, request_kwargs={'headers': {'Username': user, 'Password': password}}))

print(web3.isConnected())



//Node.js Code web3.js Works
const web3Provider = new Web3.providers.WebsocketProvider(url, {
 headers: { authorization: `Basic ${Buffer.from(`${user}:${password}`).toString('base64')}`}
})

【问题讨论】:

    标签: python-3.x web3py


    【解决方案1】:

    您应该将标头保存在 Session 对象上,并将其作为 HTTPProvider 的参数传递

    from web3 import Web3
    import requests
    
    s = requests.Session()
    s.headers.update({'authorization': 'Basic ZZZZ'})
    
    # HTTPProvider:
    w3 = Web3(Web3.HTTPProvider('https://apis.ankr.com/XXXX/YYYY/binance/full/main', session=s))
    w3.isConnected()
    

    在我的情况下w3.isConnected 返回True

    【讨论】:

    • 首先非常感谢您的回答。其次对于 s.header.update({..... 我在这里为字典用户名和密码放了什么......}),因为打印 s.headers 并不能真正让我了解我使用哪些字典键应该使用。
    • 我确实有同样的问题,在这里解决了:stackoverflow.com/questions/67461924/…我希望这会有所帮助:)
    【解决方案2】:

    我发现以下方法在连接到需要用户名和密码的“基本身份验证”方法时效果很好。

    或者,使用“令牌”方法不需要用户名和密码,这也成功地为您提供了一个 Ankr API 端点。

    from web3 import Web3
    import requests
    import base64
    
    ankr_eth_url = 'INSERT_ANKR_API_ENDPOINT'
    s = requests.Session()
    
    # Make sure to use the Project Username and not your log-in username
    # myProjectUsername:password
    upass = "myProjectUsername:12345678".encode("ascii")
    b64 = base64.b64encode(upass).decode("ascii")
    
    s.headers.update({'Authorization': 'Basic ' + b64})
    
    w3 = Web3(Web3.HTTPProvider(ankr_eth_url, session=s))
    print(w3.isConnected())
    

    【讨论】:

      猜你喜欢
      • 2022-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-03
      • 2021-09-22
      • 2016-06-24
      • 2022-10-21
      • 2018-05-15
      相关资源
      最近更新 更多