亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

基于Python制作簡單的IP查詢工具

 更新時間:2024年03月01日 10:24:09   作者:shigen01  
這篇文章主要為大家詳細介紹了如何基于Python制作一個簡單的IP查詢工具,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

hello,今天shigen給大家分享一下如何優(yōu)雅的查詢IP的工具。我們先看一下效果:

shigen在以前服務(wù)器被攻擊或者我的COS流量被盜刷的時候,經(jīng)常這樣用。很是方便的展示了ip對應(yīng)的地理位置,幫我快速的定位了攻擊的源頭。

我們接觸的也有很多的在線的API,提供ip的地理位置解析,我們也可以自定義一個腳本,調(diào)用遠端的API,獲得數(shù)據(jù)。

那知道shigen的都知道,我比較喜歡離線的數(shù)據(jù),這意味著我擺脫了對于三方服務(wù)的依賴。如:對方的服務(wù)突然掛了,對方的服務(wù)限流了,對方的服務(wù)需要認證了,這都是麻煩事情。所以本著爹有娘有,不如自己有,我選擇了一款包含離線數(shù)據(jù)庫的Ip2region。Ip2region的gitee地址,而我選的語言是python,具體的python代碼書寫我們參考官方的文檔。

其它編程語言都有支持,感興趣的伙伴可以自行了解。

shigen開始實現(xiàn)了。

首先,需要下載xdb文件。鏈接放在這里了,它放在了我的data文件夾里。

接下來核心的部分,代碼的實現(xiàn)。

1.獲得本地和遠程的IP地址

def getLocalAndRemoteIp()-> tuple:
    import socket, requests
    s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.connect(('8.8.8.8',80))
    localIp =s.getsockname()[0]
    remoteIp = requests.get('http://ifconfig.me/ip', timeout=1).text.strip()
    return localIp,remoteIp

2.參照官方文檔的實現(xiàn)

代碼略長,建議橫屏觀看。大部分的參照官方的文檔,只做了查詢出數(shù)據(jù)的解析和格式化展示。

3.main函數(shù)

if __name__=='__main__':
    localIp,remoteIp=XdbSearcher.getLocalAndRemoteIp()
    print(f'localIp: {localIp},remoteIp: {remoteIp}')
    # cmd line arguments
    parser = argparse.ArgumentParser('a shell script which is executed to analyze the ip information')
    parser.add_argument('-ip','--ip',type=str,help='ipaddress', default=remoteIp)
    args = parser.parse_args()
    
    #1.緩存
    dbPath = os.path.join(os.path.dirname(__file__),'./data/ip2region.xdb')
    cb =XdbSearcher.loadContentFromFile(dbfile=dbPath)
    
    # 2.創(chuàng)建查詢對象
    searcher =XdbSearcher(contentBuff=cb)
    
    # 3.執(zhí)行查詢
    region_str=searcher.searchByIPStr(args.ip)
    print(region_str)
    searcher.close()

4.運行測試

配置一個alias即可實現(xiàn)查詢IP自由。

怎么樣,這個技巧,你get到了嗎?

以上就是基于Python制作簡單的IP查詢工具的詳細內(nèi)容,更多關(guān)于Python IP查詢的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論