js获取用户浏览器信息和ip地址以及位置

article/2025/11/6 4:30:01

获取浏览器信息代码

function userAgent () {let browserReg = {Chrome: /Chrome/,IE: /MSIE/,Firefox: /Firefox/,Opera: /Presto/,Safari: /Version\/([\d.]+).*Safari/,'360': /360SE/,QQBrowswe: /QQ/,Edge: /Edg/};let deviceReg = {iPhone: /iPhone/,iPad: /iPad/,Android: /Android/,Windows: /Windows/,Mac: /Macintosh/,};let userAgentStr = navigator.userAgentconst userAgentObj = {browserName: '', // 浏览器名称browserVersion: '', // 浏览器版本osName: '', // 操作系统名称osVersion: '', // 操作系统版本deviceName: '', // 设备名称}for (let key in browserReg) {if (browserReg[key].test(userAgentStr)) {userAgentObj.browserName = keyif (key === 'Chrome') {userAgentObj.browserVersion = userAgentStr.split('Chrome/')[1].split(' ')[0]} else if (key === 'IE') {userAgentObj.browserVersion = userAgentStr.split('MSIE ')[1].split(' ')[1]} else if (key === 'Firefox') {userAgentObj.browserVersion = userAgentStr.split('Firefox/')[1]} else if (key === 'Opera') {userAgentObj.browserVersion = userAgentStr.split('Version/')[1]} else if (key === 'Safari') {userAgentObj.browserVersion = userAgentStr.split('Version/')[1].split(' ')[0]} else if (key === '360') {userAgentObj.browserVersion = ''} else if (key === 'QQBrowswe') {userAgentObj.browserVersion = userAgentStr.split('Version/')[1].split(' ')[0]} else if (key === 'Edge') {userAgentObj.browserVersion = userAgentStr.split('Edg/')[1].split(' ')[0]}}}for (let key in deviceReg) {if (deviceReg[key].test(userAgentStr)) {userAgentObj.osName = keyif (key === 'Windows') {userAgentObj.osVersion = userAgentStr.split('Windows NT ')[1].split(';')[0]} else if (key === 'Mac') {userAgentObj.osVersion = userAgentStr.split('Mac OS X ')[1].split(')')[0]} else if (key === 'iPhone') {userAgentObj.osVersion = userAgentStr.split('iPhone OS ')[1].split(' ')[0]} else if (key === 'iPad') {userAgentObj.osVersion = userAgentStr.split('iPad; CPU OS ')[1].split(' ')[0]} else if (key === 'Android') {userAgentObj.osVersion = userAgentStr.split('Android ')[1].split(';')[0]userAgentObj.deviceName = userAgentStr.split('(Linux; Android ')[1].split('; ')[1].split(' Build')[0]}}}return userAgentObj}console.log(JSON.stringify(userAgent()))

效果如下

 

获取用户ip地址代码

 const getIPs = (callback) => {var ip_dups = {};var RTCPeerConnection = window.RTCPeerConnection|| window.mozRTCPeerConnection|| window.webkitRTCPeerConnection;var useWebKit = !!window.webkitRTCPeerConnection;var mediaConstraints = {optional: [{ RtpDataChannels: true }]};// 这里就是需要的ICEServer了var servers = {iceServers: [{ urls: "stun:stun.services.mozilla.com" },{ urls: "stun:stun.l.google.com:19302" },]};var pc = new RTCPeerConnection(servers, mediaConstraints);function handleCandidate (candidate) {var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/var hasIp = ip_regex.exec(candidate)if (hasIp) {var ip_addr = ip_regex.exec(candidate)[1];if (ip_dups[ip_addr] === undefined)callback(ip_addr);ip_dups[ip_addr] = true;}}// 网络协商的过程pc.onicecandidate = function (ice) {if (ice.candidate) {handleCandidate(ice.candidate.candidate);}};pc.createDataChannel("");//创建一个SDP(session description protocol)会话描述协议 是一个纯文本信息 包含了媒体和网络协商的信息pc.createOffer(function (result) {pc.setLocalDescription(result, function () { }, function () { });}, function () { });setTimeout(function () {var lines = pc.localDescription.sdp.split('\n');lines.forEach(function (line) {if (line.indexOf('a=candidate:') === 0)handleCandidate(line);});}, 1000);}getIPs((ip) => {console.log('ip', ip)});

效果如下

拿到ip地址后拼接到url上,然后发送请求获取返回的数据

这里是在 vue中created生命周期中发送请求

 返回输入如下

 

 OK 大功告成


http://chatgpt.dhexx.cn/article/K8XL2Hun.shtml

相关文章

js方法获取本机IP

记录一次工作中需求 获取本机IP getUserIP(onNewIP) {// onNewIp - your listener function for new IPs//compatibility for firefox and chromevar myPeerConnection window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;var pc …

【2023亲测可用】JS 获取电脑本地IP 和 电脑网络IP(外网IP|公网IP)

1、了解:电脑本地的IP地址(内网IP)和电脑本机在网络上的IP地址(外网IP|公网IP) 在运行窗口输入“cmd”,在弹出的界面里输入“ipconfig/all”。弹出的数据中,IPv4地址,就是电脑本地的…

C语言中的,“与”,“或”,“异或”解释

int main() {int a2;//取二进制010int b4;//取二进制100//int ca && b;int ca&b;//”&“这个叫“与”,与门中的与,两个都为1的时候才为1, 0与任何数都为0,“|”这个叫“或”,两个都为0的时候才为0&…

C语言位运算符及作用:与、或、异或、取反、左移和右移

一、& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0 应用:(1)清零 若想对一个存储单元清零,即使其全部二进制位为0,只要找一个二进制数,其中各个位符合一下条…

C/运算符(按位与、按位或、按位异或)

本文主要介绍C语言中按位与、按位或、按位异或三个操作符的使用。 该三个操作符中的位,代表的是二进制位。 按位与:& 运算规则:只有两个数的二进制同时为1,结果才为1,否则为0。(负数按补码形式参加按…

C | 妙用异或

CSDN话题挑战赛第2期 参赛话题:学习笔记 啊我摔倒了..有没有人扶我起来学习.... 目录 前言一、问题的引出二、异或实现俩变量值的交换三、总结 前言 异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0…

C语言中的异或 - 运算符^

最近在完成程序设计入门-C语言中需要计算异或,查阅了很多资料终于明白计算计算原理,记录一下方便以后查询。 流程 举例 为了方便理解,下面结合流程举例说明 a1 6 , 转化成二进制 a2 0110 b1 10,转化成二进制 b2 …

异或^操作符(C语言)

一、 简介 1. 异或^操作符:是一个位操作符,针对于二进制位(比特位)的操作。 2. 规则:两个数在同一个二进制位(比特位),相同为0;不同为1。 3. 异或操作符的一些性质&…

c语言异或(c语言异或符号)

请帮我讲解一下C语言中的异或运算 首先,我们看一下异或的原理: a 3 ^ 5; 3的二进制是0011,5的二进制是0101。异或发现两者的不同之处,所以a最终为0110b(4)。 了解了异或的基本原理后,接下来看上述的代码。 a^b; 这一句…

C语言异或操作详解(小小异或,大大作用~)

文章目录 *按位异或"^"(1)何为“^”:①“^”的介绍 (2)用于算法的经典案例: 1.数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?(源自leetcode面…

【c语言操作符系列1】^(异或操作符)讲解和多种例题详解

目录 一、^ 是什么(^称为异或) 二、^的规律(特点) 三、可利用^秒杀的常见例题(重点) 1、消失的数字 2、不一样的人生密码 3、交换两个数(不能创建中间变量) 4、找出只出现一个的两个数字 一、^ 是什么…

C语言中位运算异或“∧”的作用

前言: 为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长。 1.概念 异或运算符"∧"也称XOR运算符。它的规则是若参…

此公众号并没有这些scope的权限,错误码:10005

有时候在使用微信公众号时会出错,被告知没有权限,如下图所示: 出现这问题有以下原因: 订阅号没有相关的权限账号没有认证,没有相关的权限scope 参数位置错误 解决方案: 需要在OAuth2.0网页授权中配置授权…

Discuz 论坛 手机端微信登录报错:此公众号并没有这些scope的权限,错误码:10005

抛出问题 当discuz绑定微信公众号时,可以控制微信公众号的一些操作: 解决问题 而出现这种错误的原因一般由三种: 订阅号没有相关的权限账号没有认证,没有相关的权限scope 参数位置错误 排查问题: Discuz的微信…

10005---2017年国内开源项目Top50

国内开源项目,不错,大力支持,顶!!! 我要是有钱,一定出资赞助他们啊。 2017 年度码云热门项目排行榜 TOP 50 出炉啦!我们根据所有开源项目在码云的用户关注度、活跃度、访问量等信息…

Gurobi--Error code: 10005. Unable to retrieve attribute solved ‘Pi‘ 解决

Gurobi code 问题代码: 本来想获取变量的对偶空间, double[] dualmodel.get(GRB.DoubleAttr.Pi,model.getConstrs());但是报错,Error code: 10005. Unable to retrieve attribute ‘Pi’ 原因是在gurobi中,二进制变量&#xf…

此公众号并没有这些scope的权限 错误码10005

问题背景 看到好多原先可以的公众号忽然提示,“此公众号并没有这些scope的权限 错误码10005”。其实我也没真正解决。但是翻了论坛,为大家带来以下提示 解决方案

记录一次微信登录失败此公众号并没有这些 scope的权限,错误码:10005

在2023年4月17日,大概早上9:45分微信公众号出现 微信登录失败 此公众号并没有这些 scope的权限,错误码:10005 如下图: 经过网上查阅以及咨询微信开发的人,最终确认出是微信问题。刚开始其他公众号商家还没反馈到微信这个问题&…

Mysql出现问题:ERROR 1005 (HY000): Can‘t create table 解决方案

回城传送–》《数据库问题解决方案》 ❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作者🏆,阿里云专家博主🏆,51CTO专家博主🏆 ❤️技术活,该赏 ❤️点赞 👍 收藏 ⭐再看,养成…