Python

使用 https://etherchain.org API

  • August 8, 2017

當我使用 python 3.6 請求https://etherchain.org/api/difficulty時,我得到 HTTPError: Forbidden。有誰知道解決方案?

import json
from urllib.request import urlopen
from pandas.io.json import json_normalize

r_difficulty_eth = 
urlopen('https://etherchain.org/api/difficulty').read().decode('UTF-8')

difficulty_eth_data = json.loads(r_difficulty_eth)

Etherchain 受CloudFlare保護。它試圖阻止對系統的自動請求。這對於 API 來說似乎很愚蠢……無論如何,解決它的方法是讓 Python 在User-Agent請求標頭中表現得好像它是一個正常的 Web 瀏覽器。

import json
import urllib.request

request = urllib.request.Request(url='https://etherchain.org/api/difficulty', 
                            data=None,
                            headers={
                               'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/603.2.4 (KHTML, like Gecko) Version/10.1.1 Safari/603.2.4'
                           })

r_difficulty_eth = urllib.request.urlopen(request).read().decode('UTF-8')
difficulty_eth_data = json.loads(r_difficulty_eth)

引用自:https://ethereum.stackexchange.com/questions/23866