【问题标题】:UrlFetch with custom user-agent string?UrlFetch 与自定义用户代理字符串?
【发布时间】:2013-02-25 12:54:14
【问题描述】:

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

This discussion 从 2010 年开始暗示 Google Apps 脚本中的 UrlFetch 模块支持将 User-Agent 标头添加到可选的 headers 集合中,就像 Google App Engine 的 UrlFetch 模块一样。但是,the GAS documentation 对此一无所知。我制作的一个测试脚本也显示它不起作用。

测试脚本:

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 的建议,我在问题跟踪器上添加了增强功能 request

【问题讨论】:

  • 您不会错过任何东西 - Apps 脚本使用自己的用户代理标头来处理传出请求。有什么改变它的理由吗?
  • 是的。各种网站会根据使用的用户代理字符串更改其内容和布局。我要获取的网站,在使用默认 GAS UA 字符串时使用 Safari IOS 用户代理字符串和专有 SilverLight 视频播放器请求时提供 HTML5 视频。
  • 我猜他们只是不想启用设置此标头。

标签: google-apps-script user-agent


【解决方案1】:

这在今天是不可能的。请使用您的用例在Issue Tracker 上记录增强请求,以便审查和考虑。

【讨论】:

  • 2019年还是不可能的
  • 现在可以吗?
【解决方案2】:

你可以这样用UrlFetchApp发送header信息:

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

【讨论】:

  • 正如您在我在问题中发布的代码中看到的那样,我也希望这能奏效。但对我来说没有!您是否发现它目前正在工作?
  • 我昨天在我的代码中尝试了这个函数,它就像一个魅力!试一试,让我知道。 :)
  • OP 专门询问设置 User-Agent 标头。你的回答没有解决这个问题。
  • 感谢@MatthewLeingang 指出这一点!我忘了添加最重要的部分。我相应地调整了代码。考虑到这一点,请重新考虑您的否决票。谢谢! :)
  • 你能验证它是否有效吗? this answer 建议 UrlFetchApp 不允许更改此标头。我刚刚运行了该答案中的代码并得到了相同的结果。
猜你喜欢
  • 1970-01-01
  • 2016-08-01
  • 1970-01-01
  • 2012-09-13
  • 2011-07-05
  • 1970-01-01
  • 2017-08-06
  • 1970-01-01
  • 2012-10-18
相关资源
最近更新 更多