скрипт приложений Google == ›UrlFetchApp, метод GET и cookie

Я использую UrlFetchApp для отправки пользователя и pwd (метод POST). После получения cookie и использования в другом запросе (метод GET). Но этот новый запрос не работает, я думаю, что этот файл cookie неправильно используется в этом новом запросе. Может кто-нибудь мне помочь?

  var opt ={
    "method":"post",
    "User-Agent" : "Mozilla/5.0",
    "Accept" : "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Language" : "en-US,en;q=0.5",    
    "payload": this.payload.toString(), 
    "followRedirects" : false
  };
  var response = UrlFetchApp.fetch("https://edas.info/addTopic.php?c=19349",opt);
  var resp1=response.getContentText();    
  Logger.log(resp1);  
  response.getResponseCode();

  var headers = response.getAllHeaders();
  var cookies = headers['Set-Cookie']; 
  for (var i = 0; i < cookies.length; i++) {
    cookies[i] = cookies[i].split( ';' )[0];
  };


  opt = {
    "method" : "get",
    "User-Agent" : "Mozilla/5.0",
    "Accept" : "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Language" : "en-US,en;q=0.5",    
    "headers": {
      "Cookie": cookies.join(';')
    },
    "followRedirects" : false    
  };
  response = UrlFetchApp.fetch("https://edas.info/addTopic.php?c=19349", opt);
  var resp1=response.getContentText();  
  Logger.log(resp1);  

person user14272    schedule 14.12.2014    source источник
comment
Мне было интересно, удалось ли вам заставить работать ваше выражение Get. У меня похожая проблема.   -  person Mutuelinvestor    schedule 23.02.2015
comment
Удалось ли вам изменить User-Agent?   -  person c-an    schedule 11.02.2020


Ответы (2)


Во-первых, спасибо за фрагмент кода, это помогло мне начать обработку файлов cookie в таком скрипте. Я столкнулся с проблемой, которая могла быть вашей проблемой. Иногда веб-страница возвращает массив файлов cookie, и тогда ваш код работает нормально. Иногда он возвращает одну строку (вместо массива из одной строки). Поэтому мне пришлось устранить неоднозначность с помощью теста вроде:

if ( (cookies != null) && (cookies[0].length == 1) ) {
      cookies = new Array(1);              
      cookies[0] = headers['Set-Cookie']; 
}
person siamond    schedule 03.09.2017

Я не могу дать вам конкретную помощь по вашей проблеме, хотя один указатель, как найти здесь Обработка файлов cookie в скрипте Google Apps - как отправлять файлы cookie в заголовке?

Как сказал https://stackoverflow.com/users/1435550/thierry-chevillard:

Имейте в виду, что GAS использует IP-адреса Google. Может случиться так, что две последовательные выборки используют разные IP-адреса. Сервер, к которому вы подключаетесь, может зависеть от IP-адреса сеанса.

Ваш код работает на локальном сервере разработки и дает сбой только после развертывания в App Engine? Или он тоже не работает локально?

person Related    schedule 25.12.2014