ping 域名
突然遇到這麼個需求,需要判斷是否內網環境。
這個問題,如果想通了就非常簡單。
嘗試一 ajax
一開始,我想到的是 ajax 訪問內網介面,不通就外網,通就內網。
這會有個小問題,需要伺服器加上跨域支援。
而且使用者瀏覽器可能也會有相容性問題。
所以放棄。
嘗試二 img 大法
這個是比較靠譜的方式,就是 img 載入內網圖片,如果成功,那就是內網,沒有相容性問題。
思路就是 new Image 然後載入內網ip的圖示,比如 ‘http://192.168.1.12/favicon.ico'。
[JavaScript] 純文字檢視 複製程式碼const img = new Image(); img.onload = () => '是內網,執行相關程式碼'; img.onerror = () => '不是內網,執行相關程式碼'; img.src = 'http://192.168.1.12/favicon.ico?_=' + (+new Date());
但如果你的內網服務沒 favicon.ico,那 logo 總會有吧,或者其他任意圖片。
npm 模組
於是乎就寫了個模組 ping-host。
安裝:
[Shell] 純文字檢視 複製程式碼$ yarn add ping-host # 或 $ npm i -S ping-host
使用:
[JavaScript] 純文字檢視 複製程式碼import ping from 'ping-host'; (async () => { await ping('taobao.com'); await ping('github.com', 'fluidicon.png'); await ping('github.com', 5000); await ping('github.com', 'fluidicon.png', 3000); })();
或頁面直接引入:
[HTML] 純文字檢視 複製程式碼<script src="https://unpkg.com/ping-host"></script> <script> (async () => { const ret = await ping('taobao.com'); })(); // 或 ping('taobao.com').then(ret => console.log(ret)); </script>
ping(host, image, timeout)
host: string, 域名或IP
image: 圖片,預設 favicon.ico
timeout: 超時(毫秒),預設不限制
小結
很多時候都只差靈光一現,一些很 low 的技巧,也可以用出高大上的效果。
相關文章
- ping ip、域名、埠
- Docker容器內部能ping通ip,ping不通域名(Name or service not known)解決方法Docker
- [GXYCTF2019]Ping Ping PingTF2
- [GXYCTF2019]Ping Ping Ping 1TF2
- 【網頁報404,域名可以PING通,但是網址就是打不開】網頁
- [GXYCTF2019]Ping Ping Ping 1 - Xxiaoma解題TF2
- Ping命令
- ping 命令
- linux系統下如何禁ping和允許pingLinux
- 批量ping主機
- vc實現ping
- Ruby on Rails Ping ++ 支付AI
- 解決方案:可以ping別人,但是別人不能ping我
- redis的repl-ping-slave-period和repl-ping-replica-periodRedis
- Windows Ping伺服器列表,把Ping的通寫入OK檔案,Ping不通的寫入NO檔案Windows伺服器
- 探究-ping指令的使用
- [Bash] ping netstat & traceroute Command
- epoll實現快速ping
- ping ,time,TTL詳解
- QT實現ping功能QT
- ping(未完待補充)
- 對接Ping++支付
- Linux基礎命令---pingLinux
- web_ping的writeupWeb
- 簡單的 ping 測試
- 如何正確使用ping呢
- golang併發ping主機Golang
- Linux——新增預設路由(能ping通本網段,但是ping不通其他網段)Linux路由
- Win10怎麼禁止ping_win10系統如何開啟禁pingWin10
- 域名到期-域名續費提醒-域名提示到期怎麼辦
- 域名防封_域名防紅_微信域名防攔截
- win10怎麼ping ip地址_win10怎樣ping本機ip地址Win10
- 域名管理加強之域名鎖
- Linux ping命令有什麼用?Linux
- tcpdump抓包分析NAT ping不通TCP
- 什麼是ping如何使用它
- ping探測與Nmap掃描
- Codeforces 1455C. Ping-pong