当前位置: 首页 > news >正文

获取IP地址-根据IP获取位置信息

获取外网IP地址,并得到该地址所在位置;

如:101.249.255.255

对应:西藏自治区-拉萨市-堆龙德庆区

string ipAddress = GetIPAddress();
string location = GetIPLocation(ipAddress);
        /// <summary>/// 获取IP地址/// </summary>/// <returns></returns>public static string GetIPAddress(){try{//此接口查询速度最快var html2 = HttpGetPageHtml("http://www.net.cn/static/customercare/yourip.asp", "gbk");var ip2 = GetIPFromHtml(html2);if (!String.IsNullOrEmpty(ip2)) return ip2;return "";}catch (System.Exception ex){mzRunLog.RunlogDebug ("获取IP地址错误:" + ex.Message);return "";}}

        /// <summary>/// 根据IP获取我们所要的信息/// </summary>/// <param name="strIp"></param>/// <returns></returns>public static string GetIPLocation(string strIp){try{if (strIp == "")return "";string html = HttpGetPageHtml("https://www.ip138.com/iplookup.asp?ip=" + strIp + "&action=2", "gb2312");string pre = "var ip_result = {\"ASN归属地\":\"";int pos = html.IndexOf(pre);html = html.Substring(pos + pre.Length);html = html.Substring(0, html.IndexOf(' ')).Replace("移动", "").Replace("联通", "").Replace("电信", "");//string[] res = html.Split(new char[] { '省', '市', ' ' }, StringSplitOptions.RemoveEmptyEntries);String regex = "(?<province>[^省]+省|.+自治区)(?<city>[^自治州]+自治州|[^市]+市|[^盟]+盟|[^地区]+地区|.+区划)(?<county>[^市]+市|[^县]+县|[^旗]+旗|.+区)?(?<town>[^区]+区|.+镇)?(?<village>.*)";// 使用正则表达式匹配省、市、区、镇和村Match match = Regex.Match(html, regex);if (match.Success){string province = match.Groups["province"].Value;string city = match.Groups["city"].Value;string county = match.Groups["county"].Value;//string town = match.Groups["town"].Value;//string village = match.Groups["village"].Value;//Console.WriteLine("省:" + province);//Console.WriteLine("市:" + city);//Console.WriteLine("区/县:" + county);//Console.WriteLine("镇:" + town);//Console.WriteLine("村/街道:" + village);return city;}return "";}catch (System.Exception ex){mzRunLog.RunlogDebug("获取位置信息错误:" + ex.Message);return "";}}

 获取网页信息,解析获取网页中IP地址

        /// <summary>/// 获取页面html/// </summary>/// <param name="url">请求的地址</param>/// <param name="encoding">编码方式</param>/// <returns></returns>private static string HttpGetPageHtml(string url, string encoding){string pageHtml = string.Empty;try{using (WebClient MyWebClient = new WebClient()){Encoding encode = Encoding.GetEncoding(encoding);MyWebClient.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36");MyWebClient.Credentials = CredentialCache.DefaultCredentials;//获取或设置用于向Internet资源的请求进行身份验证的网络凭据Byte[] pageData = MyWebClient.DownloadData(url); //从指定网站下载数据pageHtml = encode.GetString(pageData);}}catch (Exception ex){throw ex;}return pageHtml;}/// <summary>/// 从html中通过正则找到ip信息(只支持ipv4地址)/// </summary>/// <param name="pageHtml"></param>/// <returns></returns>private static string GetIPFromHtml(String pageHtml){//验证ipv4地址string reg = @"(?:(?:(25[0-5])|(2[0-4]\d)|((1\d{2})|([1-9]?\d)))\.){3}(?:(25[0-5])|(2[0-4]\d)|((1\d{2})|([1-9]?\d)))";string ip = "";Match m = Regex.Match(pageHtml, reg);if (m.Success){ip = m.Value;}return ip;}

参考:

.Net/C# --- 根据Ip获取地址信息

正则表达式 划分省市区(直辖市和附详细地址包括市,区)

相关文章:

获取IP地址-根据IP获取位置信息

获取外网IP地址&#xff0c;并得到该地址所在位置&#xff1b; 如&#xff1a;101.249.255.255 对应&#xff1a;西藏自治区-拉萨市-堆龙德庆区 string ipAddress GetIPAddress(); string location GetIPLocation(ipAddress); /// <summary>/// 获取IP地址/// </s…...

Android13适配-Google官方照片视频选择器

