獲取ip位址解析歸屬地

2021-09-21 19:54:34 字數 3155 閱讀 8608

本文目的:

通過分析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/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)"

說明:由於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.其他知識整合能力 

完畢,謝謝閱讀!

祝大家五一節快樂!

附錄乙個ip位址歸屬地解析的python版

#!/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 

defgetip(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位址解析歸屬地 版本v1.0 時間2013 04 29 版權gpl 作者itnihao 郵箱 itnihao qq.com 部落格 如需重新發行,請註明以上資訊,謝謝合作 通過分析ip位址歸屬地解析過程,分享 問題的基本步驟,逐步認識基礎知識的重要。宣告一下 基於本人知識視野,個人理解能力的...

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 ...