自己動手做 — 基富通基金通知

吳明倫 MingLun Wu
5 min readMar 13, 2020

--

基富通是近年來非常流行的基金買賣平台,因為低廉的手續費、多樣的基金可供選擇,吸引了許多用戶。 我從2019年初開始嘗試在基富通定期定額投資基金,因為便宜的費用還有提供許多小工具讓你挑選基金,可以依照個人的喜好、風險承受程度來挑選適合的基金。

其中我最喜歡的功能就是基金淨值通知,透過Line的聊天機器人會每天通知你目前的基金淨值,對於我們這種不想要一直花時間Follow的用戶來說,省下許多時間。

所有資訊一目了然,不需要花費太多時間登入去查看。

但是到了今年二月底突然收到遺憾的消息...

每天方便確認基金資訊的工具沒了...

雖然少了這麼棒的功能,但是已經習慣在這個平台操作基金了,還是希望能夠透過其他方法來得到類似的功能,稍微查了一下發現這個網站並沒有提供公開的API讓人家自行串接,所以我們只好透過自己撰寫小爬蟲來取得。

先附上成果圖,在本文的最後會附上我的Github連結,讓有需要的人能稍微更改後直接取用:

原本希望透過一樣透過Line機器人來通知我,但因為取得基金資訊需要登入基富通平台,不希望把自己的帳號密碼掛在heroku平台上,最後選擇放在本機,透過Mail的方式把資訊寄到電子信箱。 Let's Go!

首先我們要取得自己所持有的基金資訊,需要先行登入基富通平台,在爬蟲登入的部分有許多方法,可以透過Python的selenium套件模擬瀏覽器登入,但我希望這個小程式能默默的在背景執行就好,所以最後選擇透過Request的方式爬資料。

補充: selenium套件官方網站:

在基富通的登入頁面(https://www.fundrich.com.tw/login.html)檢閱元件,會發現在登入的過程中其實沒有送出表單,與網路上常看到的Form Data形式不太一樣,反而是執行了 loginweb.aspx

實際查看這個request,可以發現在登入的過程中,透過POST的方式把自己的帳號密碼送至此頁面。

所以我們把這裡的Header複製起來,再加上自己的帳號密碼透過Python的request套件送出請求。

在這邊要特別注意pay_load data與一般Form Data的差別,這邊所送出的資料是屬於pay_load型態,在送出POST要求時要特別注意:

我們得到了自己的基本資料(風險評估屬性)以及一串「Token」。

接著到「投資總覽」頁面(https://www.fundrich.com.tw/ECWeb2/#/quotaCompo)

裡面包含了許多個人投資的資訊,我們直接從這裡來取得我們要的資料。在畫面載入的過程中,我們觀察loading的API有哪些,發現了一隻可用的API!

GetTradeInfo 這隻API似乎就是我們需要的

我們把送到這隻API的Header以及Payload data記錄下來,實際送出POST request後就得到了我們所需要的資訊。 比較回傳的欄位值後我們可以將其Parse為我們所需要的資訊。

最後一步就是將我們Parse到的資訊透過smtplib送至自己的e-mail信箱,這部分可以直接在Google搜尋「Python 寄信」就能得到許多有用的資訊。

基富通本身是一個非常好用的基金購買工具,透過撰寫這個小程式是希望能節省登入查看淨值的時間,每天只需要執行Script,或是使用Crontab自動執行,就能得到與原先的Line Bot相同的效果。

文章的爬蟲過程寫的較為簡短,只是分享如何透過Python登入並取得交易的資訊,在送Request以及Parse結果的過程有做了一些處理,如果對這部分有興趣可以直接從程式碼中了解過程~

以下為Github連結:

有興趣的人可以嘗試使用看看~ 有任何問題或指教歡迎跟我討論!

--

--

吳明倫 MingLun Wu

筆記控 / 攝影者 / Data Engineer | 希望能靠著筆記提升忽高忽低的生產力 | 技術筆記 @ minglunwu.com