login - 如何使用 Google Apps 脚本登录外部网站?

标签 login google-apps-script

我正在尝试登录一个网站,以便将数据提取到 Google 文档电子表格中。我在这里阅读了各种帖子,但我不知道如何识别我需要传递的数据。

该站点的登录页面有一个包含以下字段的表单。

<form action="https://fantasyfootball.telegraph.co.uk/premierleague/log-in/" method="post" id='reg-form'>
        <fieldset class='login'>

            <div class="required">
                <label for="email">Email:</label>
                <input type="text" name="email" id="email" class="input-text" size="10" maxlength="50" value="my.name@address.com" />
            </div>

            <div class="required">
                <label for="pass">Password:</label>
                <input type="password" name="pass" id="pass" class="input-password" size="10" maxlength="15" value="some-password" />
            </div>
        </fieldset>
        <div id="remember-me-container">
                <input type="checkbox" checked="checked" id="remember-me" name="remember-me" value="remember-me" />
                <label for="remember-me" id="remember-lbl">Remember me</label>

        </div>

        <input type="submit" id="submit-btn" value="Login" name='Submit' class='btn'/>
    </form>

我已经尝试了以下脚本,但 sessionDetails 总是返回为“未定义”。
// Returns the html of the page.
function sGetPage (sUrl) {

var url = "https://fantasyfootball.telegraph.co.uk/premierleague/log-in/";

// logging in, following http://stackoverflow.com/questions/21621019/google-apps-script-login-to-website-with-http-request
var payload =
{
 "email" : "ian.shaw@iee.org",
 "pass" : "asdf123",
 "submit-btn": "Login",
 "remember-me" : "remember-me" 
};

var options =
{
 "method" : "post",
 "payload" : payload,
 "followRedirects" : false
};

var login = UrlFetchApp.fetch( url, options);
var sessionDetails = login.getAllHeaders()['Set-Cookie'];
Logger.log(sessionDetails); 

var response = UrlFetchApp.fetch ("https://fantasyfootball.telegraph.co.uk/premierleague/leagues/view/8000912/4015677/", {"headers" : {"Cookie" : sessionDetails} });
var sHtml = response.getContentText();
Logger.log(sHtml); 

}

任何意见,将不胜感激。

最佳答案

我一直无法发送 sessionDetails回到网站原样。我一直在使用RegEx提取sessionDetails的相关部分并创建一个新的 cookie 字符串,并将其发送回站点。要找出 cookie 的哪些部分是相关的,请使用浏览器的网络日志(在开发人员工具中)检查浏览器为 cookie 发布的内容,并将该字符串与 sessionDetails 进行比较。 .我贴了一个例子 here .

var login = UrlFetchApp.fetch(url, options);
var sessionDetails = login.getAllHeaders()['Set-Cookie'];
Logger.log(sessionDetails); 
var cookie = sessionDetails.match(/Asp\.NetSessionId=[A-Z0-9]+;/)[0];  //modify this RegEx as needed

var response = UrlFetchApp.fetch(
  "https://example.com",
  {"headers" : {"Cookie" : cookie} }
);

关于login - 如何使用 Google Apps 脚本登录外部网站?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25553671/

相关文章:

javascript - jQuery Accordion 如何获取事件标题的选择按钮

asp.net-mvc - "Remember Me"登录网站 - 不同浏览器/计算机的问题

codeigniter - 使用 Codeigniter 登录系统

PHP LoginScript MySQL 检查结果错误

google-apps-script - 修改某些电子表格时实时更新html内容

javascript - Google Apps 脚本功能在我手动运行时执行,但在作为触发器运行时失败,引用错误代码 INTERNAL

api - 使用 prestashop api 需要用户登录 web 服务

sql-server - 与服务器成功建立连接,但随后在登录前握手/登录过程中出现错误

javascript - if 语句在条件满足后不停止

google-apps-script - Apps 脚本错误 : Cannot find method getRange(number, 数字、数字、数字)