17

是否可以更改用于 Google Apps 脚本UrlFetchApp.fetch请求的用户代理字符串?

这个2010 年的讨论暗示 Google Apps 脚本中的 UrlFetch 模块支持将User-Agent标头添加到可选headers集合中,就像 Google App Engine 的 UrlFetch 模块一样。但是,GAS 文档对此没有任何说明。我制作的测试脚本也显示它不起作用。

测试脚本:

function testUserAgentString(){
  var page;
  try {
    page = UrlFetchApp.fetch('http://www.myuseragent.net/',
        {headers: {"User-Agent":
            "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"
        }}).getContentText();
    Logger.log(page);
  } catch(_) {}
}

日志输出(减去无关的 HTML)是:

Mozilla/5.0 (compatible; GoogleDocs; script; +http://docs.google.com)

这是 GAS 执行 UrlFetch 请求时使用的默认用户代理字符串。

我错过了什么或做错了什么?

编辑:由于目前这是不可能的,我根据 Arun 的建议在问题跟踪器上提出了增强请求。

4

2 回答 2

9

这在今天是不可能的。请使用您的用例在问题跟踪器上记录增强请求,以便对其进行审查和考虑。

于 2013-02-25T23:45:39.880 回答
-2

您可以通过 UrlFetchApp 以这种方式发送标头信息:

var url = "http://mymagentohost/api/rest/products?limit=2"

var params = { 
  headers: { 'Content-Type': "application/json", 'Accept': "application/json",
             'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'},
  muteHttpExceptions: true,
  method: "GET",
  contentType: "application/json",
  validateHttpsCertificates: false,
};

var response = UrlFetchApp.fetch(url, params);

只需在标题部分添加用户代理信息。希望能帮助到你!

归功于:Aditya Advani

于 2020-06-25T17:08:47.530 回答