【问题标题】:Access own bank account via self-written application通过自己编写的应用程序访问自己的银行帐户
【发布时间】:2011-03-09 08:02:18
【问题描述】:

我已经使用 MS Money 好几年了,由于我的“编码兴趣”,很高兴知道从哪里开始学习编写此类应用程序的基础知识。最好说:这不是关于如何设计和编写应用程序,而是关于“银行详细信息”。 (一开始只显示某个银行账户的金额对我来说是一个愉快的目标。)。

我想用 C++ 或 Java 来做,因为我已经习惯了这些语言。

对于一个爱好项目来说,它会“太大”吗?我对所有的安全问题、银行服务器接口/技术等都不太了解。

首先,在“不”之后,我需要一个可靠的学习资源。

【问题讨论】:

  • 可能最大的问题是获得银行的合作。他们可能不希望您连接到他们的系统(银行对安全性可能非常保守),并且可能将任何尝试视为攻击。我建议您先检查您被允许拥有的访问权限。
  • @David Thornley 您可以毫无疑问地更改“遗嘱”的所有“可能”
  • @David Thornley 是的,我考虑过这一点,但由于我的银行提供在线服务,我希望有一种方法可以在不违反任何许可证/法律的情况下访问它。
  • 在这里同意@David Thornley。你将在这里面临一场极其艰苦的战斗。我在一家金融机构工作,我知道如果你只是打电话给我们要求,我们绝不会允许这种访问。除非您的银行以安全且有据可查的(可能是标准的)格式发布信息,并愿意向其他匿名应用授予“公开”访问权限,否则这种情况不会发生。
  • @Nathan Ernst 我会收集这方面的信息,希望他们关心“小人物”。 ;-)

标签: java c++ security onlinebanking


【解决方案1】:

我使用过的大多数应用程序都读取从银行网站导出的文件,这相对简单。

如果这是您要走的路,您需要编写代码:

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

【讨论】:

  • 我考虑解析可以从我的银行在线账户导出的文件。但是我写了很多“解析某些东西”的东西,所以我跳过了。尽管如此,这可能是学习有关银行连接主题的良好开端。
  • @insertnickhere 我认为您不会避免某种解析。虽然我猜银行至少会有一种 XML 格式,比如 OFX。而且我确实相信 angelo-genovese 的解决方案是某些金融应用程序在某些情况下使用的方法。至少看起来这就是 Quicken 对我的一些帐户的用途,所以我猜其他人也会这样做。
  • @nicerobot 检查了这个,我的银行使用 CSV。哦。 ;-)
  • @insertnickhere 这是个好消息。 CSV 是一些最容易处理的文本。如果您想玩得过火,甚至可以使用 JDBC drivers
  • @nicerobot 谢谢。我将使用的驱动程序。 (如果我做到了我需要它们的地步。;-)
【解决方案2】:

在没有银行明确书面许可的情况下尝试以编程方式与银行网站进行交互时,首先要记住的是,这很可能违反了网站使用协议,并且可能会给您带来更多的麻烦。

其次,您不想通过尝试解决如此庞大和敏感的事情来开始“学习”编程。并不是说最终的目标有什么问题,但那是一千个联赛的旅程,您需要迈出第一步。

我想说从一个简单的编程环境开始,比如 python 或 perl。原因,您不必担心链接、库、代码生成等。习惯于您想要在功能上实现的基础知识,下一步将是在 C++ 或 Java 中重新实现。

首先要专注于学习客户端-服务器编程。

写一个客户端,写一个服务器,学习所有关于套接字的知识,学习所有关于 TCP 编程的知识,

然后了解安全套接字层 (SSL) 和传输层安全性 (TLS)。

完成此操作后,尝试切换到 C++ 或 Java,看看是否可以重复效果。

有大量关于这些主题的教程。

一旦您习惯了这一点,请了解哪些工具和库已经可以用来做最常见的事情。例如,libcurl 非常适合创建常见的 Internet 应用程序协议客户端(HTTP、HTTPS、FTP 等)。

看看您是否可以创建一个交互式程序,您可以使用您的网络浏览器“登录”该程序以 XML 格式输出内容并使用级联样式表对其进行格式化。

这应该会带你进入 javascript 世界,那里有 jquery 等强大的工具。如果你正确地混合和匹配这些,你会发现开发会非常有趣并且非常快速。

:-)

旅途愉快。

【讨论】:

  • 这不是学习如何编程。我现在这样做了 10 个
【解决方案3】:

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

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

  • 决定初始功能集。一个好的开始可能只是分类帐/帐户之一 - 基本上是平衡支票簿。使其足够通用,以便您可以拥有多个。
  • 设计数据模型。您的分类帐将包含哪些字段?每个值有什么限制?
  • 选择技术。你想用什么语言编程?你将如何持久化数据?你想要什么 GUI - 像 MS Money 这样的胖客户端或网络应用?

如果有必要,从那里写一些设计说明并开始编码!

【讨论】:

  • 注意:我刚刚注意到上面关于连接到网上银行的讨论。在您尝试之前,我将从我描述的简单分类帐开始。当您准备好时,您的银行可能会使用交换/api 标准 - 运气好的话,您可以连接,例如到安全的网络服务。
  • Harman 是的,这不是我想在几周内做的事情。起初我想看看它是否可能。无论如何感谢您的提示。
【解决方案4】:

您可能会查看OFX4J,这是Open Financial Exchange 规范的实现,在@nicerobot 的评论中提到了here

【讨论】:

  • 谢谢,看起来很接近我需要的东西,但目前我不知道细节,所以今天晚些时候我必须仔细看看。
【解决方案5】:

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

【讨论】:

  • 看起来挺有意思的,后面我会详细看的。
【解决方案6】:

我认为没有多少(如果有的话)银行提供 api。

瑞典的在线预算应用程序似乎依赖于以某种 excel 格式导出交易,或者只是让您“标记银行系统中的所有交易,然后在文本框中按 ctrl-c 然后按 ctrl-v ",然后解析。

【讨论】:

  • mint.com 拥有所有美国主要银行的访问权限。您将您的在线帐户凭据提供给他们,他们会立即将其提供给银行并取回“只读”帐户登录信息。然后,他们会丢弃您提供的凭据,并使用“只读”凭据每 24 小时更新一次您的指标。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-19
  • 1970-01-01
  • 2013-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多