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

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

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

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

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

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

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

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

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

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

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

1.獲得本地和遠(yuǎn)程的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查詢工具的詳細(xì)內(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ù)的聚類,本文通過案例講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • python中的iterator和"lazy?iterator"區(qū)別介紹

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

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

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

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

    python單元測試之pytest的使用

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

    灵丘县| 滁州市| 措美县| 合作市| 九寨沟县| 大庆市| 陆丰市| 孝昌县| 兴安县| 保山市| 施甸县| 沙河市| 盘山县| 铜梁县| 东安县| 镇宁| 正定县| 通山县| 县级市| 四会市| 喀喇沁旗| 钦州市| 高要市| 万盛区| 保靖县| 石屏县| 淳化县| 轮台县| 清徐县| 内丘县| 新邵县| 得荣县| 漳州市| 荔浦县| 开阳县| 黄骅市| 都昌县| 阳新县| 仁寿县| 德庆县| 海宁市|