web-dev-qa-db-fra.com

Comment utiliser UrlFetchApp avec des informations d'identification? Scripts Google

J'essaie d'utiliser Google Scripts UrlFetchApp pour accéder à un site Web avec un nom d'utilisateur et un mot de passe de base. Dès que je me connecte au site, une fenêtre contextuelle apparaît qui nécessite une authentification. Je connais le nom d'utilisateur et le mot de passe, mais je ne sais pas comment les transmettre dans UrlFetchApp.

var response = UrlFetchApp.fetch ("htp: //00.000.000.000: 0000 /");
Logger.log (response.getContentText ("UTF-8"));

Actuellement, l'exécution de ce code renvoie "Accès refusé". Le code ci-dessus ne contient pas l'adresse réelle à laquelle je me connecte pour des raisons de sécurité. Un "t" est absent de tous les "http" dans les exemples de code car ils sont détectés en tant que liens et Stackoverflow ne me permet pas de soumettre plus de deux liens.

Comment puis-je transmettre le nom d'utilisateur et le mot de passe avec ma demande? Est-il également possible de poursuivre ma session une fois connecté? Ou ma prochaine demande UrlFetchApp sera-t-elle envoyée à partir d'un autre serveur Google m'obligeant à me reconnecter?

L'objectif ici est de se connecter au site Web derrière l'infrastructure réseau de Google afin qu'il puisse agir en tant que proxy, puis je dois émettre une autre demande UrlFetchApp à la même adresse qui ressemblerait à ceci:

var response = UrlFetchApp.fetch ("htp: //00.000.000.000: 0000/vuze/rpc? json = {" method ":" torrent-add "," arguments ": {" filename ":" htp: // vodo .net/media/torrents/everything.torrent "," rép-téléchargement ":" C:\temp "}}");
Logger.log (response.getContentText ("UTF-8"));

29
user3586062

Cette question a été répondue sur un autre ailleurs où. Voici le résumé:

Bruce Mcpherson

basic authentication looks like this...
    var options = {};
    options.headers = {"Authorization": "Basic " + Utilities.base64Encode(username + ":" + password)};

Lenny Cunningham

//Added Basic Authorization//////////////////////////////////////////////////////////////////////////////////////////

  var USERNAME = PropertiesService.getScriptProperties().getProperty('username');
  var PASSWORD = PropertiesService.getScriptProperties().getProperty('password');

  var url = PropertiesService.getScriptProperties().getProperty('url');//////////////////////////Forwarded

Ports vers WebRelay

  var headers = {
    "Authorization" : "Basic " + Utilities.base64Encode(USERNAME + ':' + PASSWORD)
  };

  var params = {
    "method":"GET",
    "headers":headers
  };

var reponse = UrlFetchApp.fetch(url, params);
51
user3586062

Je n'ai pas pu trouver les liens source de ser3586062 (ils ont peut-être été supprimés), mais en utilisant l'approche de Bruce Mcpherson, votre code ressemblerait à ceci:

var options = {};
options.headers = {"Authorization": "Basic " + Utilities.base64Encode(username + ":" + password)};
UrlFetchApp.fetch("TARGET URL GOES HERE", options);
6
Augustine C