最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于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ù)庫的Ip2regionIp2region的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)文章

  • python中bottle使用實例代碼

    python中bottle使用實例代碼

    這篇文章主要介紹了python bottle使用實例,主要是搞懂python中如何來組織包,如何調(diào)用包,如何讀取配置文件,連接數(shù)據(jù)庫,設(shè)置路由,路由分組,具體示例代碼跟隨小編一起看看吧
    2021-08-08
  • Python 操作文件的基本方法總結(jié)

    Python 操作文件的基本方法總結(jié)

    這篇文章主要介紹了Python 操作文件的基本方法總結(jié)的相關(guān)資料,這里說明了九種操作文件的方法,并附上實現(xiàn)方法,需要的朋友可以參考下
    2017-08-08
  • python利用K-Means算法實現(xiàn)對數(shù)據(jù)的聚類案例詳解

    python利用K-Means算法實現(xiàn)對數(shù)據(jù)的聚類案例詳解

    這篇文章主要介紹了python利用K-Means算法實現(xiàn)對數(shù)據(jù)的聚類,本文通過案例講解的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • python中的iterator和"lazy?iterator"區(qū)別介紹

    python中的iterator和"lazy?iterator"區(qū)別介紹

    這篇文章主要介紹了python中的iterator和?“l(fā)azy?iterator“之間有什么區(qū)別,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • python?logging模塊詳解及其日志定時清理方式

    python?logging模塊詳解及其日志定時清理方式

    這篇文章主要介紹了python?logging模塊詳解及其日志定時清理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • python單元測試之pytest的使用

    python單元測試之pytest的使用

    Pytest是Python的一種單元測試框架,與 Python 自帶的 Unittest 測試框架類似,但是比 Unittest 框架使用起來更簡潔,效率更高,今天給大家詳細介紹一下pytest的使用,需要的朋友可以參考下
    2021-06-06
  • 最新評論

    囊谦县| 千阳县| 萝北县| 台北县| 永嘉县| 乾安县| 铜山县| 左云县| 朔州市| 定兴县| 琼结县| 武邑县| 三原县| 凤冈县| 阳信县| 赤城县| 宝兴县| 兖州市| 游戏| 庐江县| 德州市| 桦南县| 阳高县| 神木县| 鄢陵县| 娄烦县| 东丽区| 灵宝市| 阿瓦提县| 乌鲁木齐县| 定日县| 苍南县| 丰宁| 泰安市| 贵港市| 涟源市| 台北市| 罗源县| 来宾市| 普定县| 新源县|