通过自己编写的应用程序访问自己的银行账户

7
我已经使用MS Money几年了,由于我的“编码兴趣”,知道如何开始学习编程这样的应用程序将是很好的。更确切地说,不是关于如何设计和编写应用程序,而是关于“银行细节”(对我来说,仅显示某个银行帐户的金额将是一个愉快的目标)。
我想使用C++或Java进行编程,因为我习惯使用这些语言。
这个项目是否“太大”了?我不知道所有安全问题、银行服务器接口/技术等方面的情况。
首先,在得到“否定”回答后,我需要一个可靠的学习来源。

8
可能最大的问题是与您的银行获得合作。他们可能不希望您连接到他们的系统(银行在安全方面非常保守),并且可能会将任何尝试视为攻击。我建议先检查您被允许拥有的访问权限。 - David Thornley
4
@David Thornley,你可以毫无疑问地将所有的"may"改为"will"。 - Dr. belisarius
@David Thornley,是的,我也考虑过这个问题,但由于我的银行提供在线服务,我希望有一种方法可以在不违反任何许可证/法律的情况下获得访问权限。 - InsertNickHere
同意@David Thornley的观点。你在这里将面临极其艰巨的挑战。我在一家金融机构工作,我知道如果你只是给我们打电话要求这种访问权限,我们绝不会允许。除非你的银行以安全和充分记录(可能是标准)的方式发布信息,并愿意授予“公共”访问权限,否则这是不可能发生的。 - Nathan Ernst
@Nathan Ernst 我会收集关于这个的信息,希望他们关心“小人物”。;-) - InsertNickHere
6个回答

9

我曾经处理过的大多数应用程序都是读取从银行网站导出的文件,这相对来说是比较直接的。

如果你也想这样做,你需要编写代码来实现以下功能:

  • 通过HTTPS登录到银行网站以下载文件
  • 获取文件格式的规格说明或进行反向工程
  • 对结果数据应用您选择的任何业务规则

我考虑过解析我可以从银行在线账户导出的文件。但是我已经写了太多的“解析某些东西”的内容,所以我跳过了这个步骤。尽管如此,这可能是学习银行连接主题的好起点。 - InsertNickHere
@insertnickhere 我认为你无法避免某种程度的解析。虽然我猜银行至少会有一种XML格式,比如OFX。而且我确实相信angelo-genovese的解决方案是一些金融应用程序在某些情况下采用的方法。至少看起来Quicken正在为我的一些账户使用这种方法,所以我猜其他人也会这样做。 - nicerobot
@nicerobot 我检查了一下,我的银行使用CSV格式。唉。;-) - InsertNickHere
@insertnickhere 好消息啊。CSV 是最容易处理的文本之一。如果你想要过度处理,甚至有 JDBC 驱动程序 可供使用。 - nicerobot
@nicerobot 谢谢。我会使用这些驱动程序。(如果我到达需要它们的地步的话。;-)) - InsertNickHere

2
尝试在没有银行明确书面许可的情况下以编程方式与银行网站进行交互,首先要记住的是这很可能会违反网站使用协议,并且可能会给你带来比它值得的麻烦多得多。其次,你不想通过尝试解决庞大而敏感的问题来开始“学习”编程。并不是说最终目标有什么问题,但这是一个漫长的旅程,你需要迈出第一步。我建议从一个简单的编程环境开始,比如Python或Perl。原因是你不必担心链接、库、代码生成等等。先熟悉你想要实现的基本功能,然后再重复在C++或Java中重新实现。首先专注于学习客户端/服务器编程。编写客户端和服务器,学习所有关于套接字的知识,学习所有关于TCP编程的知识,然后学习安全套接字层(SSL)和传输层安全性(TLS)。完成这些后,尝试切换到C++或Java,看看是否能够重复效果。这些主题有大量的教程。一旦你熟悉了这些,学习已经可用于完成大多数常见事物的工具和库。例如,libcurl非常适合创建常见的Internet应用程序协议客户端(HTTP、HTTPS、FTP等)。尝试创建一个交互式程序,你可以使用Web浏览器“登录”,输出XML格式的内容,并使用层叠样式表进行格式化。这将带你进入JavaScript世界,在那里有强大的工具,如jQuery。如果你正确地混合和匹配它们,你会发现开发可以非常有趣和相当快速。:-) 祝旅途愉快。

这不是关于学习如何编程。我已经做了10年了,但还是谢谢。 :) - InsertNickHere

1

我认为这是一个相当合理的业余项目;从一个简单的分类账开始,然后你可以添加功能。

开始这样一个项目,我会做以下几件事:

  • 确定初始功能集。一个好的开始可能只是其中一个分类账户 - 基本上是平衡支票簿。让它足够通用,以便你可以有几个。
  • 设计数据模型。你的分类账将有哪些字段?每个字段的值有什么限制?
  • 选择技术。你想用什么语言编程?你将如何持久化数据?你想要什么GUI - 像MS Money一样的fat client还是web应用程序?

从那里开始,如果需要,写一些设计笔记,然后开始编码!


注意:我刚注意到上面有关连接到在线银行的讨论。在尝试这之前,我建议从我所描述的简单分类帐开始。当您准备好时,您的银行可能会使用交换/ API标准-幸运的是您可以直接连接到安全的Web服务。 - G__
Harman,是的,这不是我想在几周内完成的任务。起初,我只是想检查是否可能。无论如何,感谢你的建议。 - InsertNickHere

1

谢谢,看起来很接近我需要的东西,但是现在我还不知道细节,所以我得稍后再仔细看看。 - InsertNickHere

1

你是否在寻找类似于mint.com的东西?根据我对他们安全政策的理解,他们是这样做的:您提供您的在线账户凭证,他们立即将其提供给银行,并获得一个“只读”账户登录。然后他们丢弃您提供的凭证,并使用“只读”凭证每24小时更新您的指标。我不知道他们是如何做到的或者他们是否与银行有特殊关系,但这是可能的。


看起来非常有趣,稍后我会仔细查看。 - InsertNickHere

0

我认为很少有(如果有的话)银行提供API。

瑞典的在线预算应用似乎要么依赖于某种Excel格式导出交易记录,要么就是让你“在银行系统中标记所有交易,然后使用Ctrl+C和Ctrl+V将其粘贴到文本框中”,然后进行解析。


mint.com自豪地宣称可以访问所有主要的美国银行。您将在线账户凭据提供给他们,他们立即将其提供给银行,并获得“只读”账户登录信息。然后,他们会丢弃您提供的凭据,并使用“只读”凭据每24小时更新您的指标。 - Adam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接