如何在不使用第三方的情况下以编程方式从 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 &gt; Profile &amp; Settings &gt; Account Safe &gt; Desktop software &gt; 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 地址?

如何在不使用 HTML 表单的情况下以编程方式将 POST 请求发送到 JSF 页面?

如何在不使用 rest admin api 的情况下以编程方式(java)更新 keycloak 的用户详细信息?