Доступ к собственному банковскому счету через самописное приложение

Я использую MS Money уже несколько лет, и из-за моего «интереса к программированию» было бы здорово узнать, с чего начать изучение основ программирования такого приложения. Проще говоря: дело не в том, как спроектировать и написать приложение, а в «банковских реквизитах». (Для меня было бы приятно просто отобразить сумму определенного банковского счета для начала.).

Я хотел бы сделать это на C++ или Java, так как я привык к этим языкам.

Не будет ли он «слишком большим» для хобби-проекта? Я мало что знаю обо всех вопросах безопасности, интерфейсах/технике банковского сервера и т.д.

В первую очередь после «нет» мне нужен надежный источник для обучения.


person InsertNickHere    schedule 28.06.2010    source источник
comment
Вероятно, самой большой проблемой является сотрудничество с вашим банком. Они могут не захотеть, чтобы вы подключились к их системе (банки могут быть очень консервативны в отношении безопасности), и могут рассматривать любую попытку как атаку. Я бы предложил сначала проверить, какой доступ вам будет разрешен.   -  person David Thornley    schedule 29.06.2010
comment
@David Thornley Вы можете поменять все майи на завещания без КАКИХ-ЛИБО сомнений   -  person Dr. belisarius    schedule 29.06.2010
comment
@David Thornley Да, я думал об этом, но, поскольку мой банк предлагает онлайн-сервис, я надеюсь, что есть способ получить к нему доступ, не нарушая никаких лицензий / законов.   -  person InsertNickHere    schedule 29.06.2010
comment
Согласитесь с @David Thornley здесь. Здесь вам предстоит очень тяжелая битва. Я работаю в финансовом учреждении, и я знаю, что мы бы никогда не разрешили такой доступ, если бы вы просто позвонили нам и попросили об этом. Если ваш банк не публикует информацию в безопасном и хорошо документированном (возможно, стандартном) формате и не готов предоставить публичный доступ к ней анонимному приложению, этого не произойдет.   -  person Nathan Ernst    schedule 29.06.2010
comment
@Nathan Ernst Я соберу информацию об этом, надеюсь, они заботятся о маленьких людях. ;-)   -  person InsertNickHere    schedule 29.06.2010


Ответы (6)


Большинство приложений, с которыми я работал, читаются в файле, экспортированном с веб-сайта банка, что относительно просто.

Если это путь, по которому вы хотите пойти, вам нужно написать код:

  • Авторизуйтесь на сайте банка, чтобы скачать файл по HTTPS
  • Либо получите спецификации для формата файла, либо реконструируйте его.
  • Примените любые бизнес-правила, которые вы выберете, к полученным данным
person Angelo Genovese    schedule 28.06.2010
comment
Я подумал об анализе файлов, которые я могу экспортировать из своего банковского онлайн-аккаунта. Но я много писал, чтобы что-то разобрать, поэтому пропустил это. Несмотря на это, это может быть хорошим началом для изучения темы банковских подключений. - person InsertNickHere; 29.06.2010
comment
@insertnickhere Я думаю, вы не избежите парсинга. Хотя я предполагаю, что у банка будет по крайней мере один формат XML, например OFX. И я верю, что решение angelo-genovese — это подход, который в некоторых случаях используют некоторые финансовые приложения. По крайней мере, похоже, что это то, что Quicken собирается сделать для нескольких моих учетных записей, поэтому я думаю, что и другие тоже. - person nicerobot; 29.06.2010
comment
@nicerobot Проверено, мой банк использует CSV. Д'о. ;-) - person InsertNickHere; 29.06.2010
comment
@insertnickhere Что ж, это хорошие новости. CSV — один из самых простых текстов для обработки. Для него даже есть JDBC-драйверы, если вам хочется переборщить. - person nicerobot; 29.06.2010
comment
@nicerobot Спасибо. Драйверы, которые я буду использовать. (Если я дойду до того момента, когда они мне понадобятся. ;-) - person InsertNickHere; 29.06.2010

Первое, что следует помнить при попытке программно взаимодействовать с банковским веб-сайтом без явного письменного разрешения банка, НАИБОЛЕЕ ВЕРОЯТНО, будет нарушением соглашения об использовании веб-сайта и может привести к большим проблемам, чем оно того стоит.

Во-вторых, вы НЕ хотите начинать «изучать» программирование, пытаясь заняться чем-то таким масштабным и чувствительным. Не то чтобы с конечной целью что-то не так, но это путешествие в тысячу лиг, и вам нужно сделать свой первый шаг.

Я бы сказал, начните с простой среды программирования, такой как Python или Perl. Причина в том, что вам не нужно беспокоиться о компоновке, библиотеках, генерации кода и т. д. Привыкайте к основам того, чего вы хотите достичь функционально, их повторная реализация на C++ или Java будет следующим шагом.

