Cookies 使用UrlFetchApp在google应用程序脚本中设置多个cookie
我使用以下脚本访问一个需要用户登录的网页。该脚本一直工作到我检索登录cookies的地步,我需要以下代码最后一部分中有关使用cookies的帮助Cookies 使用UrlFetchApp在google应用程序脚本中设置多个cookie,cookies,google-apps-script,google-sheets,urlfetch,Cookies,Google Apps Script,Google Sheets,Urlfetch,我使用以下脚本访问一个需要用户登录的网页。该脚本一直工作到我检索登录cookies的地步,我需要以下代码最后一部分中有关使用cookies的帮助 function login(strUsername, strPassword) { //request Page var loginPage = UrlFetchApp.fetch("https://login.url.org/"); //strip out "authState" value from response var
function login(strUsername, strPassword) {
//request Page
var loginPage = UrlFetchApp.fetch("https://login.url.org/");
//strip out "authState" value from response
var sessionDetails = loginPage.getContentText()
var searchString = sessionDetails.indexOf('"authState":"');
var newStringRight = sessionDetails.substring(searchString+13, searchString+6000);
var authState = newStringRight.substring(0, newStringRight.indexOf('"'));
//Logger.log(authState);
//set payload
var payload =
{"authState":authState,
"username":strUsername,
"password":strPassword
};
var options =
{
"method" : "post",
"payload" : JSON.stringify(payload),
"followRedirects" : false,
muteHttpExceptions: true,
"contentType": "application/json"
};
//Logger.log(options);
var loginResponse = UrlFetchApp.fetch("https://login.url.com/api/authenticate/credentials", options);
var loginHtml = loginResponse.getContentText();
Logger.log(loginHtml);
// Log has the following response
//{"output":{"method":"SUCCESS","cookies":{"ObSSOCookie":"xxx","ChurchSSO":"yyy"}}}
if (loginHtml.indexOf("SUCCESS")>0){
Browser.msgBox('Pass', 'Successfully loged in.', Browser.Buttons.OK);
//strip out cookies
searchStringStart = loginHtml.indexOf('{"ObSSOCookie":"');
searchStringEnd = loginHtml.indexOf('"}}');
var Cookie = loginHtml.substring(searchStringStart, searchStringEnd+2);
Logger.log(Cookie);
/*
Logger.log(cookie) returns
{"ObSSOCookie":"xxxx","ChurchSSO":"yyyy"}
*/
////////////////////////////Works up to here/////////////////////////////////////////
var options =
{
"headers" : {"cookies" : Cookie},
muteHttpExceptions: true,
"contentType": "application/json"
};
var adminpage= UrlFetchApp.fetch("https://url.com/admin",options );
Logger.log(adminpage);
/*
<h1>Access Denied</h1>
<p>You are not authorized to access this page.</p>
<p><a href="javascript:location.reload()">Retry</a>
*/
}else{
Browser.msgBox('Fail', 'Sign in failed. Please try again.', Browser.Buttons.OK);
}
}
函数登录(strUsername、strPassword){
//请求页
var loginPage=UrlFetchApp.fetch(“https://login.url.org/");
//从响应中去掉“authState”值
var sessionDetails=loginPage.getContentText()
var searchString=sessionDetails.indexOf('authState:');
var newStringRight=sessionDetails.substring(searchString+13,searchString+6000);
var authState=newStringRight.substring(0,newStringRight.indexOf(“”);
//Logger.log(authState);
//设定有效载荷
var有效载荷=
{“authState”:authState,
“用户名”:strUsername,
“密码”:strPassword
};
var期权=
{
“方法”:“发布”,
“有效载荷”:JSON.stringify(有效载荷),
“followRedirects”:false,
muteHttpExceptions:true,
“contentType”:“应用程序/json”
};
//Logger.log(选项);
var loginResponse=UrlFetchApp.fetch(“https://login.url.com/api/authenticate/credentials“,选项);
var loginHtml=loginResponse.getContentText();
Logger.log(loginHtml);
//日志有以下响应
//{“输出”:{“方法”:“成功”,“cookies”:{“ObSSOCookie”:“xxx”,“churchso”:“yyy”}}
如果(loginHtml.indexOf(“成功”)>0){
Browser.msgBox('Pass','Successfully login',Browser.Buttons.OK);
//去掉饼干
searchStringStart=loginHtml.indexOf(“{”ObSSOCookie:“);
searchStringEnd=loginHtml.indexOf(“}}”);
var Cookie=loginHtml.substring(searchStringStart,searchStringEnd+2);
Logger.log(Cookie);
/*
Logger.log(cookie)返回
{“ObSSOCookie”:“xxxx”,“churchso”:“yyy”}
*/
////////////////////////////到这里为止//////////////////
var期权=
{
“标头”:{“cookies”:Cookie},
muteHttpExceptions:true,
“contentType”:“应用程序/json”
};
var adminpage=UrlFetchApp.fetch(“https://url.com/admin“,选项);
Logger.log(adminpage);
/*
拒绝访问
您无权访问此页面
*/
}否则{
Browser.msgBox('Fail','登录失败。请重试'),Browser.Buttons.OK);
}
}
我想这可能是因为我试图使用多个cookie
{“ObSSOCookie”:“xxxx”、“churchso”:“yyy”}
不确定如何适当地将它们传递到新的页面调用中。任何帮助都很好Cookies应该在单个Cookie
标题中发送,标题之间用分隔代码>(分号和空格):
片段:
参考:
这是否回答了您的问题?
Cookie: name1=value1; name2=value2;
var options =
{
"headers" : {"Cookie" : "ObSSOCookie=xxxx; ChurchSSO=yyyy"}},
};