1

我正在编写一个脚本来从我的银行的家庭银行网站检索交易信息,以便在个人移动应用程序中使用。

该网站的布局如下:

https://homebanking.purduefed.com/OnlineBanking/Login.aspx

-> 输入用户名 -> 提交表单 ->

https://homebanking.purduefed.com/OnlineBanking/AOP/Password.aspx

-> 输入密码 -> 提交表格 ->

https://homebanking.purduefed.com/OnlineBanking/AccountSummary.aspx

我遇到的问题是因为有 2 个单独的页面可以进行 POST,我首先认为这是会话信息丢失的问题。但我使用 urllib2 的 HTTPCookieProcessor 来存储 cookie 并向网站发出 GET 和 POST 请求,发现这不是问题。

我目前的代码是:

import urllib
import urllib2
import cookielib

loginUrl = 'https://homebanking.purduefed.com/OnlineBanking/Login.aspx'
passwordUrl = 'https://homebanking.purduefed.com/OnlineBanking/AOP/Password.aspx'
acctUrl = 'https://homebanking.purduefed.com/OnlineBanking/AccountSummary.aspx'

LoginName = 'sample_username'
Password = 'sample_password'

values = {'LoginName' : LoginName,
      'Password' : Password}

class MyHTTPRedirectHandler(urllib2.HTTPRedirectHandler):
    def http_error_302(self, req, fp, code, msg, headers):
        print "Cookie Manipulation Right Here"
        return urllib2.HTTPRedirectHandler.http_error_302(self, req, fp, code, msg, headers)

    http_error_301 = http_error_303 = http_error_307 = http_error_302

login_cred = urllib.urlencode(values)

jar = cookielib.CookieJar()
cookieprocessor = urllib2.HTTPCookieProcessor(jar)

opener = urllib2.build_opener(MyHTTPRedirectHandler, cookieprocessor)
urllib2.install_opener(opener)
opener.addheaders = [('User-agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5')]

opener.addheader = [('Referer', loginUrl)]
response = opener.open(loginUrl, login_cred)

reqPage = opener.open(passwordUrl)

opener.addheader = [('Referer', passwordUrl)]
response2 = opener.open(passwordUrl, login_cred)

reqPage2 = opener.open(acctUrl)

content = reqPage2.read()

目前,该脚本使其进入 passwordUrl 页面,因此用户名正确 POST,但是当对 passwordUrl 页面进行 POST 时,它不是转到 acctUrl,而是重定向到登录页面(如果 acctUrl 是重定向位置在没有适当或缺乏凭据的情况下打开)。

在这一点上,非常感谢任何关于如何前进的想法或评论!

4

0 回答 0