Для начала сосредоточьтесь на изучении клиент-серверного программирования.

Напишите клиент, напишите сервер, узнайте все о сокетах, узнайте все о программировании TCP,

затем узнайте о безопасных уровнях сокетов (SSL) и безопасности транспортного уровня (TLS).

Сделав это, попробуйте переключиться на C++ или Java и посмотрите, сможете ли вы повторить эффект.

На эти темы есть МНОЖЕСТВО руководств.

Как только вы привыкнете к этому, узнайте, какие инструменты и библиотеки уже доступны для выполнения наиболее распространенных задач. Например, libcurl отлично подходит для создания распространенных клиентов протоколов интернет-приложений (HTTP, HTTPS, FTP и т.п.).

Посмотрите, сможете ли вы создать интерактивную программу, в которую вы можете «входить» с помощью веб-браузера, которая выводит информацию в формате XML и форматирует ее с помощью каскадных таблиц стилей.

Это должно привести вас в мир javascript, где есть мощные инструменты, такие как jquery. Если вы смешиваете и сочетаете их правильно, вы обнаружите, что разработка может быть ОЧЕНЬ увлекательной и довольно быстрой.

:-)

Счастливого путешествия.

person Elf King    schedule 29.06.2010
comment
Дело не в том, чтобы научиться программировать. Я делаю это уже 10 ушей, но все равно спасибо. :) - person InsertNickHere; 29.06.2010

Я думаю, что это вполне разумный хобби-проект; начните с простой бухгалтерской книги, а затем вы можете добавлять функции.

Несколько вещей, которые я бы сделал, чтобы начать такой проект:

  • Определитесь с начальным набором функций. Хорошим началом может быть только одна из бухгалтерских книг / счетов - в основном балансировка чековой книжки. Сделайте это достаточно общим, чтобы у вас могло быть несколько.
  • Разработайте модель данных. Какие поля будут в вашей бухгалтерской книге? Какие ограничения на значения каждого?
  • Выбирайте технологии. На каком языке вы хотите программировать? Как вы будете сохранять данные? Какой графический интерфейс вы хотите - толстый клиент, такой как деньги MS или веб-приложение?

Оттуда напишите некоторые заметки по дизайну, если это необходимо, и начните кодировать!

person G__    schedule 28.06.2010
comment
Примечание: я только что заметил обсуждение выше о подключении к онлайн-банку. Я бы начал с простой бухгалтерской книги, которую я описал, прежде чем вы попытаетесь это сделать. Когда вы будете готовы, ваш банк, вероятно, будет использовать стандарт обмена/API — если повезет, вы можете просто подключиться, например. на безопасный веб-сервис. - person G__; 29.06.2010
comment
Harman Да, это не то, чем я хочу заниматься через несколько недель. Сначала я хотел проверить, возможно ли это вообще. Спасибо за ваши советы в любом случае. - person InsertNickHere; 29.06.2010

Вы можете изучить OFX4J, реализацию Open Financial Exchange спецификация, упомянутая здесь и в комментарии @nicerobot.

person trashgod    schedule 28.06.2010
comment
Спасибо, выглядит очень близко к тому, что мне нужно, но в настоящее время я не знаю подробностей, поэтому мне нужно поближе взглянуть позже сегодня. - person InsertNickHere; 29.06.2010

Вы ищете что-то mint.com? Насколько я понимаю их политику безопасности, они делают это так: вы даете им учетные данные своей онлайн-учетной записи, которые они немедленно передают в банк, и возвращаете логин учетной записи «только для чтения». Затем они отбрасывают предоставленные вами учетные данные и используют учетные данные «только для чтения» для обновления ваших показателей каждые 24 часа. Я не знаю, как они это делают и есть ли у них особые отношения с банками, но это возможно.

person Adam    schedule 28.06.2010
comment
Выглядит довольно интересно, позже посмотрю подробно. - person InsertNickHere; 29.06.2010

Я не думаю, что многие (если вообще есть) банки предоставляют API.

Бюджетные онлайн-приложения в Швеции, по-видимому, полагаются либо на экспорт транзакций в какой-либо формат Excel, либо просто требуют «отметить все транзакции в банковской системе, нажав Ctrl-C, а затем Ctrl-V в текстовом поле», что затем разбирает.

person Viktor Sehr    schedule 28.06.2010
comment
mint.com может похвастаться доступом ко всем основным банкам США. Вы даете им учетные данные своей онлайн-учетной записи, которые они немедленно передают банку, и получаете обратно доступный только для чтения логин учетной записи. Затем они отбрасывают предоставленные вами учетные данные и используют учетные данные только для чтения для обновления ваших показателей каждые 24 часа. - person Adam; 29.06.2010