问题描述
我正在尝试制作一个小脚本,从 openDNS 获取顶级域 csv 文件并将它们保存在谷歌驱动器上。我无法克服的绊脚石是身份验证。我试图从 net 上的 Linux 或 Microsoft 脚本中获得灵感,但无济于事。下面是我正在测试的脚本的最新版本
function Fetcher() {
//1)the login page is called up to get the cookies and formtoken
var url = 'https://login.opendns.com/';
var response = UrlFetchApp.fetch(url);
var html = response.getContentText();
var $ = Cheerio.load(html);
if ($('input[name="formtoken"]').attr('value')) {
formtoken = $('input[name="formtoken"]').attr('value').trim();
}
var headers = response.getAllHeaders();
var cookies = headers['Set-Cookie'];
if ( (cookies != null) && (cookies[0].length == 1) ) {
cookies = new Array(1);
cookies[0] = headers['Set-Cookie'];
}
var responsecode1=response.getResponseCode();
//2) with the formtoken and the cookies you log into opndns
var payload = {
username : "myusername",password : "mypassword",formtoken: formtoken,source: "dashboard",return_to: "https://dashboard.opendns.com",loginToken: ""
};
var params = {
"followRedirects": true,"muteHttpExceptions": true,"method":"POST","headers": {"Cookie": cookies},"payload": payload
};
var response = UrlFetchApp.fetch(url,params);
var headers = response.getAllHeaders();
var cookies = headers['Set-Cookie'];
if ( (cookies != null) && (cookies[0].length == 1) ) {
cookies = new Array(1);
cookies[0] = headers['Set-Cookie'];
}
var html = response.getContentText();
var responsecode2=response.getResponseCode();
//3) Now that I'm inside I download the file
var params = {
"followRedirects": true,"method":"GET","headers": {"Cookie": cookies}
};
var url = 'https://dashboard.opendns.com/stats/MYDNSNETWORKID/topdomains/2020-09-14.csv';
var response = UrlFetchApp.fetch(url,params);
var html = response.getContentText();
var responsecode3=response.getResponseCode();
Logger.log(responsecode1+' '+responsecode2+' '+responsecode3+' '+formtoken+' '+cookies+' '+html);
var file = response.getBlob();
DriveApp.getFolderById('MYDRIVEFOLDERID').createFile(file);
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)