獲取ip位址解析歸屬地

2021-09-04 06:34:56 字數 3033 閱讀 6305

獲取ip位址解析歸屬地

版本v1.0 

時間2013-04-29 

版權gpl 

作者itnihao 

郵箱 [email protected] 

部落格  

如需重新發行,請註明以上資訊,謝謝合作 

通過分析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.其他知識整合能力 

完畢,謝謝閱讀!

祝大家五一節快樂!

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