你是小阿巴,正在家里偷偷欣赏一部很精彩的内容。
你:嗯,真不错啊~
一时兴起,你留下了一条评论:作者牛掰!
结果刚发出去,你就发现评论下面竟然显示:北京
你大惊失色:啊,俺被定位了!这网站在监控俺!俺要举报它!
这时,程序员鱼皮突然出现在你身后,擦着鼻血说:淡定,很多平台都会显示用户 IP 归属地的,这很正常。
你吓了一跳:额,你谁啊?
鱼皮:我是古希腊掌管编程的神……精,下面我来科普一下 —— 你的 IP 归属地,是怎么被获取到的?
⭐️ 本文对应视频版:bilibili.com/video/BV1xC…
怎么获取你的 IP 归属地?
鱼皮:你上网的时候,你的电脑要跟服务器通信来获取网页和数据。
就像寄快递一样,快递员要把包裹送到你家,得知道你家的地址。这个地址就是 IP 地址,可以理解为你的网络门牌号。
你:但平台是怎么通过 IP 地址知道俺在 “北京” 的呢?
鱼皮:这就涉及到互联网的组织形式了。
为了方便管理和路由,全球互联网被划分为许多个巨大的网络领地,我们把每个领地叫做 自治系统(Autonomous System),简称 AS。
这些 AS 一般由电信、联通这样的运营商(ISP),或者大型互联网公司运营。
每个 AS 负责管理一大批 IP 地址,并规划数据包的传输路线。
运营商在拿到这些 IP 后,会根据自己的机房部署,把不同的 IP 地址段划分给不同城市的网络设备。
为了方便管理,每个 AS 都有一个全球唯一的编号,叫 ASN(Autonomous System Number)自治系统编号。
比如 AS4808 是中国联通北京省网络,联通会把其中一段 IP(比如 123.xx.xx.0 到 123.xx.xx.255)分配给他们在北京的接入机房。
你:所以想查俺 IP 的位置,关键就是找到 ASN?
鱼皮:有更简单的方法。全球有很多专业的机构(如 MaxMind、IP2Location)专门收集并汇总了这些 AS 内部 IP 段和城市的映射关系,做成了 IP 地理位置数据库。
数据库里会记录:这个 IP 段属于 AS4808(中国联通),且目前分配给了北京市的某个接入节点。就知道你大概所属的位置了。
我们打开 这个网站 查一下,就能看到你家 IP 的完整信息:
- Address:123.xx.xx.xx(你的 IP 地址)
- ISP:China Unicom(网络服务提供商,中国联通)
- ASN:AS4808(自治系统编号)
- ASN Organization:China Unicom(ASN 所属的运营商)
- Location:北京 中国(地理位置)
你激动了:哇,一目了然啊!
能定位多精确?
你紧张起来:等等,那平台管理员岂不是能顺着网线找到俺家门牌号?俺这就把网线拔了!
鱼皮:别慌,通过 IP 地址定位的精确度,取决于数据来源。
像刚才我们用的查询工具,还有微博、抖音这些社交平台,它们都是基于 ASN 和运营商数据来定位的,通常只能定位到市级或者区级,比如广东深圳、上海浦东这种。
你:反正不会显示到 “某栋某室” 对吧?那俺在新闻里看到有人说 “顺着网线抓人” 是怎么回事?
鱼皮:想要找到你的 精确定位,可以查询运营商那边详细的分配记录,记录着哪个 IP 在什么时间分配给了哪个用户,甚至有具体的安装地址。
但是,这些数据有严格的隐私保护,只有执法部门依法调查的时候才能查询。普通人和普通平台是查不到的,所以别担心。不做亏心事,不怕鬼敲门。
你若有所思:看来在网络上也不能乱说话呀……
鱼皮:不过,还有其他精确定位的方法。比如你给 APP 开了 GPS 权限,APP 就能直接读取你手机里的 经纬度坐标,精度可以达到 10 米以内。
哪怕你关了 GPS,只要你开了 WiFi 或蓝牙扫描权限,APP 照样能定位。它们会扫描你附近几个 WiFi 的特征 ID(BSSID),然后去云端数据库一比对,发现你周围这几个 WiFi 都在某栋写字楼里,就能反推出你也在那里。
你心有余悸:还好我的手机权限没有乱开…… 但是鱼皮,平台为什么要显示 IP 归属地呢?会不会侵犯用户的隐私啊?
会不会侵犯隐私?
鱼皮:其实这个功能是有依据的。2022 年 6 月,国家网信办发布了《互联网用户账号信息管理规定》,要求平台展示 合理范围内 的 IP 归属地信息,目的是便于公众监督,减少网络上的不实信息传播。
而且你看,正规平台只显示大致地区,并不涉及你的具体个人身份信息,也不会暴露你是谁、住在哪里。
你:原来如此!但如果俺是个大明星,粉丝不就知道俺大概在哪里了?万一人多力量大,不小心把俺逮到了怎么办?
对了,俺能不能修改自己的 IP 归属地呢?
怎么修改 IP 归属地?
鱼皮坏笑:这太简单了,你只需要买一张高铁票,从北京到天津,半个小时就搞定了~
你一拍脑袋:妙啊!
鱼皮:哼哼,不过还有更简单的方式 —— 通过代理服务器。
代理服务器就像网络中转站。
正常情况下,你的请求是直接发给目标网站的。
但如果用了代理服务器,你的请求会先发到代理服务器,再由它转发给目标网站。
这样一来,目标网站看到的就是代理服务器的 IP,而不是你的真实 IP。
你恍然大悟:俺懂了,就像俺让朋友帮忙寄快递,寄件地址显示的是朋友家,而不是俺家。
鱼皮:来,我给你演示一下。比如我在北京有台服务器,可以用一个叫 Nginx 的高性能 Web 服务器软件来配置代理。
首先,我在服务器上安装 Nginx(这里利用了宝塔 Linux 面板极速安装):
然后编辑配置文件 nginx.conf,配置一个简单的正向代理,也就是让你的请求通过代理服务器转发出去。
# 简易正向代理(注意:仅支持 HTTP 流量,不支持 HTTPS)
server {
listen 8080;
location / {
# 必须配置 DNS 解析器
resolver 8.8.8.8;
# 设置代理目标
proxy_pass http://$http_host$request_uri;
# 隐藏真实 IP,防止泄露给目标网站
proxy_set_header X-Real-IP "";
proxy_set_header X-Forwarded-For "";
proxy_set_header Via "";
}
}
配置好之后,重启 Nginx(或者重载配置):
接下来,当你通过这台服务器的 8080 端口访问 HTTP 网站时,网站看到的就是这台北京服务器的 IP 了。
不过这个简易配置只能代理 HTTP 网站,如果要代理 HTTPS,需要更复杂的配置或者使用专门的代理软件。不过思路是一样的,都是通过中转服务器来隐藏真实 IP。
你兴奋地手舞足蹈:阿巴阿巴,俺也要这样做!
鱼皮:技术虽然不难,但你要注意合理使用技术。
如果是正常的技术学习、企业应用,完全没问题,很多公司都会用代理服务器来管理网络流量。
但千万不要用来逃避平台规则或者做违规的事情。而且现在很多平台都有检测机制,能识别出你是不是用了代理访问。
你好奇道:它们是怎么检测出来的?
鱼皮:常见的方法有这几种
- 检查 HTTP 请求头,代理访问时会有一些特殊的请求头信息,比如 X-Forwarded-For
- 检查 IP 地址库,有些服务会维护已知的代理服务器 IP 黑名单
- 分析访问行为,比如同一个 IP 短时间内有大量不同用户的请求,就很可能是代理
- WebRTC 泄露检测。浏览器在实现视频通话时会尝试建立点对点连接,这个过程中可能暴露你的真实 IP 地址,即使你用了代理也没用
你:看来想完全隐藏 IP,还有点儿难啊……
鱼皮:所以最好还是合规使用网络,不做违规的事情哦。
小阿巴:明白了明白了!俺要在你的内容下评论,看看自己的归属地~
更多
编程学习交流:编程导航
简历快速制作:老鱼简历
面试刷题神器:面试鸭
Vibe Coding 教程开源:github.com/liyupi/ai-guide