Аутентификация в openDNS с использованием UrlFetchApp.fetch и скриптов Google

Я пытаюсь сделать небольшой скрипт, который берет CSV-файлы верхнего домена из openDNS и сохраняет их на диске Google. Камнем преткновения, который я не могу преодолеть, является аутентификация. Я пытался вдохновиться скриптами для Linux или Microsoft, выложенными в сети , но ничего не поделаешь. здесь ниже последняя версия скрипта, который я тестирую

          function Fetcher() {
  //1)the login page is called up to get the cookies and formtoken
  var url = 'https://login.opendns.com/';
  var response = UrlFetchApp.fetch(url);
  var html = response.getContentText();
  var $ = Cheerio.load(html);
  if ($('input[name="formtoken"]').attr('value')) {
    formtoken = $('input[name="formtoken"]').attr('value').trim();
  }
  var headers = response.getAllHeaders();
  var cookies = headers['Set-Cookie']; 
  if ( (cookies != null) && (cookies[0].length == 1) ) {
    cookies = new Array(1);              
    cookies[0] = headers['Set-Cookie'];
  }
  var responsecode1=response.getResponseCode();
  //2) with the formtoken and the cookies you log into opndns
  var payload = {
    username : "myusername",
    password : "mypassword",
    formtoken: formtoken,
    source: "dashboard",
    return_to: "https://dashboard.opendns.com",
    loginToken: ""
  };
  var params = {
    "followRedirects": true, 
    "muteHttpExceptions": true,
    "method":"POST",
    "headers": {"Cookie": cookies},
    "payload": payload
  };
  var response = UrlFetchApp.fetch(url, params);
  var headers = response.getAllHeaders();
  var cookies = headers['Set-Cookie']; 
  if ( (cookies != null) && (cookies[0].length == 1) ) {
    cookies = new Array(1);              
    cookies[0] = headers['Set-Cookie'];
  }
  var html = response.getContentText();
  var responsecode2=response.getResponseCode();
  //3) now that I'm inside I download the file
    var params = {
    "followRedirects": true, 
    "muteHttpExceptions": true,
    "method":"GET",
    "headers": {"Cookie": cookies}
  };
  var url = 'https://dashboard.opendns.com/stats/MYDNSNETWORKID/topdomains/2020-09-14.csv';
  var response = UrlFetchApp.fetch(url, params);
  var html = response.getContentText();
  var responsecode3=response.getResponseCode();
  Logger.log(responsecode1+'  '+responsecode2+'  '+responsecode3+'  '+formtoken+'  '+cookies+'   '+html);
  var file = response.getBlob(); 
  DriveApp.getFolderById('MYDRIVEFOLDERID').createFile(file);

  
}

0 ответов

Другие вопросы по тегам