与 google 脚本一起使用时,Binance search API returns 403
Binance search API returns 403 when using with google scripts
我正在使用 binance API 来获取 usdt 的价格。 API 适用于邮递员,但不适用于 google 脚本。
function fetchCryptoPricesFromApi() {
const data = {
"page": 1,
"rows": 10,
"payTypes": [],
"asset": "USDT",
"tradeType": "SELL",
"fiat": "LKR",
"publisherType": null,
"transAmount": "2600"
}
const payload = JSON.stringify(data)
const options = {
"method" : "POST",
"contentType" : "application/json",
"payload" : payload
}
let response;
try {
response = UrlFetchApp.fetch('https://p2p.binance.com/bapi/c2c/v2/friendly/c2c/adv/search', options);
} catch (error) {
console.log('Oops Error, ', error);
return
}
const prices = JSON.parse(response)['data'];
console.log(prices)
}
执行此操作时出现以下错误,
Oops Error, { [Exception: Request failed for https://p2p.binance.com returned code 403. Truncated server response: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><META HTTP-EQUIV="Content-Type" ... (use muteHttpExceptions option to examine full response)] name: 'Exception' }
我也试着等了一段时间。
根据您显示的错误消息,我确认了状态代码 403
。 Ref 在这种情况下,认为无法从Google 端直接访问该站点。我认为你的问题是因为这个。
在这种情况下,作为一种解决方法,我想建议访问 URL 而无需直接使用脚本编辑器 运行ning 脚本。当我测试这个解决方法时,我确认可以返回该值。
在此解决方法中,使用以下流程。
- 将
=fetchCryptoPricesFromApi()
的自定义函数放到一个单元格中。
- 从 API 检索值。
- 从单元格中检索值。
- 将值解析为 JSON 数据。
此解决方法的示例脚本如下。
示例脚本:
在此解决方法中,我使用 Google 电子表格。所以请创建一个新的 Google 电子表格并打开 Google 电子表格的脚本编辑器。并且,复制并粘贴以下脚本。并且,运行 main()
与脚本编辑器一起运行。
function fetchCryptoPricesFromApi() {
const data = {
"page": 1,
"rows": 10,
"payTypes": [],
"asset": "USDT",
"tradeType": "SELL",
"fiat": "LKR",
"publisherType": null,
"transAmount": "2600"
}
const payload = JSON.stringify(data)
const options = {
"method": "POST",
"contentType": "application/json",
"payload": payload
}
const response = UrlFetchApp.fetch('https://p2p.binance.com/bapi/c2c/v2/friendly/c2c/adv/search', options);
return response.getContentText();
}
// Please run this function.
function main() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange("A1");
range.setFormula("=fetchCryptoPricesFromApi()");
SpreadsheetApp.flush();
const value = range.getValue();
range.clearContent();
const prices = JSON.parse(value)['data'];
console.log(prices)
}
我正在使用 binance API 来获取 usdt 的价格。 API 适用于邮递员,但不适用于 google 脚本。
function fetchCryptoPricesFromApi() {
const data = {
"page": 1,
"rows": 10,
"payTypes": [],
"asset": "USDT",
"tradeType": "SELL",
"fiat": "LKR",
"publisherType": null,
"transAmount": "2600"
}
const payload = JSON.stringify(data)
const options = {
"method" : "POST",
"contentType" : "application/json",
"payload" : payload
}
let response;
try {
response = UrlFetchApp.fetch('https://p2p.binance.com/bapi/c2c/v2/friendly/c2c/adv/search', options);
} catch (error) {
console.log('Oops Error, ', error);
return
}
const prices = JSON.parse(response)['data'];
console.log(prices)
}
执行此操作时出现以下错误,
Oops Error, { [Exception: Request failed for https://p2p.binance.com returned code 403. Truncated server response: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><META HTTP-EQUIV="Content-Type" ... (use muteHttpExceptions option to examine full response)] name: 'Exception' }
我也试着等了一段时间。
根据您显示的错误消息,我确认了状态代码 403
。 Ref 在这种情况下,认为无法从Google 端直接访问该站点。我认为你的问题是因为这个。
在这种情况下,作为一种解决方法,我想建议访问 URL 而无需直接使用脚本编辑器 运行ning 脚本。当我测试这个解决方法时,我确认可以返回该值。
在此解决方法中,使用以下流程。
- 将
=fetchCryptoPricesFromApi()
的自定义函数放到一个单元格中。 - 从 API 检索值。
- 从单元格中检索值。
- 将值解析为 JSON 数据。
此解决方法的示例脚本如下。
示例脚本:
在此解决方法中,我使用 Google 电子表格。所以请创建一个新的 Google 电子表格并打开 Google 电子表格的脚本编辑器。并且,复制并粘贴以下脚本。并且,运行 main()
与脚本编辑器一起运行。
function fetchCryptoPricesFromApi() {
const data = {
"page": 1,
"rows": 10,
"payTypes": [],
"asset": "USDT",
"tradeType": "SELL",
"fiat": "LKR",
"publisherType": null,
"transAmount": "2600"
}
const payload = JSON.stringify(data)
const options = {
"method": "POST",
"contentType": "application/json",
"payload": payload
}
const response = UrlFetchApp.fetch('https://p2p.binance.com/bapi/c2c/v2/friendly/c2c/adv/search', options);
return response.getContentText();
}
// Please run this function.
function main() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getRange("A1");
range.setFormula("=fetchCryptoPricesFromApi()");
SpreadsheetApp.flush();
const value = range.getValue();
range.clearContent();
const prices = JSON.parse(value)['data'];
console.log(prices)
}