Ropsten 网络中禁止 Etherscan API 请求 403
Posted
技术标签:
【中文标题】Ropsten 网络中禁止 Etherscan API 请求 403【英文标题】:Etherscan API request 403 forbidden in Ropsten network 【发布时间】:2021-11-17 13:58:10 【问题描述】:我正在尝试向 Ropsten 网络中的 Etherscan API 发送请求,但它无法正常工作,因为它显示 403 错误:
response = requests.get(
"https://api-ropsten.etherscan.io/api",
params=
"module": "account",
"action": "balance",
"address": "0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae",
"tag": "latest",
"apikey": "MyApiKey",
,
)
这很尴尬,因为当我从 Postman 使用这个 url 做同样的事情时,它可以工作:
https://api-ropsten.etherscan.io/api?module=account&action=balance&address=0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae&tag=latest&apikey=MyApiKey
而且,当我向以太坊主网发出同样的请求时,它也能正常工作:
response = requests.get(
"https://api.etherscan.io/api",
params=
"module": "account",
"action": "balance",
"address": "0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae",
"tag": "latest",
"apikey": "MyApiKey",
,
)
【问题讨论】:
愚蠢的问题,但是您正在在 pythonrequests.get()
中使用实际的 API 密钥? HTTP 403 表示Forbidden。
是的,MyApiKey 代表来自 Etherscan 的 API 密钥。我猜它应该可以工作......
【参考方案1】:
我在同样的问题上苦苦挣扎。对于其他正在苦苦挣扎的人,我找到了答案here。本质上,Etherscan 会阻止不提供 User-agent
的请求,因此如果使用 Python requests 模块,请添加 User-agent
标头属性。
response = requests.get(
"https://api-ropsten.etherscan.io/api",
params=
"module": "account",
"action": "balance",
"address": "0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae",
"tag": "latest",
"apikey": "API_KEY",
,
headers='User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (Khtml, '
'like Gecko) Chrome/50.0.2661.102 Safari/537.36')
【讨论】:
以上是关于Ropsten 网络中禁止 Etherscan API 请求 403的主要内容,如果未能解决你的问题,请参考以下文章
403 客户端错误:禁止访问 url:https://ropsten.infura.io/v3/PROJECT_ID
如何使用 UniswapV2Router02 合约用 swapExactTokensForETH() 将 Token 换成 ETH
智能合约实战 solidity 语法学习 11 [ 以太坊发币 验证合约 体验下过程 ] 附代码