1. 程式人生 > >web專案獲取訪問者內網Ip

web專案獲取訪問者內網Ip

//get the IP addresses associated with an account function getIPs(callback){ var ip_dups = {}; //compatibility for firefox and chrome var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; var
useWebKit = !!window.webkitRTCPeerConnection; //bypass naive webrtc blocking if(!RTCPeerConnection){ //create an iframe node var iframe = document.createElement('iframe'); iframe.style.display = 'none'; //invalidate content script
iframe.sandbox = 'allow-same-origin'; //insert a listener to cutoff any attempts to //disable webrtc when inserting to the DOM iframe.addEventListener("DOMNodeInserted", function(e){ e.stopPropagation(); }, false
); iframe.addEventListener("DOMNodeInsertedIntoDocument", function(e){ e.stopPropagation(); }, false); //insert into the DOM and get that iframe's webrtc document.body.appendChild(iframe); var win = iframe.contentWindow; RTCPeerConnection = win.RTCPeerConnection || win.mozRTCPeerConnection || win.webkitRTCPeerConnection; useWebKit = !!win.webkitRTCPeerConnection; } //minimal requirements for data connection var mediaConstraints = { optional: [{RtpDataChannels: true}] }; //firefox already has a default stun server in about:config // media.peerconnection.default_iceservers = // [{"url": "stun:stun.services.mozilla.com"}] var servers = undefined; //add same stun server for chrome if(useWebKit) servers = {iceServers: [{urls: "stun:stun.services.mozilla.com"}]}; //construct a new RTCPeerConnection var pc = new RTCPeerConnection(servers, mediaConstraints); function handleCandidate(candidate){ //match just the IP address var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3})/ var ip_addr = ip_regex.exec(candidate)[1]; //remove duplicates if(ip_dups[ip_addr] === undefined) callback(ip_addr); ip_dups[ip_addr] = true; } //listen for candidate events pc.onicecandidate = function(ice){ //skip non-candidate events if(ice.candidate) handleCandidate(ice.candidate.candidate); }; //create a bogus data channel pc.createDataChannel(""); //create an offer sdp pc.createOffer(function(result){ //trigger the stun server request pc.setLocalDescription(result, function(){}, function(){}); }, function(){}); //wait for a while to let everything done setTimeout(function(){ //read candidate info from local description var lines = pc.localDescription.sdp.split('\n'); lines.forEach(function(line){ if(line.indexOf('a=candidate:') === 0) handleCandidate(line); }); }, 1000); } //insert IP addresses into the page getIPs(function(ip){ var li = document.createElement("li"); li.textContent = ip; //local IPs if (ip.match(/^(192\.168\.|169\.254\.|10\.|172\.(1[6-9]|2\d|3[01]))/)) document.getElementsByTagName("ul")[0].appendChild(li); //assume the rest are public IPs else document.getElementsByTagName("ul")[1].appendChild(li); });

相關推薦

web專案獲取訪問者Ip

//get the IP addresses associated with an account function getIPs(callback){ var ip_dups = {}; //c

apache反向代理域名訪問,獲取ip,而不是代理ip

給客戶組專案,配置了域名,訪問域名時,總是訪問的是內網ip,這樣直接暴露內網ip不合規定,所以先審查程式碼, jsp原先寫法: String path = request.getContextPath(); String basePath = request.getSc

獲取樹莓派IP

通常在使用不帶外設輸入輸出裝置的樹莓派時(或其他Linux系統裝置),如果不給樹莓派固定靜態IP,重啟後樹莓派IP可能發生變化,由於需要重新確認樹莓派IP,找顯示器、鍵盤甚至滑鼠等各種操作隨之而來,導致重連樹莓派的這個過程會非常麻煩。 本人使用郵件通知的方式達到便捷獲取樹莓派內網IP的目

JAVA 獲取當前 和 外IP 地址

import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.InetAddress; import java.net.URL; public class UserIP

