新聞中心
防止濫用
如果您開(kāi)始收到 Cloudflare 錯(cuò)誤,例如 Cloudflare 錯(cuò)誤 1020 - 很可能您被我們的濫用預(yù)防系統(tǒng)標(biāo)記,并且 Cloudflare 代表我們阻止了您的訪問(wèn)。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),陽(yáng)西企業(yè)網(wǎng)站建設(shè),陽(yáng)西品牌網(wǎng)站建設(shè),網(wǎng)站定制,陽(yáng)西網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,陽(yáng)西網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
您可能還會(huì)看到其他錯(cuò)誤消息。
以下是您被暫時(shí)禁止的幾種情況。
- 如果您正在發(fā)送請(qǐng)求,盡管您的密鑰已經(jīng)受到速率限制,我們可能會(huì)暫時(shí)禁止您。 例如,假設(shè)您的計(jì)劃允許您每秒執(zhí)行 30 個(gè)請(qǐng)求。 如果您嘗試在同一秒內(nèi)發(fā)出 200 個(gè)請(qǐng)求 - 您很可能會(huì)被暫時(shí)禁止。
- 每個(gè)項(xiàng)目使用一個(gè)密鑰。 例如,如果您創(chuàng)建 100 個(gè)免費(fèi)帳戶并使用這些帳戶的密鑰發(fā)送請(qǐng)求 - 與同一項(xiàng)目相關(guān)的所有帳戶都將被禁止。
- 如果您認(rèn)為自己被錯(cuò)誤地暫時(shí)禁止,請(qǐng)發(fā)送電子郵件至 [email protected],我們會(huì)盡快為您提供幫助。
如何避免被封號(hào)?
- 不要使用超過(guò) 1 個(gè) Moralis 帳戶。
- 在您的應(yīng)用程序中實(shí)施速率限制邏輯,這樣您就不會(huì)嘗試執(zhí)行超出計(jì)劃允許的請(qǐng)求。
- 如果您有任何問(wèn)題,請(qǐng)發(fā)送電子郵件至 [email protected]。
請(qǐng)求權(quán)重
所有 Moralis 計(jì)劃對(duì)您每月可以提出的請(qǐng)求數(shù)量都有很大的限制。 您有多少包含的請(qǐng)求取決于您擁有的計(jì)劃,請(qǐng)查看定價(jià)頁(yè)面了解更多詳細(xì)信息。
在大多數(shù)情況下,對(duì) Speedy Nodes 或 Web3 API 的一次請(qǐng)求計(jì)為對(duì)您的每月配額或允許的速率限制的一次請(qǐng)求。
但是,一些 Speedy Node 方法和 API 請(qǐng)求的計(jì)算量非常大,因此算作多個(gè)請(qǐng)求。
通過(guò)給予一些繁重的要求更高的權(quán)重,我們確保您只為使用的東西付費(fèi),而不是多花一分錢(qián) - 期間! 通過(guò)這種方式,您可以獲得大多數(shù)用例的廉價(jià)請(qǐng)求,同時(shí)我們可以通過(guò)權(quán)衡計(jì)算成本高昂的端點(diǎn)來(lái)保護(hù)我們的系統(tǒng)免受濫用。
有關(guān)加權(quán)的 Speedy Node 方法和 API 端點(diǎn)的詳細(xì)信息,請(qǐng)參閱下表。
快速節(jié)點(diǎn)請(qǐng)求
Moralis Speedy 節(jié)點(diǎn)的請(qǐng)求限制為每批 50 個(gè)請(qǐng)求。
Method | Cost |
eth_maxPriorityFeePerGas | 1 request |
eth_getTransactionReceipt | 2 requests |
eth_getUncleByBlockHashAndIndex | 2 requests |
eth_getUncleByBlockNumberAndIndex | 2 requests |
eth_getTransactionByBlockHashAndIndex | 2 requests |
eth_getTransactionByBlockNumberAndIndex | 2 requests |
eth_getUncleCountByBlockHash | 2 requests |
eth_getUncleCountByBlockNumber | 2 requests |
web3_clientVersion | 2 requests |
web3_sha3 | 2 requests |
eth_getBlockByNumber | 2 requests |
eth_getStorageAt | 2 requests |
eth_getTransactionByHash | 2 requests |
trace_get | 2 requests |
eth_gasPrice | 2 requests |
eth_getBalance | 2 requests |
eth_getCode | 2 requests |
eth_getFilterChanges | 2 requests |
eth_newBlockFilter | 2 requests |
eth_newFilter | 2 requests |
eth_newPendingTransactionFilter | 2 requests |
eth_getBlockTransactionCountByHash | 2 requests |
eth_getBlockTransactionCountByNumber | 2 requests |
eth_getProof | 2 requests |
eth_getBlockByHash | 2 requests |
trace_block | 3 requests |
parity_getBlockReceipts | 3 requests |
eth_getTransactionCount | 3 requests |
eth_call | 3 requests |
trace_transaction | 3 requests |
eth_getFilterLogs | 8 requests |
eth_getLogs | 8 requests |
trace_call | 8 requests |
trace_callMany | 8 requests |
trace_rawTransaction | 8 requests |
trace_filter | 8 requests |
eth_estimateGas | 9 requests |
eth_sendRawTransaction | 25 requests |
debug_traceTransaction | 31 requests |
trace_replayTransaction | 298 requests |
trace_replayBlockTransactions | 298 requests |
API 請(qǐng)求
Path | Weight |
/info/endpointWeights | 0 request |
/{address} | 1 request |
/{address}/balance | 1 request |
/erc20/metadata | 1 request |
/erc20/metadata/symbols | 1 request |
/erc20/{address}/allowance | 1 request |
/resolve/{domain} | 1 request |
/{pair_address}/reserves | 1 request |
/resolve/{address}/reverse | 1 request |
/web3/version | 1 request |
/{address}/events | 2 requests |
/{address}/erc20/transfers | 2 requests |
/erc20/{address}/transfers | 2 requests |
/block/{block_number_or_hash}/nft/transfers | 2 requests |
/nft/{address}/{token_id} | 2 requests |
/nft/{address}/{token_id}/transfers | 2 requests |
/{address}/logs | 2 requests |
/{address}/function | 2 requests |
/{address} | 2 requests |
/erc20/{address}/price | 3 requests |
/nft/{address}/trades | 4 requests |
/nft/{address}/lowestprice | 4 requests |
/{address}/erc20 | 5 requests |
/block/{block_number_or_hash} | 5 requests |
/nft/search | 5 requests |
/{address}/nft | 5 requests |
/{address}/nft/transfers | 5 requests |
/{address}/nft/{token_address} | 5 requests |
/nft/{address} | 5 requests |
/nft/{address}/transfers | 5 requests |
/nft/{address}/owners | 5 requests |
/nft/{address}/metadata | 5 requests |
/nft/{address}/sync | 5 requests |
/nft/{address}/{token_id}/metadata/resync | 5 requests |
/nft/transfers | 5 requests |
/nft/{address}/{token_id}/owners | 20 requests |
注意:對(duì)于確切的速率限制值,可以使用端點(diǎn) ?https://deep-index.moralis.io/api/v2/info/endpointWeights?。
注意:?/nft/{address}/{token_id}/metadata/resync? 的計(jì)費(fèi)成本為 5,速率限制成本為 25,這意味著您可以使用免費(fèi)套餐每秒調(diào)用一次,使用免費(fèi)套餐每秒只能調(diào)用兩次 專業(yè)計(jì)劃
輸出示例:
[
{
"endpoint": "getBlock",
"path": "/block/{block_number_or_hash}",
"price": 1
},
{
"endpoint": "getContractEvents",
"path": "/{address}/events",
"price": 2
},
{
"endpoint": "getTransactions",
"path": "/{address}",
"price": 1
},
...
{
"endpoint": "endpointWeights",
"path": "/info/endpointWeights",
"price": 0
}
]
為什么我的費(fèi)率有限?
您需要了解兩種不同類(lèi)型的速率限制。
在 SDK 中使用 Moralis.Web3API 時(shí)的速率限制
錯(cuò)誤 141 - 服務(wù)器和客戶端之間的速率限制
第一種速率限制是保護(hù)您的 Moralis 服務(wù)器免受來(lái)自客戶端的垃圾郵件請(qǐng)求。
如您所知 - 任何人都可以使用 Moralis SDK 并使用您的服務(wù)器調(diào)用 Web3 API。
您的服務(wù)器具有內(nèi)置的速率限制,您可以對(duì)其進(jìn)行調(diào)整,以指示不同類(lèi)型的用戶在受到速率限制之前可以執(zhí)行多少請(qǐng)求。 您可以完全控制這些速率限制,并且可以使用 Cloud Code 中的幾行代碼對(duì)其進(jìn)行調(diào)整。
如果您的客戶超出您設(shè)置的允許速率限制,他們將看到以下錯(cuò)誤:
錯(cuò)誤 141:來(lái)自該特定客戶端的 Web3API 請(qǐng)求過(guò)多,客戶端需要等待才能發(fā)送更多請(qǐng)求。
這可以使用 ?Moralis.settings.setAPIRateLimit? 進(jìn)行調(diào)整。
何時(shí)可能發(fā)生此錯(cuò)誤:
想象一下使用您的網(wǎng)站的特定用戶試圖在同一分鐘內(nèi)發(fā)出大量請(qǐng)求。 您的服務(wù)器將保護(hù)自己并拒絕用戶。 只有特定用戶會(huì)受到影響。
解決此錯(cuò)誤的方法是調(diào)整您的設(shè)置,如上所述。
錯(cuò)誤 141 - Moralis 服務(wù)器和 Web3 API 之間的速率限制
當(dāng)您的用戶從 SDK 調(diào)用 Web3 API 時(shí),他們可能不受您的服務(wù)器的速率限制(上述情況),但由于您的計(jì)劃,他們可能會(huì)受到速率限制。
錯(cuò)誤 141:此 Moralis 服務(wù)器由于計(jì)劃限制而受到速率限制。
何時(shí)可能發(fā)生此錯(cuò)誤:
您有許多用戶并沒(méi)有單獨(dú)提出太多請(qǐng)求,但他們共同提出的請(qǐng)求超出了您的計(jì)劃允許的范圍。 例如 - 您的計(jì)劃允許每分鐘 1000 個(gè)請(qǐng)求。 您有 100 個(gè)用戶每分鐘執(zhí)行 15 個(gè)請(qǐng)求。
解決此錯(cuò)誤的方法是升級(jí)您的 Moralis 計(jì)劃。
使用 HTTP 調(diào)用 Web3 API 時(shí)的速率限制
錯(cuò)誤 429 - 非 Moralis 服務(wù)器和 Web3 API 之間的速率限制
當(dāng)您從自己的非 Moralis 后端調(diào)用 Web3 API 時(shí),您可能會(huì)受到 Web3 API 的限制。
在這種情況下,您將收到錯(cuò)誤 429:超出速率限制。
要查看的最重要的值是 ?x-rate-limit-limit? 和 ?x-rate-limit-throttle-limit?。
第一個(gè)告訴您每分鐘允許執(zhí)行多少個(gè)請(qǐng)求,第二個(gè)告訴您每秒可以執(zhí)行多少個(gè)請(qǐng)求。
一些繁重的請(qǐng)求算作多個(gè)請(qǐng)求。
為了不受到速率限制,請(qǐng)注意 ?x-rate-limit-used? 和 ?x-rate-throttle-used?。
解決此錯(cuò)誤的方法是升級(jí)您的 Moralis 計(jì)劃。
如何使用cursor(nodejs)的示例
const Moralis = require("moralis/node");
const serverUrl = "https://server_domain:2053/server";
const appId = "app id";
const contractAddress = "contract address";
async function getAllOwners() {
await Moralis.start({ serverUrl: serverUrl, appId: appId });
let cursor = null;
let owners = {};
do {
const response = await Moralis.Web3API.token.getNFTOwners({
address: contractAddress,
chain: "eth",
limit: 500,
cursor: cursor,
});
console.log(
`Got page ${response.page} of ${Math.ceil(
response.total / response.page_size
)}, ${response.total} total`
);
for (const owner of response.result) {
owners[owner.owner_of] = {
amount: owner.amount,
owner: owner.owner_of,
tokenId: owner.token_id,
tokenAddress: owner.token_address,
};
}
cursor = response.cursor;
} while (cursor != "" && cursor != null);
console.log("owners:", owners, "total owners:", Object.keys(owners).length);
}
getAllOwners();
如何使用cursor的示例(python)
import requests
import time
def get_nft_owners(offset, cursor):
print("offset", offset)
url = 'https://deep-index.moralis.io/api/v2/nft//owners?chain=polygon&format=decimal'
if cursor:
url = url + "&cursor=%s" % cursor
print("api_url", url)
headers = {
"Content-Type": "application/json",
"X-API-Key": "API_KEY_HERE"
}
statusResponse = requests.request("GET", url, headers=headers)
data = statusResponse.json()
print("HTTP headers:", statusResponse.headers)
try:
print("nr results", len(data['result']))
except:
print(repr(data))
print("exiting")
raise SystemExit
cursor = data['cursor']
print(data['page'], data['total'])
return cursor
cursor = None
for j in range(0, 10):
cursor = get_nft_owners(j*500, cursor)
print()
time.sleep(1.1) 新聞名稱:創(chuàng)新互聯(lián)Moralis教程:Moralis計(jì)費(fèi)和費(fèi)率限制
標(biāo)題URL:http://fisionsoft.com.cn/article/cdepddd.html


咨詢
建站咨詢