官方照片选择器 图 1. 照片选择器提供了一个直观的界面&#xff0c;便于与您的应用分享照片。 照片选择器的界面可供浏览和搜索&#xff0c;并按日期降序向用户显示其媒体库中的文件。如隐私保护最佳实践 Codelab 中所示&#xff0c;照片选择器为用户提供了一种安全的内置授权…...

云计算的发展趋势和挑战

本文将探讨云计算的发展趋势和挑战&#xff0c;旨在帮助读者了解云计算的最新动态和未来发展方向。 随着信息技术的发展&#xff0c;云计算作为一种新兴的计算模式&#xff0c;已经得到了广泛的应用和认可。它通过将计算资源、存储资源和应用程序等服务通过互联网提供给用户&a…...

PyG-GAT-Cora(在Cora数据集上应用GAT做节点分类)

文章目录 model.pymain.py参数设置运行图 model.py import torch.nn as nn from torch_geometric.nn import GATConv import torch.nn.functional as F class gat_cls(nn.Module):def __init__(self,in_dim,hid_dim,out_dim,dropout_size0.5):super(gat_cls,self).__init__()s…...

java专项练习(验证码)

package 专题练习;import java.util.Random;public class Developing_CAPTCHA {public static void main(String[] args) {/* 需求:定义方法生成一个5位的验证码 验证码长度为5,前四位为大或小写字母,最后一位是数字*///方法: 如果我们要在一堆没有规律的数据中随机抽取,可以先…...

MS1861 视频处理与显示控制器 HDMI转MIPI LVDS转MIPI带旋转功能 图像带缩放,旋转,锐化

1. 基本介绍 MS1861 单颗芯片集成了 HDMI 、 LVDS 和数字视频信号输入&#xff1b;输出端可以驱动 MIPI(DSI-2) 、 LVDS 、 Mini-LVDS 以及 TTL 类型 TFT-LCD 液晶显示。可支持对输入视频信号进行滤波&#xff0c;图 像增强&#xff0c;锐化&#xff0c;对比度调节&am…...

广州华锐互动:利用VR复原文化遗址,沉浸式体验历史文物古迹的魅力

在过去的几十年里&#xff0c;科技发展飞速&#xff0c;为我们打开了无数新的视角和可能性。其中&#xff0c;虚拟现实&#xff08;Virtual Reality&#xff0c;简称VR&#xff09;技术的崭新应用&#xff0c;为我们提供了一种全新的、近乎身临其境的体验历史的方式。本文将重点…...

微信小程序——事件监听

微信小程序是一种轻量级的应用程序&#xff0c;它在移动设备上提供了丰富的用户体验。在开发微信小程序时&#xff0c;事件监听是一项重要的技术&#xff0c;它允许开发者捕捉和处理用户的各种操作。本文将介绍微信小程序事件监听的概念、用法和一些实用示例。 1. 什么是事件监…...

View绘制流程的源码所得

一些问题 子线程可以更新 UI 吗 答案是可以的&#xff0c;在特定的情况下可以 可以先在主线程中调用requestLayout() 方法&#xff0c;然后紧接着在子线程中更新UI&#xff08;原理&#xff1a;不要在子线程触发 checkThread() 方法&#xff0c;而checkThread() 方法的调用时…...

企业级数据仓库-理论知识

D3 AM 大数据中间件 Hive&#xff1a;将SQL转化成分布式Map/Reduce进行运算&#xff0c;也支持转换成Spark,需要单独安装Hive集群才能访问Spark,支持60%的SQL&#xff0c;延迟比较大。SparkSQL:属于Spark生态圈&#xff0c;Hive on Sqark。HBase: NoSQL,高并发读&#xff0c;适…...

解决flutter不识别yaml里面配置的git项目

解决办法找到相应的 git路径&#xff0c;然后手动 git pull 暂时先用这个笨方法&#xff0c;后面有更好的解决办法了再说 studio 自己拉取的项目里面没有ios 和lib包...

rust结构体

一、定义结构体类型 语法 struct Name_of_structure {field1: data_type,field2: data_type,field3: data_type, }注意&#xff1a; 不同于C&#xff0c;Rust的struct语句仅用来定义类型&#xff0c;不能定义实例。 结尾不需要;。 每个字段定义之后用 , 分隔。最后一个逗号可…...

Python - 小玩意 - 键盘记录器

pip install keyboardimport keyboard import timedef get_time():date_time time.strftime("%Y-%m-%d %H:%S", time.localtime())return date_timedef abc(x):if x.event_type down:print(f"{get_time()}你按下了{x.name}")with open(./键盘记录器.txt,…...

msvcp71.dll丢失的解决方法分享,全面分析msvcp71.dll丢失原因

msvcp71.dll 丢失的问题可能困扰着许多使用 Windows 操作系统的用户。msvcp71.dll 是微软 C运行时库中的一个动态链接库文件&#xff0c;负责提供一些基本的函数和类&#xff0c;例如字符串处理、数学运算、文件操作等。如果这个文件丢失或损坏了&#xff0c;那么在使用依赖于它…...

stm32----ADC模数转换

一、ADC介绍 ADC&#xff0c;即模数转换器&#xff0c;它可以将模拟信号转化为数字信号。在stm32种一般有3个ADC&#xff0c;每个ADC有18个通道。 12位ADC是一种逐次逼近型模拟数字转换器&#xff0c;它有多达18个通道&#xff0c;可测量16个外部和两个内部信号源。各个通道的A…...

Unity SteamVR 开发教程:用摇杆/触摸板控制人物持续移动(2.x 以上版本)

文章目录 &#x1f4d5;教程说明&#x1f4d5;场景搭建&#x1f4d5;创建移动的动作&#x1f4d5;移动脚本⭐移动⭐实时调整 CharacterController 的高度 &#x1f4d5;取消手部和 CharacterController 的碰撞 持续移动是 VR 开发中的一个常用功能。一般是用户推动手柄摇杆&…...

04条件构造器和常用接口

条件构造器和常用接口 wapper介绍 条件构造器的两个条件之间默认就是AND并列关系,如果需要或者的关系则需要调用构造器的or()方法 条件构造器类型作用Wrapper条件构造抽象类,最顶端父类AbstractWrapper生成SQL的where条件QueryWrapper封装查询或删除的条件UpdateWrapper封装修…...

什么是HTTP状态码?常见的HTTP状态码有哪些?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 什么是HTTP状态码&#xff1f;⭐ 1xx - 信息性状态码⭐ 2xx - 成功状态码⭐ 3xx - 重定向状态码⭐ 4xx - 客户端错误状态码⭐ 5xx - 服务器错误状态码⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前…...

vue3的双向绑定原理分析

谈到vue3的双向绑定原理&#xff0c;就得先知道&#xff0c;为什么vue2的双向绑定方式会被废弃&#xff1f; vue2的双向绑定 Object.defineProperty Object.defineProperty() 方法会直接在一个对象上定义一个新属性&#xff0c;或者修改一个对象的现有属性&#xff0c;并返回…...

MySQL数据库时间计算的用法

今天给大家分享如何通过MySQL内置函数实现时间的转换和计算&#xff0c;在工作当中&#xff0c;测试人员经常需要查询数据库表的日期时间&#xff0c;但发现开发人员存入数据库表的形式都是时间戳形式&#xff0c;不利于测试人员查看&#xff0c;测试人员只能利用工具对时间戳进…...

应用在儿童平板防蓝光中的LED防蓝光灯珠

现在电子产品多&#xff0c;手机、平板电脑、电子书等等&#xff0c;由于蓝光有害眼睛健康&#xff0c;于是市场上有很多防蓝光的眼镜、防蓝光的手机膜、防蓝光的平板&#xff0c;这些材料和设备到底有没有用&#xff1f;如何正确预防蓝光危害呢&#xff1f; 我们现在所用的灯…...

BERT 快速理解——思路简单描述

定义&#xff1a; BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;是一种预训练的语言模型&#xff0c;它基于Transformer架构&#xff0c;通过在大规模的未标记文本上进行训练来学习通用的语言表示。 输入 在BERT中&#xff0c;输入…...

二叉树实现的相关函数

1.二叉树的创建 BTNode* BinaryTreeCreate(BTDataType* a, int n, int* pi) { if (n0||a[*pi] #){ (*pi);return NULL;}BTNode* root (BTNode*)malloc(sizeof(BTNode));root->_data a[(*pi)];root->_left BinaryTreeCreate(a, --n, pi);root->_right Binary…...

Redis面试题(二)

文章目录 前言一、Redis 支持的 Java 客户端都有哪些&#xff1f;官方推荐用哪个&#xff1f;二、Redis 和 Redisson 有什么关系&#xff1f;三、Jedis 与 Redisson 对比有什么优缺点&#xff1f;四、说说 Redis 哈希槽的概念&#xff1f;五、Redis 集群的主从复制模型是怎样的…...

STP介绍

目录 STP概述 二层环路带来的问题 1.广播风暴 2.MAC地址漂移问题 3.多帧复制---这个好理解&#xff0c;同一个数据帧被重复收到多次&#xff0c;被称为多帧复制。 802.1D生成树 STP的BPDU BPDU主要分为两大类 配置BPDU RPC COST 配置BPDU的工作过程 TCN BPDU TCN…...

numpy 和 tensorflow 中的各种乘法(点乘和矩阵乘)

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 &#x1f447; &#x1f447; &#x1f447; 更多精彩机密、教程&#xff0c;尽在下方&#xff0c;赶紧点击了解吧~ python源码、视频教程、插件安装教程、资料我都准备好了&#xff0c;直接在文末名片自取就可 点乘和矩阵乘…...

(图论) 1020. 飞地的数量 ——【Leetcode每日一题】

❓ 1020. 飞地的数量 难度&#xff1a;中等 给你一个大小为 m x n 的二进制矩阵 grid &#xff0c;其中 0 表示一个 海洋单元格、1 表示一个 陆地单元格。 一次 移动 是指从一个陆地单元格走到另一个相邻&#xff08;上、下、左、右&#xff09;的陆地单元格或跨过 grid 的边…...

c++ 重载、重写、覆盖

重载&#xff1a;指在同一作用域内&#xff0c;有多个同名但参数不同的函数的现象&#xff0c;叫重载&#xff1b;可以是任何用户定义的函数&#xff0c;例如 类成员函数、类静态函数、普通函数重写&#xff1a;子类重写父类的同名函数&#xff0c;只要子类出现有父类的同名函数…...

Python异步编程高并发执行爬虫采集,用回调函数解析响应

一、问题&#xff1a;当发送API请求&#xff0c;读写数据库任务较重时&#xff0c;程序运行效率急剧下降。 异步技术是Python编程中对提升性能非常重要的一项技术。在实际应用&#xff0c;经常面临对外发送网络请求&#xff0c;调用外部接口&#xff0c;或者不断更新数据库或文…...

SpriteKit与Swift配合:打造您的第一个简易RPG游戏的步骤指南

1. 简介&#xff1a; RPG&#xff08;Role-Playing Game&#xff09;游戏是一种角色扮演游戏&#xff0c;它允许玩家在一个虚拟的游戏世界中扮演一个或多个角色。在本教程中&#xff0c;我们将使用Apple的2D游戏框架SpriteKit和Swift编程语言来创建一个简单的RPG游戏。我们将从…...

温岭网站建设公司/外链系统

Description Farmer John决定为他的所有奶牛都配备手机&#xff0c;以此鼓励她们互相交流。不过&#xff0c;为此FJ必须在奶牛们居住的N(1 < N < 10,000)块草地中选一些建上无线电通讯塔&#xff0c;来保证任意两块草地间都存在手机信号。所有的N块草地按1..N 顺次编号。…...

做推广自己找网站/最近三天的新闻大事

速度映射图主要是为了得到每个像素相对于前一帧的运动矢量&#xff0c;其中一种方法是使用摄像机的深度纹理来推导。 推导过程如下&#xff1a; 先由深度纹理逆推出NDC&#xff08;归一化的设备坐标&#xff09;下的顶点坐标&#xff0c;利用VP矩阵&#xff08;视角*投影矩阵&a…...

wordpress离线编辑/潍坊今日头条新闻

这是网络上推荐的几个Html5混合开发好用的编辑器。 传送门 https://blog.csdn.net/simple_tifa/article/details/80492180 个人感觉比较好用的是Hbuilder这款软件。 传送门 https://sm.myapp.com/original/Development/HBuilder.9.0.2.windows.zip HBuilder是DCloud&…...

百度街景地图网页版/企业网站seo

摘要&#xff1a;因为没有学习过java等语言&#xff0c;所以不能理解块级作用域的意思百度了以后在网上找到的块级作用域的解释是块级作用域&#xff1a;变量在离开定义的块级代码后立即被回收。我的理解是不是块级作用域是一定要声明的&#xff1f;然后它等同于局部作用域&…...

佛山网站建设app/一年的百度指数

在家自制手工曲奇&#xff0c;因为在制作过程中没有添加防腐剂和添加剂&#xff0c;所以保质期多半为15-30天&#xff0c;而且必须是密封好保存在阴凉干燥处&#xff0c;否则时间会缩短。为了保证手工曲奇的口感&#xff0c;曲奇应尽量在短时间内吃完&#xff0c;那如果做的太多…...

网站ui/360推广怎么收费

【科技犬】华为6月2日发布会上会公布鸿蒙系统第一批升级名单&#xff0c;并且会在5月31号开始归档&#xff0c;6月2日同步升级&#xff0c;后续再逐步公布各批次升级时间&#xff0c;其中首批名单包括&#xff1a;Mate40、Mate40 Pro、Mate40 Pro、Mate40 RS、MateX2、nova8、n…...