獲取ip位址解析歸屬地
版本v1.0時間2013-04-29
版權gpl
作者itnihao
部落格
如需重新發行,請註明以上資訊,謝謝合作
通過分析ip位址歸屬地解析過程,分享**問題的基本步驟,逐步認識基礎知識的重要。
宣告一下:
基於本人知識視野,個人理解能力的限制,文中難免有不當之處,敬請理解。
大家都知道,網上有很多可以查詢ip位址歸屬地的**,ip138,**,qq等各大**都提供這種查詢,下面以qq為例,來**一下如何通過命令列來查詢獲取歸屬地的問題。
開啟**,輸入要查詢的ip
輸入要查詢的ip位址,於此同時,準備好抓包工具,以便對查詢資料進行分析,此處,我開了2個抓包工具,乙個是httpwatch網頁抓包,乙個是wireshark資料報分析。
通過分析資料報,可以看到如下資訊
看到綠色部分,採用post提交資料,提交的內容為searchip1=114.114.114.114
ok,此處已經找出規律了,查詢採用post提交叫,內容為searchip1=x.x.x.x
那麼,可以採用curl進行瀏覽器模擬提交資料了,命令格式如下
curl url -d "post提交內容" -e "refer位址" -a "瀏覽器標識"
#!/bin/baship=114.114.114.114
curl -d "searchip1=$ip" -e "" -a "mozilla/4.0 (compatible; msie 8.0; windows nt 5.1; trident/4.0; qqdownload 718; .net clr 2.0.50727)"
說明:由於curl開啟的字元和系統不符合,故無法顯示漢字,
可以將結果儲存為html,通過瀏覽器開啟,將會看到解析的位址結果。
檢視網頁源**
到這裡,已經替代了瀏覽器直接訪問,初步取得成果。
事情並未到此結束,下面繼續解決字元編碼問題
將gh2312字元轉換為utf-8標準字元,借助系統iconv轉換
iconv -f gb2312 -t utf-8因此命令變為
#!/bin/bash
ip=114.114
.114.114
curl -d "searchip1=$ip"
-e ""
-a "mozilla/4.0 (compatible; msie 8.0; windows nt 5.1; trident/4.0; qqdownload 718; .net clr 2.0.50727)" |
iconv -f gb2312 -t utf-8|
grep ".*"|sed "s/\(.*\).*\(.*\) \(.*\)/\1\2\3/g"
執行結果如下
需求基本搞定,然後是細節完善,寫成乙個指令碼,可以接引數ip位址就自動解析,此處不再寫了。當然,這個用python寫也許會更好。
這裡提供的僅僅是一種思路,解決問題的思路,而解決問題之前,需要具備一定的基礎知識
這裡需要的知識:
1.能用抓包工具進行抓包,並進行資料報分析2.熟悉curl命令
3.熟悉sed,grep等命令進行文字過濾
4.其他知識整合能力
完畢,謝謝閱讀!
祝大家五一節快樂!
#!/usr/bin/env python# coding=utf8
# filename: monitor_idc.py
# last modified: 2013-04-23 16:54
# author: itnihao
# mail: [email protected]
# description:
import urllib,re, sys
def getip(ip= '114.114.114.114'):
url = ""
data = "searchip1="+ip
html = urllib.urlopen(url, data).read().decode("gb2312")
pat = re.compile(r'(.*)
') result= re.findall(pat, html)
print ip +": " + result[0].encode("utf-8").replace(' ', '')
#getip('8.8.8.8')
getip()
taobao版本#!/usr/bin/env python
# coding=utf8
# filename: get_out_ip.py
# last modified: 2013-04-28 17:02
# author: itnihao
# mail: [email protected]
# description:
import urllib, re, ******json
#獲取出口ip位址
html= urllib.urlopen('').read()
pat = re.compile('red">([0-9]+.[0-9]+.[0-9]+.[0-9]+)')
ip = re.findall(pat, html)
ip = ip[0]
#獲取ip位址歸屬地解析
url = '' % ip
f = urllib.urlopen(url).read()
s= ******json.loads(f)
print ip+": "+s['data']['country']+s['data']['area']+s['data']['region']+s['data']['city']+s['data']['isp']
效果如下圖
獲取ip位址解析歸屬地
本文目的 通過分析ip位址歸屬地解析過程,分享 問題的基本步驟,逐步認識基礎知識的重要。宣告一下 基於本人知識視野,個人理解能力的限制,文中難免有不當之處,敬請理解。大家都知道,網上有很多可以查詢ip位址歸屬地的 ip138,qq等各大 都提供這種查詢,下面以qq為例,來 一下如何通過命令列來查詢獲...
PHP獲取IP歸屬地
ip string 必傳 獲取ip歸屬地 demo 四川省成都市 電信 function get ip city ip 中的字串 location substr location,strlen 1 將擷取的字串 location中的 替換成 將字串中的 替換成 location str replac...
切割位址,手機號歸屬地,IP歸屬地
pip install phone from phone import phone p phone def get pc ss s 13565656565 get provice and city try res p.find ss if res prov res.get province cit ...