如何在不使用第三方的情况下以编程方式从 Chase 下载我的银行交易?
Posted
技术标签:
【中文标题】如何在不使用第三方的情况下以编程方式从 Chase 下载我的银行交易?【英文标题】:How do I programmatically download my bank transactions from Chase without using a third party? 【发布时间】:2018-06-17 20:41:06 【问题描述】:我有兴趣在不使用第三方(例如 Mint、Quicken、Yodlee、Plaid 等)的情况下从 Chase 下载我的交易。我不信任第三方来处理我的数据,这就是我想自己做的原因。
【问题讨论】:
【参考方案1】:从 18 年 1 月 8 日开始工作
总结
Chase 使用 OFX 支持与其财务数据的程序化交互。然而,这样做有点不情愿,因为这一事实没有被广泛宣传,也没有很好的记录——银行宁愿让你直接使用他们的产品,而不是去第三方。话虽如此,对 Quicken 等桌面产品的支持仍然存在,因此一种方法是将自己伪装成桌面产品(其他选择是使用第三方服务或使用屏幕抓取工具)。显然,这个解决方案完全受制于 Chase 的奇思妙想,并且作为一种不鼓励的访问模式,它并不健壮。但是您仍在阅读,所以让我们这样做吧!
解决方案
设置您的帐户以接受来自桌面应用程序的连接 账户 > 个人资料和设置 > 管理账户安全 > 桌面应用 > 点击启用
生成客户端 UID。 Chase 将使用它来验证它收到的 OFX 请求是否是预期的。 转到https://www.uuidgenerator.net/ 并生成一个UID。
使用ofx-ba-tfb.py 将以下内容发布到https://ofx.chase.com。注释以# 符号开头,不要包含它们。
标题:
OFXHEADER:100
DATA:OFXSGML
VERSION:102
SECURITY:NONE
ENCODING:USASCII
CHARSET:1252
COMPRESSION:NONE
OLDFILEUID:NONE
NEWFILEUID:Insert random alphanumeric string
有效载荷:
<OFX>
<SIGNONMSGSRQV1>
<SONRQ>
<DTCLIENT>20180108012004
<USERID>Insert user id
<USERPASS>Insert password
<LANGUAGE>ENG
<FI>
<ORG>B1 # Comes from ofxhome.com
<FID>10898
</FI>
<APPID>QWIN
<APPVER>1800
<CLIENTUID>Insert random alphanumeric string
</SONRQ>
</SIGNONMSGSRQV1>
<CREDITCARDMSGSRQV1>
<CCSTMTTRNRQ>
<TRNUID>Insert random alphanumeric string
<CLTCOOKIE>4
<CCSTMTRQ>
<CCACCTFROM>
<ACCTID>Insert account id here
</CCACCTFROM>
<INCTRAN>
<DTSTART>20171208
<INCLUDE>Y
</INCTRAN>
</CCSTMTRQ>
</CCSTMTTRNRQ>
</CREDITCARDMSGSRQV1>
</OFX>
验证请求 你会得到一个回复说, “请在接下来的 7 天内验证您的身份。使用您的台式计算机,访问您的银行网站并访问安全消息中心以获取说明。”稍有延迟(以分钟为单位)后,您将在安全消息中心收到一条消息,要求您确认您已提出此请求。确认请求。您提交的每个新客户端 UID 都会发生这种响应和验证。
再次发出 OFX 请求,您应该会收到交易!
评论
非常感谢 Harry Sit @ thefinancebuff.com 完成了大部分工作!!
通过 OFX 可以实现更多,这是一个复杂的标准。详情请查看规范。
您还可以使用 GnuCash 查看其他有希望的设置。
这是使用 OFX 1.02,但 Chase 现在是 2.2
参考文献
https://thefinancebuff.com/replacing-microsoft-money-part-5-ofx-scripts.html#comments
http://www.ofx.net/
http://www.ofxhome.com/
http://www.ofxhome.com/ofxforum/viewtopic.php?id=47456
https://rhye.org/post/parsing-ofx-leex/
【讨论】:
我能够进行 REST API 调用来完成这项工作,但是在查看了 python 库之后,我将请求内容类型从application/xml
(给我错误代码 500)更改为 @987654332 @ 并且成功了!
稍微澄清一下:这里的“Headers”是OFX Headers,它位于HTTP请求的正文中,与OFX请求有效负载分开,用空行分隔。
截至 2019 年 10 月 24 日,所述设置的位置有点不同:Account > Profile & Settings > Account Safe > Desktop software > Next
并遵循一个小向导。
这个脚本还能用吗?我打电话给ofx-ba-tfb.py chase my_chase_username
,然后我收到这个错误:getaddrinfo(host, port, 0, SOCK_STREAM): socket.gaierror: [Errno 11001] getaddrinfo failed
我做错了吗?
启用桌面软件现已移至大通网站->汉堡菜单->安全和隐私->桌面软件以上是关于如何在不使用第三方的情况下以编程方式从 Chase 下载我的银行交易?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用 UINavigationController 的情况下以编程方式进入 rootViewController
在不打开联系人应用程序的情况下以编程方式将 vcf 保存到 Android 中的联系人
如何在不使用命令的情况下以编程方式关闭/重启 linux 机器(运行时)
如何在不使用外部主机的情况下以编程方式查找设备的外部 IP 地址?