我使用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);
答案 0 :(得分:1)
首先,感谢您提供代码片段,这让我开始在这样的脚本中处理cookie。我遇到了一个可能是你问题的问题。有时网页返回一个cookie数组,然后你的代码工作正常。有时它返回一个字符串(而不是一个字符串的数组)。所以我不得不用以下测试消除歧义:
if ( (cookies != null) && (cookies[0].length == 1) ) {
cookies = new Array(1);
cookies[0] = headers['Set-Cookie'];
}
答案 1 :(得分:0)
我不能为你的问题提供具体的帮助,一个指针虽然在这里找到 Cookie handling in Google Apps Script - How to send cookies in header?
正如https://stackoverflow.com/users/1435550/thierry-chevillard所说:
还要注意GAS使用Google IP。可能会发生两次连续提取使用不同的IP。您要连接的服务器可能与会话IP相关。
您的代码是否在本地开发服务器上运行,并且只有在部署到App Engine后才会失败? 还是在本地失败?