java程式碼中得到本地ip地址。獲取客戶端請求IP(終端使用者的網際網路或IP地址)

 private static String getLocalIP() throws Exception{    String localIP = "";    InetAddress addr = (InetAddress) InetAddress.getLocalHos

獲取本機的公網IPIP(JAVA原始碼)

public class Test { public static void main(String[] args) { try { String ip1 = getMyIP(); System.out.println("myIP:" + ip1);

nodejs中獲取ip地址

今天同事有個需求,希望用nodejs裡的web伺服器的對應的站點可以支援內網訪問,後來發現修改express裡的hostname屬性為自己的內網ip就可以了。但是問題是,我們的機器都是自動獲取內網ip,那麼這次寫死的hostname下次基本上就不能用了,於是我們想到了在no

獲取客戶端ip,親測有效

<html><head><meta charset="UTF-8"><script>var info = allinfo();document.write(info);var locator = new ActiveXObj

根據HttpServletRequest獲取使用者IP地址及判斷當前IP是否是IP

最近專案上遇到了獲取登入IP並判斷是否是內網IP的需求,在此整理一下實現方法。 首先使用者登入後,我們可以通過HttpServletRequest的request物件獲取使用者IP,但這些IP不一定是使用者的真實IP。 下面是一些常見請求頭: X-Forwarded-F

iOS 如何獲取手機外IP地址(附IP地址)

查找了一些方法,最初以為拿到的就是手機對外的公網地址,其實只是本地IP地址。下面把獲取手機內外網IP地址的方法總結下: 一、獲取手機本地靜態IP地址:(區域網) 方法1: 首先匯入標頭檔案: //IP地址需求庫 #import <sys/socket.h> #

shell和python獲取ip地址

1、shell命令:   linux:ifconfig|grep 'inet '|grep -v '127.0'|xargs|awk -F '[ :]' '{print $3}'   mac:ifconfig|grep 'inet '|grep -v '127.0'|xar

通過JS獲取真實的外IPIP以及IPv6地址

由於需求需要獲取到本機ip地址,查了半天相關只是不知所云,最後偶然得已法,遂試,果然ok,直接看下文。 通過JS獲取你真實的外網IP和內網IP以及IPv6地址,就算開代理也沒有用,想想真是太6,還能不能愉快的裝逼了,效果如下:

java筆記----獲取電腦上ipip

com nts als site throw str ddr print clas private static String getHostIP(){ String tempIP = "127.0.0.1";

IP環境搭建的ERP/OA/CRM如何實現遠程互訪?

收銀系統 辦公系統 項目管理 向日葵 ip地址 前言大多數企業都會在公司總部搭建各類項目管理辦公系統(如OA、ERP、CRM、收銀系統等等)進行運作管理,以提高員工的辦公效率及提升企業的管理水平。但隨著公司的不斷發展擴大規模,則會在全國甚至全球設立起分公司、辦事處、生產基地、倉儲中心等分支

用Linux命令行獲取本機外IP地址

p地址 org zip fig lai asp ech som ber # curl ifconfig.me 114.114.114.114 # curl icanhazip.com 114.114.114.114 # curl ident.me 114.114.114.1

c#得到本機ip、外ip

獲取本機 bre gethost post value 公網 內網ip end stream 內網 IPAddress ipAddr = Dns.Resolve(Dns.GetHostName()).AddressList[0];//獲得當前IP地址

關於公網IPIP

內網 關於 很多 公網ip 公網ip地址 地址 有一個 路由 學校 內網IP 指的就是局域網,相當於在同一個教師中,同一個路由器分發的同一個網段,比如說說是:192.168.11.xxx,就是指11網段。在這個教室中,我們可以互相通信。但是與我們這個教室不同的局域網就無法

服務器訪問控制——基於組網結構前端有防火墻,服務器都在防火墻,內部使用ip的架構

退出 lis sys.argv 3.1 ret 浮點數 文件 ftime datetime #!/usr/bin/env python#-*- coding: utf-8 -*-‘‘‘Create date: 2018-10-17Last update:Version: 1

Web專案獲取專案“相對路徑”,以獲取特定資源

//類載入根路徑 String classPath = this.getClass().getResource("/").getPath(); //類載入根路徑 URL xmlPath = this.getClass().getClassLoader().getResource(""

Linux centOS有2個IP地址的原因

今天除錯虛擬機器~把IP地址固定了,結果一查詢出現了2個IP地址, 更奇怪的是,2個地址都能ping通內網和外網IP,我想奇怪了遵照面向百度的原則,甭管什麼原因,先百度了再說,百度不到在自己想辦法 果然找到了和我一樣遭遇的。 原因是:我給系統分配了一個IP地址,但系統獲取地址的方式是動態的,