1. 程式人生 > >打造一款虛擬幣交易分析軟件

打造一款虛擬幣交易分析軟件

wire pyqt lan asc post請求 不能 baidu 手機流量 article

  由於各大虛擬幣交易平臺更多地顯示自己平臺上的虛擬幣交易信息,如果想同時看不同平臺上的虛擬幣交易情況時,就要打開很多頁面而且需要不停地切換頁面,操作非常不方便,於是就想著做一款工具,能實時顯示當前不同虛擬幣交易所的價格方便操作。

  開始的計劃是,分別調用自己感興趣的平臺提供的API,以獲取當前不同幣種的當前價格,但是在進行編程的時候,遇到一些困難:

  1、獲取速度問題:比如當需要獲取比特幣在不同平臺上的價格信息時,就要分別訪問各個平臺的API,想要獲取5個交易平臺的比特幣價格時,就要分別獲取5次,當如果增加幣種,比如萊特幣,以太坊等時,訪問的次數就會成倍增長,一個簡單的公式:訪問次數(s) = 平臺數(n) × 幣種數(m),這樣效率非常低下;

  2、數據格式問題:不同平臺的API,返回的數據格式類型也是有很大區別的,當統計數據時就會因為數據格式不統一而顯得非常淩亂,處理起來相當麻煩;

  3、法幣類型不一致:因為不同國家的發行的貨幣類型不一樣,美國發行美元,日本發行日元,中國發行人民幣,獲取到的價格是以不同貨幣類型的價格,這裏就為了便於觀察需要將這些不同國家交易所的價格進行一個此時兌換人民幣匯率的轉換,也不是很方便。

  

  所以就想著能不能找到哪一家交易平臺已經把所有的平臺的價格做了一個匯總,這樣我只需訪問這一個交易所的網站,我就能獲取到所有的交易所不同幣種的價格,對比分析了很多家,發現僅有幾家交易所可以觀察不同平臺的價格:幣看、sosobtc、比特兒。

  1、首先是幣看,這家交易所雖然提供了方便好用的API,但是收錄的幣種太少,只有幾款主流幣,很多山寨幣沒有收錄,比如:比特股,狗狗等,所以不考慮。

  2、sosobtc的API使用起來非常不方便,只有javascript的API,而且收錄的平臺和幣種也是參差不齊,也不考慮。

  3、接著是比特兒,比特兒的手機APP有一個全球行情的按鈕,非常方便,如下圖,而且它還幫你按照當前兌換人民幣的匯率把價格換算好了,那麽直接取來就能用,而且在同一網站上,數據格式也是同一規格,處理起來就相當方便了。

技術分享

  但是遇到難題了,比特兒官方並沒有提供比特兒這個獲取全球行情的接口,在官網上也沒有這樣的一個全球行情頁面供我爬取,只有在手機APP上才有全球行情的按鈕,無法用wireshark、burpsuite等工具抓包分析,那可不可以抓取手機的數據呢,之前沒有試過抓手機的數據,首先想到的方法是:下一個360免費wifi,開啟WiFi讓手機連接,這樣手機的流量就會經過PC的網卡,我們就可以用wireshark等工具抓取到這些數據用來分析,誰知道這些流量都經過了360wifi的防竊聽處理,根本獲取不到可用的數據,這個方案行不通,糾結了很久覺得這樣的方案不可行,正想回到起點用各個平臺API的本辦法來分別獲取各幣種的價格,忽然靈光一閃,可不可以用fiddler來抓取手機流量呢,之前沒有試過fiddler,只是聽說過這麽一款軟件可以抓手機的數據包,懷著做實驗的心態下好fiddler,至於怎麽搭建抓包環境,我搜到一個教程,裏面說的很詳細:https://jingyan.baidu.com/article/03b2f78c7b6bb05ea237aed2.html,然後就成功抓到包了!各個幣種以及不同平臺的數據都整整齊齊排布好了,這種方法是可行的!!!然後用python模擬數據頭header添加上cookie,post請求就能獲取到數據,實驗成功!!!

  獲取到想要的數據了,命令行界面看起來很吃力,不方便使用,所以用pyqt5來做GUI可視化界面,成果如下(可以按照差價率排序):

技術分享

這樣看起來簡單明了了……

.

.

.

.

.

.

.

.

.

.

.

然而……

技術分享

(/= _ =)/~ ┴┴

打造一款虛擬幣交易分析軟件