http://www.telize.com/
2. 这个网站很不错,提供xml/json/csv的输出
https://freegeoip.net/
点击(此处)折叠或打开
- root@kali:/usr/local/src/py/network# curl freegeoip.net/csv/123.161.***.***
- 123.161.***.***,CN,China,41,Henan,Zhengzhou,,Asia/Shanghai,34.68,113.53,0
- root@kali:/usr/local/src/py/network# curl freegeoip.net/xml/123.161.***.***
- <Response>
- <IP>123.161.***.***</IP>
- <CountryCode>CN</CountryCode>
- <CountryName>China</CountryName>
- <RegionCode>41</RegionCode>
- <RegionName>Henan</RegionName>
- <City>Zhengzhou</City>
- <ZipCode></ZipCode>
- <TimeZone>Asia/Shanghai</TimeZone>
- <Latitude>34.6836</Latitude>
- <Longitude>113.5325</Longitude>
- <MetroCode>0</MetroCode>
- </Response>
- root@kali:/usr/local/src/py/network# curl -s freegeoip.net/json/123.161.***.*** |python3 -m json.tool
- {
- "ip": "123.161.***.***",
- "country_code": "CN",
- "country_name": "China",
- "region_code": "41",
- "region_name": "Henan",
- "city": "Zhengzhou",
- "zip_code": "",
- "time_zone": "Asia/Shanghai",
- "latitude": 34.6836,
- "longitude": 113.5325,
- "metro_code": 0
- }
http://ip-api.com/
如果仔细比较这上两个网站,你会发现ip-api.com 的输出内容会多一些,多输出3个column, 其中一个as, 这个应该是BGP路由协议的自治域。
点击(此处)折叠或打开
- root@kali:/usr/local/src/py/network/scraper# curl -s http://ip-api.com/xml/123.161.***.***
- <?xml version="1.0" encoding="UTF-8"?>
- <query>
- <status><![CDATA[success]]></status>
- <country><![CDATA[China]]></country>
- <countryCode><![CDATA[CN]]></countryCode>
- <region><![CDATA[41]]></region>
- <regionName><![CDATA[Henan]]></regionName>
- <city><![CDATA[Luohe]]></city>
- <zip><![CDATA[]]></zip>
- <lat><![CDATA[33.5717]]></lat>
- <lon><![CDATA[114.0353]]></lon>
- <timezone><![CDATA[Asia/Shanghai]]></timezone>
- <isp><![CDATA[China Telecom Henan]]></isp>
- <org><![CDATA[China Telecom Henan]]></org>
- <as><![CDATA[AS4134 Chinanet]]></as>
- <query><![CDATA[123.161.***.***]]></query>
- </query>root@kali:/usr/local/src/py/network/scraper# curl -s http://ip-api.com/csv/123.161.***.***
- success,China,CN,41,Henan,Luohe,,33.5717,114.0353,Asia/Shanghai,"China Telecom Henan","China Telecom Henan","AS4134 Chinanet",123.161.***.***
- root@kali:/usr/local/src/py/network/scraper# curl -s http://ip-api.com/json/123.161.***.***
- {"as":"AS4134 Chinanet","city":"Luohe","country":"China","countryCode":"CN","isp":"China Telecom Henan","lat":33.5717,"lon":114.0353,"org":"China Telecom Henan","query":"123.161.***.***","region":"41","regionName":"Henan","status":"success","timezone":"Asia/Shanghai","zip":""}root@kali:/usr/local/src/py/network/scraper#
- root@kali:/usr/local/src/py/network/scraper# curl -s http://ip-api.com/json/123.161.212.211 |python3 -m json.tool
- {
- "as": "AS4134 Chinanet",
- "city": "Luohe",
- "country": "China",
- "countryCode": "CN",
- "isp": "China Telecom Henan",
- "lat": 33.5717,
- "lon": 114.0353,
- "org": "China Telecom Henan",
- "query": "123.161.212.211",
- "region": "41",
- "regionName": "Henan",
- "status": "success",
- "timezone": "Asia/Shanghai",
- "zip": ""
- }
4. 这个网站比较一般,没什么特色而且很不规范。我写了个代码来parse这些信息,才发现其坑人的地方,
里面的span用法统一,输出的text除了第一个以外都放在span标签内,而一个是把text放在下面。
https://www.geoiptool.com/
另外推荐这篇文章:
https://www.geoiptool.com/
点击(此处)折叠或打开
- import requests
- from bs4 import BeautifulSoup
- from lxml.etree import HTML
- url="https://www.geoiptool.com/en/?ip="
- ipaddr="123.161.***.***"
- response=requests.get(url+ipaddr)
- #print(response.content)
- soup=BeautifulSoup(response.content,'lxml')
- #print(soup.prettify())
- contents=soup.find_all('div',class_='data-item')
- d={}
- key=contents[0].span.text.strip()
- value=contents[0].td.text.strip()
- d[key]=value
- for i in contents[1:]:
- key=i.span.text.strip()
- value=i.span.find_next().get_text().strip()
- d[key]=value
- for key in d:
- print(key,d[key])
另外推荐这篇文章: