[問題] 以IP開啟https網頁失敗(憑證錯誤)

看板Python作者 (高山小屋? ?)時間8年前 (2016/07/11 19:43), 8年前編輯推噓4(4031)
留言35則, 4人參與, 最新討論串1/1
請教版上高手: 本人用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

07/11 19:45, , 1F
剛剛幫你用 curl 工具測試一下
07/11 19:45, 1F

07/11 19:45, , 2F
07/11 19:45, 2F

07/11 19:46, , 3F
結果 http 重導指向 http://www.google.com:443/
07/11 19:46, 3F

07/11 19:46, , 4F
無法正常打開是很正常的...
07/11 19:46, 4F
不是很明白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

07/11 20:28, , 5F
你先回答一下你為什麼要用ip吧,這牽扯到 Virtual Host
07/11 20:28, 5F

07/11 20:52, , 6F
要說是 Google 的問題也沒錯,你的程式碼用法也沒錯
07/11 20:52, 6F

07/11 20:53, , 7F
畢竟 Google 這個回應結果最後是無法連線上
07/11 20:53, 7F

07/11 20:54, , 8F
回到你的程式碼來說是的確可以忽略 ssl憑證檢查
07/11 20:54, 8F

07/11 20:55, , 9F
不過現在這年頭許多網站都是至少走 http/1.1存取
07/11 20:55, 9F

07/11 20:55, , 10F
http/1.1內多個 Host: 可以指定存取的主機名稱
07/11 20:55, 10F

07/11 20:56, , 11F
你這樣直接用 ip 連線在 Name-based 虛擬主機站台
07/11 20:56, 11F

07/11 20:57, , 12F
無法讓對方判斷你到底是要連線存取哪個站台
07/11 20:57, 12F

07/11 20:58, , 13F
這在目前許多使用cdn服務站台上更是如此
07/11 20:58, 13F

07/11 20:59, , 14F
拉回來,你不應該直接使用 ip 進行連線存取web
07/11 20:59, 14F

07/11 21:03, , 15F
少送Host這個欄位在Google服務群主機上來說,對方設定回
07/11 21:03, 15F

07/11 21:03, , 16F
應內容就是如此
07/11 21:03, 16F

07/11 21:12, , 17F
所以你還是要用 ip 方式連線存取嗎?答案當然是不要這
07/11 21:12, 17F

, , 18F
樣子做。另外 ssl 略過檢查也不好,想清楚略過的目的。
感謝.大致了解了, 舉google ip為例, 以及沒考慮vhost, 只是為了描述並簡化問題, 核心問題是想避免憑證錯誤, 並顯示有意義的網頁資訊, 但是本人使用的參數似乎沒用, 才來提問, 感謝ken大耐心解答。 ※ 編輯: namedkao (180.205.130.168), 07/11/2016 22:05:49

07/12 17:10, , 19F
ssl 憑證通常是簽發給domain的,所以不是用簽發的domain連
07/12 17:10, 19F

07/12 17:10, , 20F
線一定會憑證錯誤
07/12 17:10, 20F

, , 21F
你的問題只有一個正解:無法避免, 你亂搞被拒絕也是剛好
是的, 這下子只能腳踏實地做人, 老老實實的查dn和vhost了, 再次感謝各位。 ※ 編輯: namedkao (220.132.124.252), 07/12/2016 18:45:23

07/15 15:56, , 22F
憑證可以簽給 ip 使用嗎?答案是可以,只是很不尋常
07/15 15:56, 22F

07/15 15:56, , 23F
我想一開始樓主的問題是需要分開兩個階段來談
07/15 15:56, 23F

07/15 15:57, , 24F
1. 避開檢查是否憑證有效,--ignore-ssl-errors=true
07/15 15:57, 24F

07/15 15:57, , 25F
這個參數是正確的,所以這沒有問題
07/15 15:57, 25F

07/15 15:57, , 26F
2. google 網站你用 https://ip 連線的確有回應
07/15 15:57, 26F

07/15 15:58, , 27F
只是剛好重導他給你一個有點問題的 http://ip:443
07/15 15:58, 27F

07/15 15:58, , 28F
變成去用標準 http 存取一個 port 443 ssl 加密的站台
07/15 15:58, 28F

07/15 15:59, , 29F
所以溝通錯誤導致有問題
07/15 15:59, 29F

07/15 15:59, , 30F
3. 若只是舉例而已,那其實換其他站台就比較沒這問題
07/15 15:59, 30F

07/15 16:00, , 31F
比方 yahoo 站台你這樣測試就沒有問題,最後可以開啟
07/15 16:00, 31F

07/15 16:01, , 32F
只是你用 tw.yahoo.com 去查到 ip 然後用 https://ip
07/15 16:01, 32F

07/15 16:01, , 33F
去連線,最後會看到的是英文版的 yahoo
07/15 16:01, 33F

07/15 16:02, , 34F
畢竟他們有搞 CDN,而且有虛擬主機等設定所以最後是
07/15 16:02, 34F

07/15 16:02, , 35F
返回英文版網頁當預設內容
07/15 16:02, 35F
文章代碼(AID): #1NWuPLTw (Python)
文章代碼(AID): #1NWuPLTw (Python)