我本质上不是编码员,而是在GAS中自学(仅使用我编写的代码)。我在City College Norwich工作,我想创建一个脚本,自动将我登录到他们的网站,这样我就可以获取时间表数据并将其放入电子表格中。
在做了一些研究之后,我放弃了试图解决它,所以我正在寻求帮助。
我试过这个:
function getTimetables() {
var url = "https://ccn.ac.uk/user/";
var options = {
"method": "post",
"payload": {
"user-login" : "username",
"edit-pass" : "password",
"BUTTON_Submit" : "Log In",
},
"testcookie": 1,
"followRedirects": false
};
var response = UrlFetchApp.fetch(url, options);
if ( response.getResponseCode() == 200 ) {
// Incorrect user/pass combo
Logger.log('Incorrect user/pass combo')
} else if ( response.getResponseCode() == 302 ) {
// Logged-in
var headers = response.getAllHeaders();
if ( typeof headers['Set-Cookie'] !== 'undefined' ) {
// Make sure that we are working with an array of cookies
var cookies = typeof headers['Set-Cookie'] == 'string' ? [ headers['Set-Cookie'] ] : headers['Set-Cookie'];
for (var i = 0; i < cookies.length; i++) {
// We only need the cookie's value - it might have path, expiry time, etc here
cookies[i] = cookies[i].split( ';' )[0];
};
url = "https://mytimetable.ccn.ac.uk/timetable.aspx?week=30&room=C5A";
options = {
"method": "get",
// Set the cookies so that we appear logged-in
"headers": {
"Cookie": cookies.join(';')
}
}
}
}
}
返回“用户/通过组合不正确”。
我试过这个:
function getTimetablev2() {
var site = "https://ccn.ac.uk/user"
var USERNAME = PropertiesService.getScriptProperties().getProperty('username');
var PASSWORD = PropertiesService.getScriptProperties().getProperty('password');
var url = PropertiesService.getScriptProperties().getProperty(site);
var headers = {
"Authorization" : "Basic " + Utilities.base64Encode(USERNAME + ':' + PASSWORD)
};
var params
= {
"method":"GET",
"headers":headers
};
var response =
UrlFetchApp.fetch(site, params);
Logger.log(response.getResponseCode())
}
返回代码200 - 无法登录。
如果有人能为我解决这个问题,我会永远负债,因为这会节省我的时间。我已经创建了一个实用的预订系统,每个老师都有自己的电子表格,其中包含时间表,所有预订都会发送给我们技术人员使用的主电子表格。如果我可以自动生成他们的时间表,那就太棒了。
答案 0 :(得分:0)
如果不知道https://ccn.ac.uk/user/的有效HTTP POST看起来如何,则很难回答您的问题。所以......
使用hurl.it和第一个代码段中提供的有效负载......它看起来不像是一个有效的POST。
使用firebug并在表单中输入虚拟数据,您可以查看POST是如何正确完成的。
这些是您应在请求正文中使用的参数。
如果此网站除了使用此表单之外本身不支持身份验证,那么您的第二个代码段不太可能正常工作。