個人のモバイル アプリケーションで使用するために、銀行のホーム バンキング Web サイトからトランザクション情報を取得するスクリプトを作成しています。
ウェブサイトは次のようにレイアウトされています。
https://homebanking.purduefed.com/OnlineBanking/Login.aspx
-> ユーザー名を入力 -> フォームを送信 ->
https://homebanking.purduefed.com/OnlineBanking/AOP/Password.aspx
-> パスワードを入力 -> フォームを送信 ->
https://homebanking.purduefed.com/OnlineBanking/AccountSummary.aspx
私が抱えている問題は、POST を作成するための 2 つの別々のページがあるため、最初はセッション情報が失われるという問題だと思っていました。しかし、私は 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 されますが、POST が passwordUrl ページに行われると、acctUrl に移動する代わりに、ログイン ページにリダイレクトされます (acctUrl がリダイレクトされた場合のリダイレクト場所)。資格情報が適切でない、または不足している場合)。
この時点で、前進する方法についての考えやコメントは大歓迎です!