通过 google 脚本使用正确的 login/pass 拒绝 403 访问网站

403 access denied to the website with proper login/pass through google script

var url = "https://web-site_name/page/?format=json&var_data-organization_dates&xlsexport=true";

   var payload =
   {
     "login" : "login",
     "password" : "pass",
   };

  var options =
   {
     "method" : "post",
     "payload" : payload,
     "followRedirects" : false
   };

  var login = UrlFetchApp.fetch("https://web-site_name/page/" , options);
  var sessionDetails = login.getAllHeaders()['Set-Cookie'];
  Logger.log(login.getAllHeaders());

这是我尝试使用的部分代码,用于自动从网站导出数据,我确实有正确的登录名和密码,并且能够在 json 中下载文件(在 xsl 中打开) 手动,我在开发人员工具中获得了网络中下载文件的地址,但我在第一阶段遇到了问题 - 当尝试授权网站时 - 访问被拒绝。我已经尝试了代码,在 Whosebug 的答案中给出,但它仍然不起作用。

如何正确发出 url 提取请求,取决于您要访问的网站和他们使用的身份验证

在最简单的情况下,您的网站需要 HTTP 基本身份验证,在这种情况下正确的语法是

var authHeader = 'Basic ' + Utilities.base64Encode(login + ':' + pass);
var options = {
  headers: {Authorization: authHeader}
} 
  • 如果您的网站使用不同的身份验证表单,您可能需要提供访问令牌。

  • 无论如何:身份验证凭据进入 headers,而不是进入 payload!

  • payload是你要post=上传到网站的数据。

  • 如果你想从网站导出数据——即下载数据——你不需要payload,正确的方法是get,而不是[=16] =].顺便说一句,如果方法是 get,则不需要指定它。

有关更多信息和示例,请参阅 here