UrlFetchApp.fetch()错误,似乎没有使用标头

时间:2019-05-12 12:13:21

标签: google-apps-script http-headers user-agent http-status-code-403 urlfetch

尝试使用Google Apps脚本从网站获取数据,以将其直接放入电子表格中。提取似乎无效,在Python请求等效的地方效果很好。

Python代码:

page = requests.get("someurl?as_data_structure", headers={'user-agent':'testagent'})

GAS代码:

var page = UrlFetchApp.fetch("someurl?as_data_structure", headers={'user-agent':'testagent'});

唯一需要的标头是用户代理,如果没有包含标头,我从GAS代码中得到的错误通常就是从Python代码中获得的错误。我是JS新手,但据我所知这是正确的方法。

编辑: 现在将标题放置在正确的位置,但问题仍然存在,与以前完全一样的错误。

var options = {"headers": {"User-Agent": "testagent"}};
var page = UrlFetchApp.fetch("someurl?as_data_structure", options);

2 个答案:

答案 0 :(得分:1)

Google并不总是显示其限制(讨厌吗?)。这样的限制之一就是更改用户代理。它固定为

addRequestHandlers

您无法更改。

样本测试:

"User-Agent": "Mozilla/5.0 (compatible; Google-Apps-Script)"

示例响应:

function testUrlFetchAppHeaders() {
  var options = {
    headers: {
      'User-Agent':
        'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36',
    },
  };
  var fakeRequest = UrlFetchApp.getRequest(
    'https://www.httpbin.org/headers',
    options
  );//providing fake assurance
  var realRequest = UrlFetchApp.fetch(
    'https://www.httpbin.org/headers',
    options
  );//like a wrecking ball
  Logger.log({ fake: fakeRequest, real: realRequest });
}
  

getRequest(url)

     
    

返回调用该操作后将发出的请求。

         

此方法实际上并不发出请求。

  

它也不准确地返回将要发出的请求。

答案 1 :(得分:0)

headers属于选项:

var options = {"headers": {"User-Agent": "testagent"}};
var page = UrlFetchApp.fetch("someurl?as_data_structure", options);