博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
获取用户IP的几种办法
阅读量:7008 次
发布时间:2019-06-28

本文共 2308 字,大约阅读时间需要 7 分钟。

nginx + express 获取用户ip

nginx 配置

location / {    proxy_pass   http://127.0.0.1:3000;    proxy_redirect off;    proxy_set_header X-Real-IP $remote_addr;    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    proxy_set_header Host $http_host;    proxy_set_header X-NginX-Proxy true;}复制代码

express 代码片段

var express = require('express')var app = express()app.get('/', function(req, res) {	// 获取ip	var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;	console.log(ip)	res.send(ip)})app.listen(3000, function() {	console.log('Server is running in 3000')})复制代码

demo 地址:

原生javascript获取用户ip

存在兼容性问题(不稳定)

function getUserIp(onNewIP) {    // campatibility for firefox and chrome    var myPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;    var pc = new myPeerConnection({            iceServers: []        }),        noop = function() {},        localIPs = {},        ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g,        key;    function iterateIP(ip) {        if (!localIPs[ip]) onNewIP(ip);        localIPs[ip] = true;    }    // create a bogus data channel    pc.createDataChannel("");    // create offer and set local description    pc.createOffer().then(function(sdp) {        sdp.sdp.split('\n').forEach(function(line) {            if (line.indexOf('candidate') < 0) return;            line.match(ipRegex).forEach(iterateIP);        });        pc.setLocalDescription(sdp, noop, noop);    }).catch(function(reason) {        // An error occurred, so handle the failure to connect    });    // listen  for candidate events    pc.onicecandidate = function(ice) {        if (!ice || !ice.candidate || !ice.candidate.candidate || !ice.candidate.candidate.match(ipRegex)) return;        ice.candidate.candidate.match(ipRegex).forEach(iterateIP);    }}// ipgetUserIp(function(ip) {     console.log('ip', ip);});复制代码

第三方接口获取用户ip

function getIp() {  return new Promise((resolve, reject) => {    var script = document.createElement('script')    // script.src = 'https://jsonip.com/'    script.src = 'http://pv.sohu.com/cityjson?ie=utf-8'    script.onload = function() {      resolve(window.returnCitySN)    }    document.body.appendChild(script)  })}复制代码

转载于:https://juejin.im/post/5c14766de51d45351129aa84

你可能感兴趣的文章
keepalived vrrp_script的一些实例配置
查看>>
《数字逻辑设计与计算机组成》一 3.4 减法器
查看>>
Chrome浏览器也开启Material Design风格
查看>>
《系统分析与设计方法及实践》一2.1 软件生命周期
查看>>
Oracle Logminer 日志挖掘
查看>>
印媒:全球科技巨头竞相角逐印度“智能城市”项目
查看>>
《Servlet和JSP学习指南》一2.2 隐藏域
查看>>
[干货]基础机器学习算法
查看>>
12月14日全球域名商解析量22强:爱名网升至十七
查看>>
全球域名商解析新增量20强:中国占据7个席位
查看>>
在python中获取当前位置所在的行号和函数名
查看>>
如何导出PPT内的所有图片做素材(IT实用技巧)
查看>>
定时自动启动任务crontab命令用法
查看>>
Eclipse工具安装
查看>>
低成本和高性能的MySQL云数据库的实现
查看>>
IIS操作注册表
查看>>
htmlunit入门
查看>>
sql--视图
查看>>
聊天室
查看>>
shell备忘录
查看>>