如何登录富达网站并在其中导航?

问题描述 投票:0回答:1

我很乐意在登录Fidelity网站并在其中导航时获得一些帮助。到目前为止,我的尝试还没有将我带到重要的地方。因此,这是我在与网络上的答案进行大量协商之后编写的代码。步骤是:

  1. 登录保真度
  2. 检查响应代码是否不是200,而是302或303,并且我的代码通过了此测试(代码为302)。
  3. 然后,我检查返回的cookie数量(有5个),对于每个cookie,我尝试导航到Fidelity中的另一个网页(我这样做了5次,每个cookie一次,只是因为我不知道哪个下标变量“ cookie”的“ j”将起作用)。

function loginToFidelity(){
  var url = "https://www.fidelity.com"; 
  var payload = {
    "username":"*********", 
    "password":"*********" 
  }; 
  var opt = {
    "payload":payload,"method":"post","followRedirects" : false
  };
  var response = UrlFetchApp.fetch(encodeURI(url),opt);
  if ( response.getResponseCode() == 200 ) { 
    Logger.log("Couldn't login.");
    return
  } 
  else if (response.getResponseCode() == 303 || response.getResponseCode() == 302) {
    Logger.log("Logged in successfully. " + response.getResponseCode());
    var cookie = response.getAllHeaders()['Set-Cookie']
    for (j = 0; j < cookie.length; j++) {
      var downloadPage = UrlFetchApp.fetch("https://oltx.fidelity.com/ftgw/fbc/oftop/portfolio#activity", 
          {"Cookie" : cookie[j],"method" : "post","followRedirects" : false,"payload":payload});
      Logger.log(downloadPage.getResponseCode())
      Logger.log(downloadPage.getContentText())
    }
  }
}

对于下标“ j”的每个选择,我对ResponseCode都得到相同的答案(总是302),对ContentText也得到相同的答案。 ContentText的答案显然是错误的,因为它不是应该的。 ContentText如下所示:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="https://login.fidelity.com/ftgw/Fidelity/RtlCust/Login/Init?AuthRedUrl=https://oltx.fidelity.com/ftgw/fbc/oftop/portfolio">here</a>.</p>
</body></html>

基于此,我有两个问题:

  1. 我是否已正确登录Fidelity网站?如果没有,为什么在登录过程中收到响应码302?要正确登录,我需要做些什么?

  2. 为什么我得到一个非常合理且明显不正确的ContentText答案,同时得到一个完全合理的ResponseCode 302?我需要做些什么,以便我可以在Fidelity中获得密码控制的页面,该页面的URL为“ https://oltx.fidelity.com/ftgw/fbc/oftop/portfolio#activity”?

注意:除上述测试外,还进行了其他一些测试。这些测试的结果在下面的讨论中提供。

google-apps-script urlfetch
1个回答
0
投票

这是对我有用的东西。您可能已经找到解决方案,不确定。请记住填写XXXX所在的登录ID和YYYY的密码。

我了解这是python代码,而不是google脚本,但是您对代码流有很好的了解。

import requests, sys, lxml.html
s = requests.Session()
r = s.get('https://login.fidelity.com')
payload = {

'DEVICE_PRINT' : 'version%3D3.5.2_2%26pm_fpua%3Dmozilla%2F5.0+(x11%3B+linux+x86_64%3B+rv%3A41.0)+gecko%2F20100101+firefox%2F41.0%7C5.0+(X11)%7CLinux+x86_64',
    'SavedIdInd' : 'N',
    'SSN' : 'XXXXX',
    'PIN' : 'YYYYY'
}

r = s.post(login_url, data=payload, headers=dict(referer='https://login.fidelity.com'))
response = s.get('https://oltx.fidelity.com/ftgw/fbc/oftop/portfolio')

print response.content
© www.soinside.com 2019 - 2024. All rights reserved.