og

Python 获取IP地址并通过IP查询归属地

image.png

Python 获取IP地址并通过IP查询归属地。

不知道从啥时候起,国内的大论坛评论,回答啥的都已经开始显示IP地址,也可能是因为之前网暴啥的太多,来警戒部分网名网络不是不法之地。还有一些无脑地域黑的。

刚好自己的博客之后也有这个需求,就学习一下。

python获取ip

要获取地址当然就是要先获取ip,然后通过接口查出地址。 这边我用的是nginx代理搭的网站,接口框架是flask。

        
  • 1
  • 2
from flask import request ip = request.remote_addr

假如此方法直接获取ip那么得到的因为nginx反代得到的是127.0.0.1。

那么在nginx配置里我们要把ip地址加载请求header里

nginx配置

        
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
server { listen 80; server_name manage.kedong.me; location / { root /root/blogmanage/dist; index index.html index.htm; } location /api { proxy_pass http://127.0.0.1:5000; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; } }

image.png

Snipaste_20220809_170732.jpg

就可以在request.headers里取到IP了

通过ip获取地址

找的网上的接口 https://ip-api.com/ ,之后万一失效就在找,我测试好像这个接口必须翻墙才能用,服务器在国内的可能要另外找一个,代码就用requests直接请求下

        
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
from flask import request import requests @backstage.route(BASEURL + "/user_ip", methods=["GET"]) def user_ip(): ip = request.headers.get("X-Real-IP") url = 'http://ip-api.com/json/{0}?lang=zh-CN'.format(ip) r=requests.post(url) return r.json()

image.png

改变自己的归属地

那么网上的归属地显示无非是改变自己的ip,如果我们代理一下就可以改变了。

比如我用的v2ray 改改代理 把路由改全局在知乎上就变了

image.png

image.png

选了个香港的

image.png

选了个台湾的

image.png

当然现在真要查来源还是肯定有方法查到,除非你都是蒙面现金交易哈哈。

Article at   2022/08/10 10:19  Published  code  Category,viewed  67  times

Relevant tags:    Python 

Address:   https://kedong.me/article/89

Copyright Notice: Freely reproduced for non-commercial use