看板 Python 關於我們 聯絡資訊
請教版上高手: 本人用selenium + phantomjs 以IP開啟https網頁失敗, (無法讀取應有資訊,例如title) 以域名開啟則沒有問題。 如開啟以下2個網址(其實是同1個網頁): https://74.125.203.94 (失敗) https://www.google.com.tw (成功) 推測應該是憑證錯誤的安全性問題, 嘗試加入webdriver.PhantomJS參數如下: service_args= ['--ignore-ssl-errors=true', '--ssl-protocol=any', '--proxy-type=none'] 一樣沒用, 非必要的話, 暫不考慮使用Chrome或Firefox, 也希望不用額外解析域名, 不知版上各位高手有何建議, 謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.132.124.252 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1468237397.A.77A.html ※ 編輯: namedkao (220.132.124.252), 07/11/2016 19:45:20
kenduest: 剛剛幫你用 curl 工具測試一下07/11 19:45
kenduest: curl -k -v https://74.125.203.9407/11 19:45
kenduest: 結果 http 重導指向 http://www.google.com:443/07/11 19:46
kenduest: 無法正常打開是很正常的...07/11 19:46
不是很明白Ken大的意思, 完全是因為『重新導向』的問題嗎? 但是用一般瀏覽器輸入: https://74.125.203.94 通常會顯示: 此網站的安全性憑證有問題。 另外請教, 如果真是『重新導向』的問題, 有好方法可以截取導向成功後的頁面嗎? ※ 編輯: namedkao (220.132.124.252), 07/11/2016 20:04:05 ※ 編輯: namedkao (220.132.124.252), 07/11/2016 20:04:55
AndCycle: 你先回答一下你為什麼要用ip吧,這牽扯到 Virtual Host07/11 20:28
kenduest: 要說是 Google 的問題也沒錯,你的程式碼用法也沒錯07/11 20:52
kenduest: 畢竟 Google 這個回應結果最後是無法連線上07/11 20:53
kenduest: 回到你的程式碼來說是的確可以忽略 ssl憑證檢查07/11 20:54
kenduest: 不過現在這年頭許多網站都是至少走 http/1.1存取07/11 20:55
kenduest: http/1.1內多個 Host: 可以指定存取的主機名稱07/11 20:55
kenduest: 你這樣直接用 ip 連線在 Name-based 虛擬主機站台07/11 20:56
kenduest: 無法讓對方判斷你到底是要連線存取哪個站台07/11 20:57
kenduest: 這在目前許多使用cdn服務站台上更是如此07/11 20:58
kenduest: 拉回來,你不應該直接使用 ip 進行連線存取web07/11 20:59
kenduest: 少送Host這個欄位在Google服務群主機上來說,對方設定回07/11 21:03
kenduest: 應內容就是如此07/11 21:03
kenduest: 所以你還是要用 ip 方式連線存取嗎?答案當然是不要這07/11 21:12
kenduest: 樣子做。另外 ssl 略過檢查也不好,想清楚略過的目的。
感謝.大致了解了, 舉google ip為例, 以及沒考慮vhost, 只是為了描述並簡化問題, 核心問題是想避免憑證錯誤, 並顯示有意義的網頁資訊, 但是本人使用的參數似乎沒用, 才來提問, 感謝ken大耐心解答。 ※ 編輯: namedkao (180.205.130.168), 07/11/2016 22:05:49
cph911: ssl 憑證通常是簽發給domain的,所以不是用簽發的domain連07/12 17:10
cph911: 線一定會憑證錯誤07/12 17:10
uranusjr: 你的問題只有一個正解:無法避免, 你亂搞被拒絕也是剛好
是的, 這下子只能腳踏實地做人, 老老實實的查dn和vhost了, 再次感謝各位。 ※ 編輯: namedkao (220.132.124.252), 07/12/2016 18:45:23
kenduest: 憑證可以簽給 ip 使用嗎?答案是可以,只是很不尋常 07/15 15:56
kenduest: 我想一開始樓主的問題是需要分開兩個階段來談 07/15 15:56
kenduest: 1. 避開檢查是否憑證有效,--ignore-ssl-errors=true 07/15 15:57
kenduest: 這個參數是正確的,所以這沒有問題 07/15 15:57
kenduest: 2. google 網站你用 https://ip 連線的確有回應 07/15 15:57
kenduest: 只是剛好重導他給你一個有點問題的 http://ip:443 07/15 15:58
kenduest: 變成去用標準 http 存取一個 port 443 ssl 加密的站台 07/15 15:58
kenduest: 所以溝通錯誤導致有問題 07/15 15:59
kenduest: 3. 若只是舉例而已,那其實換其他站台就比較沒這問題 07/15 15:59
kenduest: 比方 yahoo 站台你這樣測試就沒有問題,最後可以開啟 07/15 16:00
kenduest: 只是你用 tw.yahoo.com 去查到 ip 然後用 https://ip 07/15 16:01
kenduest: 去連線,最後會看到的是英文版的 yahoo 07/15 16:01
kenduest: 畢竟他們有搞 CDN,而且有虛擬主機等設定所以最後是 07/15 16:02
kenduest: 返回英文版網頁當預設內容 07/15 16:02