Google apps script 使用自定义用户代理字符串的UrlFetch?

Google apps script 使用自定义用户代理字符串的UrlFetch?,google-apps-script,user-agent,Google Apps Script,User Agent,是否可以更改Google Apps脚本UrlFetchApp.fetch请求中使用的用户代理字符串 从2010年开始,谷歌应用程序脚本中的UrlFetch模块支持将用户代理头添加到可选的头集合,就像谷歌应用程序引擎的UrlFetch模块一样。然而,该报告对此只字不提。我制作的一个测试脚本也显示它不起作用 测试脚本: function testUserAgentString(){ var page; try { page = UrlFetchApp.fetch('http://ww

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

从2010年开始,谷歌应用程序脚本中的UrlFetch模块支持将
用户代理
头添加到可选的
集合,就像谷歌应用程序引擎的UrlFetch模块一样。然而,该报告对此只字不提。我制作的一个测试脚本也显示它不起作用

测试脚本:

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(兼容;谷歌文档;脚本+http://docs.google.com)

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

我是错过了什么还是做错了什么


编辑:由于目前不可能这样做,根据Arun的建议,我在问题追踪器上做了一个增强。

这在今天是不可能的。请将增强请求与您的用例一起记录在上,以便进行审查和考虑

您可以通过以下方式使用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);
只需在headers部分添加用户代理信息。希望有帮助


值得赞扬的是:

您没有遗漏任何内容-应用程序脚本使用其自己的用户代理标头处理传出请求。有什么理由改变它吗?是的。各种网站根据使用的用户代理字符串更改其内容和布局。我想获取的一个网站,在请求时提供HTML5视频,使用Safari IOS用户代理字符串,并在使用默认GAS UA字符串时提供专有的SilverLight视频播放器。我猜他们只是不想启用设置此标题。在2019年仍然不可能。现在可以吗?正如我在问题中发布的代码所示,我也希望这能奏效。但对我来说不是!你发现它目前正在工作吗?我昨天在我的代码中尝试了这个函数,它工作得很好!试试看,让我知道。:)OP特别询问如何设置
用户代理
标题。你的回答没有提到这一点。谢谢@Matthewleinang指出这一点!我忘了添加最重要的部分。我相应地调整了代码。考虑到这一点,请重新考虑你的否决票。谢谢!:)你能验证它是否有效吗?建议UrlFetchApp不允许更改此标头。我只是运行了答案中的代码,得到了相同的结果。