Re: importing bank statements

Matt&Katrina Funk <[email protected]> Sat, 21 May 2011 15:14:22 -0600
Newsgroups gmane.comp.finance.moneydance.general
Message-ID <[email protected]>
Hi Steve,
i'd love to collaborate as well. I'd be interested to know the following:
1) What functionality does the "fake" product provide
2) Is your code open source/a product you wish to sell?
3) How do you handle security (passwords etc...). Do you have to type
the passwords in manually everytime?
4) Can you program be used as a plugin to moneydance?

What i had in mind was something like the following:
1) have an input file in which the user can specify the relevant fields
for his specific bank site (i.e. login/passwd field, etc...)
Here the problem is security as i would not want to store passwords
(especially to bank accounts) in plain text files. Not sure how to deal
with that yet but i am sure somebody has done something like it before.
2) Then i was going to simulate the browser via the mechanize module in
python.

matt


On 5/19/2011 10:48 AM, Rob Lund wrote:
> Sounds like a great project, Steve!  I'd be happy to contribute, though I'm
> no JS developer.
>
> On Thu, May 19, 2011 at 10:00 AM, <[email protected]>wrote:
>
>>
>> I have been working on a solution off and on (more off than on) for a
>> few years now. There are a few different approaches to take.
>>
>> 1. Automate your browser
>> 2. Write a cURL script
>> 3. Write a program in your favorite computer language
>>
>> Writing a program in your favorite computer language is a boatload of
>> work.
>>
>> Writing a cURL script is often the recommended approach for automating
>> downloading of files from any web site. The usual advice is to use the
>> LiveHTTPHeaders plugin for Firefox to capture the HTTP requests sent
>> from Firefox to your bank and then rebuild each of those requests in
>> cURL. This would work for most web sites, but banks tend to have lots
>> of security on their web sites. Some of those security measures are
>> designed to prevent automated scripts from accessing the bank's web
>> site. For example, I found that using cURL to login to one bank's web
>> site would fail unless I had also used curl to download one tiny little
>> .gif file. Yes, the bank's server would fail any login attempt if that
>> one .gif file had not been downloaded. That can be overcome but then
>> you'll quickly run in to other problems. One such problem is that banks
>> often have the browser execute some JavaScript to calculate a value
>> that then gets sent back to the bank's server. cURL doesn't have a
>> JavaScript engine so you'd need to find some other tool that can
>> execute the JavaScript for you.
>>
>> Automating a browser is the best approach I've found so far. At first I
>> tried using the iMacros plugin for Firefox, but found it very difficult
>> to handle branching on certain conditions. Eventually I gave up on
>> iMacros. After I learned to write JavaScript I realized that
>> JavaScript's very purpose is browser automation. All I needed was a
>> browser that would let me "inject" some JavaScript into the downloaded
>> copy of the bank's web page. Unless you are using a browser debugger
>> most browsers specifically do not allow this for security reasons.
>> Using a debugger I was able to write a complete script to login to one
>> specific bank, parse each page, navigate to the downloads page and
>> download the transactions as an .ofx file.  I became convinced that
>> JavaScript is absolutely the correct approach.
>>
>> So I had decided to write my own special browser app that would allow
>> me to inject JavaScript. Earlier I claimed that writing a special
>> program would be a lot of work, and it would have been. Fortunately
>> before I invested too much time in writing my own program I found a
>> commercial product named "Fake."  Fake is a program for OS X. Fake is a
>> "fake" browser. Fake lets you create a workflow for automating
>> navigation of a web site. One of the things Fake allows you to do is
>> inject JavaScript into a bank's web page. Using Fake I was able to
>> fully automate downloading transactions from one specific bank.
>>
>> What I need to do now is break the JavaScript code into modules so that
>> code specific to one bank is separate from code that is generic to all
>> banks. I'd be happy to collaborate with anyone who wants to help build
>> up a library of code that can automate downloading transactions and
>> statements from any bank's web site. Let me know if you are interested.
>>
>> -SteveL
>>
> _______________________________________________
> moneydance-info mailing list
> [email protected]
> http://moneydance.com/mailman/listinfo/moneydance-info
>