2015-06-16

用 Wireshark 取得臺中市公車預估到站時間等資料

Wireshark 這個軟體可以分析上網時接收與傳送的封包, 非常好用,而且又是 Open Source。

Wireshark 似乎有很多深奧的功能,其實我了解不多,只會透過搜尋 GET 封包來取得資料,不過光是這樣常常就能得到很多有用的資訊。


前陣子突發奇想,來分析查詢 臺中市公車動態系統 的封包看看, 進入 Wireshark,選擇正在使用的網路,點一下 Start 程式就開始收集封包了。

然後連上 臺中市公車動態系統 ,隨便查詢一條路線,再回到 Wireshark , Ctrl+F 搜尋,選擇 String,輸入 get,點 Find 開始搜尋。


這時搜尋框會消失並且搜尋到第一個結果,接著按 Ctrl+N 可搜尋下一筆, Ctrl+B 搜尋上一筆,然後就一筆一筆查看是不是想要的相關資料。 比方說看到 GET /tcbus2/... 就正是我要找的東西, 開啟底下 Hypertext Transfer Protocol, 有一個 Full request URI 顯示出完整網址,直接點兩下就能在瀏覽器開啟。


最後,可以找到這四個網址:
http://citybus.taichung.gov.tw/tcbus2/GetStopEx.php?useXno=1&json=1&routeIds=701
http://citybus.taichung.gov.tw/tcbus2/GetRoutePtsEx.php?noEncode=1&useXno=1&json=1&routeIds=701
http://citybus.taichung.gov.tw/tcbus2/GetEstimateTime.php?routeIds=701
http://citybus.taichung.gov.tw/xmlbus3/GetBusData.json?routeids=701

看看裡面的文字,大概可以猜出這些網址分別代表: 每站的站名和座標、路線座標、每站的下一班車到站時間和正在行駛的公車位置等等資料。

只要把最後面的 routeIds= 改成想要查詢的路線編號,就能查詢那號公車了, 一般路線編號就是公車號碼,不過遇到 BRT藍線、藍1、35區、151副 之類的就無法直接知道編號, 只好去 臺中市公車動態系統 原始碼看了。

總之,這些網址的資料非常好用,像是 臺中市公車預估到站時間 和資訊人權貴的 行駛中公車及預計到站時刻 , 主要就是從上述的第三個網址抓資料。

另外,有了所有公車的路線座標後,就可以再寫程式 輸出成 kml 或是 輸出成 svg 圖形 來觀看, 在一個 私房地圖 同時觀看所有公車路線 是多麼壯觀啊。 靈活運用這些公車資料,將能創作出很多很好玩的東西。

No comments :

Post a Comment