python获取公网ip,本地ip及所在国家城市等相关信息收藏
python获取公网ip的几种方式
- from urllib2 import urlopen
- my_ip = urlopen('http://ip.42.pl/raw').read()
- print 'ip.42.pl', my_ip
- from json import load
- from urllib2 import urlopen
- my_ip = load(urlopen('http://jsonip.com'))['ip']
- print 'jsonip.com', my_ip
- from json import load
- from urllib2 import urlopen
- my_ip = load(urlopen('http://httpbin.org/ip'))['origin']
- print 'httpbin.org', my_ip
- from json import load
- from urllib2 import urlopen
- my_ip = load(urlopen('https://api.ipify.org/?format=json'))['ip']
- print 'api.ipify.org', my_ip
python 获取ip信息(国家、城市等)
python 获取ip信息(国家、城市等)
安装geoip2包:pip install geoip2
下载数据库文件:http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz
解压出GeoLite2-City.mmdb文件
新建py文件,内容如下:
import geoip2.database
reader = geoip2.database.Reader('./GeoLite2-City.mmdb') # mmdb文件路径
c= reader.country('123.123.123.123')
print c.country.names # 国家名
print c.country.code # 国家代码
# 其他信息看源码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
** 以下为配置自动更新数据库的步骤 **
在github下载geoipupdate最新包:geoipupdate-3.1.1.tar.gz
解压并安装:
tar -zxvf geoipupdate-3.1.1.tar.gz
./configure
sudo make
sudo make install
- 1
- 2
- 3
- 4
修改配置文件:/usr/local/etc/GeoIP.conf
# The following AccountID and LicenseKey are required placeholders.
# For geoipupdate versions earlier than 2.5.0, use UserId here instead of AccountID.
AccountID 0
LicenseKey 000000000000
# Include one or more of the following edition IDs:
# * GeoLite2-City - GeoLite 2 City
# * GeoLite2-Country - GeoLite2 Country
# For geoipupdate versions earlier than 2.5.0, use ProductIds here instead of EditionIDs.
EditionIDs GeoLite2-City GeoLite2-Country
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
执行更新:/usr/local/bin/geoipupdate
添加crontab实现每周更新:crontab -e0 0 * * 0 /usr/local/bin/geoipupdate
python 获取本机IP的三种方式
python获取本机IP的方式
第一种:

#!/usr/bin/python import socket
import fcntl
import struct
def get_ip_address(ifname):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
return socket.inet_ntoa(fcntl.ioctl(
s.fileno(),
0x8915, # SIOCGIFADDR
struct.pack('256s', ifname[:15])
)[20:24])
#get_ip_address('lo')环回地址
#get_ip_address('eth0')主机ip地址

第二种:

def get_local_ip(ifname):
import socket, fcntl, struct
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
inet = fcntl.ioctl(s.fileno(), 0x8915, struct.pack('256s', ifname[:15]))
ret = socket.inet_ntoa(inet[20:24])
return ret
print(get_local_ip("eth0"))

第三种:
import socket
print(socket.gethostbyname(socket.getfqdn(socket.gethostname())))
python获取公网ip,本地ip及所在国家城市等相关信息收藏的更多相关文章
- python获取公网ip的几种方式
python获取公网ip的几种方式 转 https://blog.csdn.net/conquerwave/article/details/77666226 from urllib2 import u ...
- python 获取本机的IP
python 获取本地的IP import socket import fcntl import struct def get_ip_address(ifname): s = socket.socke ...
- 利用python获取nginx服务的ip以及流量统计信息
#!/usr/bin/python #coding=utf8 log_file = "/usr/local/nginx/logs/access.log" with open(log ...
- 多媒体开发之--- Live555 server 获取不到本地ip 全为0
今天把wis-streamer live555 移植到8148上面跑起来了,运行testOnDemandRTSPServer的时候发现,本地IP地址居然为0.0.0.0; 于是乎就跟踪调试了下,看看它 ...
- 使用Python获取计算机名,ip地址,mac地址等等
获取计算机名 # 获取计算机名,常用的方法有三种 import os import socket # method one name = socket.gethostname() print(name ...
- python获取本机的IP
转载:https://www.cnblogs.com/whu-2017/p/8986842.html 方法一: 通常使用socket.gethostbyname()方法即可获取本机IP地址,但有时候获 ...
- 电脑ip(本地ip和本机ip)
1.localhost:localhost 是个域名,不是地址,它可以被配置为任意的 IP 地址,不过通常情况下都指向 127.0.0.1(ipv4)和 [::1](ipv6) 2.127.0.0.1 ...
- python 获取公网 ip
from urllib2 import urlopen my_ip = urlopen('http://ip.42.pl/raw').read() print 'ip.42.pl', my_ip fr ...
- python获取linux本机IP
#!/usr/bin/env python #encoding: utf-8 #description: get local ip address import os import socket, f ...
随机推荐
- django错误笔记(xadmin)——AttributeError: 'Settings' object has no attribute 'TEMPLATE_CONTEXT_PROCESSORS'
使用Xadmin,执行makemigrations和migrate时运行报错提示: AttributeError: 'Settings' object has no attribute 'TEMPLA ...
- Javascript定义变量
在JavaScript中通过var来定义变量,不管是数字还是字符串,都可以通过这种方式来定义:我们既可以在声明变量的同时给变量赋值,也可以先声明变量,再给变量赋值. <script> va ...
- tomcat顺序图摘要
1.Connector 处理一次请求顺序图 2.Context 和 wrapper 的处理请求时序图 3. 参考: https://www.ibm.com/developerworks/cn/java ...
- winform程序生成条形码并且并且保存到本地文件中。
今天公司让做一个输入数字.字母生成条形码并且可以以图片格式保存到本地.当看到这个需求时候感觉很搞笑,明明可以用文本框搞定的东西非得做个程序.哎,寄人篱下,不多说了,这就是养兵千日用兵一时. 我在网上找 ...
- 【docx4j】docx4j操作docx,实现替换内容、转换pdf、html等操作
主要是想要用此功插件操作docx,主要的操作就是操作段落等信息,另外,也想实现替换docx的内容,实现根据模板动态生成内容的效果,也想用此插件实现docx转换pdf. word的格式其实可以用xml来 ...
- 推荐系统之协同过滤的原理及C++实现
1.引言 假如你经营着一家网店,里面卖各种商品(Items),有很多用户在你的店里面买过东西,并对买过的Items进行了评分,我们称之为历史信息,现在为了提高销售量,必须主动向用户推销产品,所以关键是 ...
- hostapd 和 wap_supplicant
hostapd : user space daemon for access points, including, e.g., IEEE 802.1X/WPA/EAP Authenticator fo ...
- Centos6安装FreeSWITCH 1.5时./configure问题解决记录
系统:Centos 6.4 64位: FreeSWITCH版本:1.5 具体的安装过程参考FreeSWITCH 官网wiki (也可以参考我的博客<Centos6安装FreeSWITCH> ...
- Nodejs实现WebSocket通信demo
一.创建websocket.js文件 步骤: 1.创建websocket.js文件,复制如下代码: 2.安装nodejs-websocket依赖: 3.该文件夹下命令行执行 node websocke ...
- 如何优雅打印nginx header和body
场景 参考https://segmentfault.com/a/1190000000606867可以获取response的报文体,由于业务测试有获取响应头Header或响应体Body的需求,这里是通过 ...