toomore / grs

📈 台灣上市上櫃股票價格擷取(Fetch Taiwan Stock Exchange data)含即時盤、台灣時間轉換、開休市判斷。
http://pypi.python.org/pypi/grs
MIT License
430 stars 164 forks source link

Tried to open a foreign host with url: http://1.1.1.1 #25

Open elleryq opened 8 years ago

elleryq commented 8 years ago

大約從 6 月開始,都會丟出 exception :Tried to open a foreign host with url: http://1.1.1.1

使用 wget/curl 也同樣會有一樣的問題,我想這是 mis.tse.com.tw 問題。 不知道有沒有方法可以避過。

toomore commented 8 years ago

@elleryq 目前看起來沒有辦法,他會很嚴格的先去認 cookie

elleryq commented 8 years ago

@toomore 謝謝回覆~ 所以你另外一個用 go 寫的工具也有一樣的問題,對嗎?

earxx commented 8 years ago

大概是從兩周前 左右吧就開始出現錯誤 ,先是"錯誤 120", 再來是 http://1.1.1.1 錯誤,還未深入了解, 只是 就狀況來看 之前像是 此 API 用某種方式去辨認 request 來源(cookie ?) 若不是 它認可的 即回覆錯誤! 現在看起來像是 一種 re-direct 的手法 ...., 看來真是蠻難解的 ,若有興趣 可以一起研究

toomore commented 8 years ago

@elleryq @earxx 他需要到頁面取得 cookie,即使取到 cookie 後訪問個股,也都需要先到個股的頁面後他的 API 才會吐回資料。同時間訪問太多股票 cookie 裡的 JSESSIONID 會失效,而訪問的 IP 也會被擋,目前測試後的狀況。即時資訊的部分暫時都無法使用。

我另外一個用 Go 寫的也是都一樣的問題 https://github.com/toomore/gogrs/compare/realtime

earxx commented 8 years ago

@toomore "需要先到個股的頁面後他的 API 才會吐回資料", 那就乾脆 parsing 它的個股的頁面算了 ! 我是自己用java改寫的 , 最近 我公事忙,並回鍋玩d3^^ , 時間比較少,過幾天 我先改寫一版看看, performance 一定 比Call API 差 ,但最近API 改版好像比 網頁改版還頻繁 (上回加了 time stamp) ,目前 好像也沒更好的方法, 對了 我是有塞資料庫的!

toomore commented 8 years ago

@earxx 沒有那麼簡單,他整個頁面都是用 API 取值,在當下是沒有任何資料的。

earxx commented 8 years ago

對的! 經您一提 我去看了,真的是 如您所言,看來得學習 所有 瀏覽器的 行為,包含訪問網址,cookie ,session, 再去call API, ..等等....恐怕真是不好弄的...也許還得學他的 延遲 query.. .

toomore commented 8 years ago

唉唉,頭痛啊!!!

elleryq commented 8 years ago

@toomore 朋友給我這個網址 http://www.coco-in.net/thread-41032-1-1.html 裏面有段 python 程式,他是用 requests.session() + header ,然後就可以抓到了~

earxx commented 7 years ago

好久沒動這個,這幾天又修改一下我的程式 先get 到首頁的 cookie ,複製到query 的 http client 就可以 用 api 來查. 只是 有時 查太多次之後 還是 會 出現 Tried to open a foreign host with url: http://1.1.1.X 請問各位有沒有這個問題呢? 我現在是 想說 就處理這個 exception ,重新(到首頁再取 cookie )來過 就是了 如果暫時被封了 也只有幾分鐘 ,反正就是試到完成.... 有其他的建議嗎? 謝謝