一個轉存純真IP資料庫的腳本在Python中實現的程式碼分享
工作中我們常需要使用純真IP資料庫內的資料做分析,以下這篇文章主要給大家介紹了利用Python如何實現一個轉存純真IP資料庫的相關資料,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
前言
之前寫過很多關於掃描腳本的文章,一直都沒寫自己的掃描IP段是哪裡搞來的,也會有朋友常來問一些掃描經驗,說實話我覺得這個工具並沒有實際的技術含量,但是能提高工作效率,就共享出來給大家耍耍~
談到掃描經驗,我個人通常都會針對不同的設備,不同的應用選擇不同類型的段落。
例如我現在掃描的目標是一款電信光貓,那自然是選擇電信的IP段,光貓一般是家庭用戶,我們篩選下家庭用戶的活躍IP段,這樣我們就有針對性了。
再例如我現在想掃一款企業路由設備,那麼我就可以選擇企業公司多的段。
純真IP真心是個不錯的工具,我通常用來檢索某個地區的IP段,但是這個工具有個非常致命的缺點,就是不能聯合查詢,這就令人非常蛋痛了,這玩意每次用都要切換到win下面操作,對於我這種Linux黨來說自然是無法忍,索性寫個把純真IP轉存到mysql資料庫的腳本,這樣不用每次查詢都去win下面,還可以直接部署到遠程,查詢方便了很多,最主要的還是支援多條件查詢。
需求
Python寫這個腳本技術上難度不大,主要還是用到了MySQLdb函式庫,關於MySQLdb函式庫的安裝就不多說了,部落格之前有寫相關的文章。這裡咱們需要先分析下純真IP資料庫的資料檔案結構,發現其實每一行的結構都是固定的,那麼寫起來就簡單了。
編碼這塊我就不詳細說了,簡單幾個方法就能輕鬆實現,貼出來代碼
#!/usr/bin/env python # coding=utf-8 # kbdancer@92ez.com import MySQLdb import sys reload(sys) sys.setdefaultencoding('utf8') def save_data_to_mysql(mysql_object, ip_line): try: begin = ip_line[0:16].replace(' ', '') end = ip_line[16:32].replace(' ', '') try: location = line[32:].split(' ')[0] except: location = '' try: isp_type = line[32:].replace(' ', ' ').split(' ')[1].replace('\n', '').replace('\r', '') except: isp_type = '' this_line_value = [begin + "-" + end, location, isp_type] do_insert(mysql_object, this_line_value) except Exception, e: print e def do_insert(mysql_object, row_data): try: insert_sql = """INSERT INTO `ipdb` (`iprange`,`location`, `type`) VALUES ( %s, %s, %s )""" mysql_object.insert(insert_sql, row_data) except Exception, e: print row_data print e class Database: host = 'localhost' user = 'ipdb' password = '3u9whrpcEUBTnNNn' db = 'ipinfo' charset = 'utf8' def init(self): self.connection = MySQLdb.connect(self.host, self.user, self.password, self.db, charset=self.charset) self.cursor = self.connection.cursor() def insert(self, query, params): try: self.cursor.execute(query, params) self.connection.commit() except Exception, e: print e self.connection.rollback() def query(self, query, params): cursor = self.connection.cursor(MySQLdb.cursors.DictCursor) cursor.execute(query, params) return cursor.fetchall() def del(self): self.connection.close() if name == 'main': mysql = Database() ip_file = open(sys.path[0] + "/ip.txt") print 'Start save to mysql ...' for line in ip_file: save_data_to_mysql(mysql, line) ip_file.close() print 'Save complete.'
注意
#這裡有一個效能問題,就是遍歷所有資料的時候需要進行插入資料函式庫的操作,單行插入的效率是非常低的,建議使用多行插入,比如說寫個快取陣列,當快取陣列達到規定的條數,例如達到100條的時候,一次把100個存入資料庫,這個速度比單一存入要快得多。部落客我在這裡就挖個坑,希望使用腳本的朋友能自己修改,改起來也不難。
由於純真IP資料庫匯出的txt檔案並不是標準的無BOM UTF8編碼,直接解析肯定是失敗的,建議使用Notepad++先轉碼一下
效果
原始資料
#已轉存之後的資料
使用
首先需要匯出純真ip資料庫為txt文檔,這裡我匯出為ip.txt
然後放到Py腳本同一目錄
對了,首先你還得有mysql資料庫
然後匯入資料庫結構,就是那個sql文件
接著你還得修改腳本裡面的mysql連線密碼等
#最後執行Py腳本就好了
##說明#
以上是一個轉存純真IP資料庫的腳本在Python中實現的程式碼分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

VS Code可以在Windows 8上運行,但體驗可能不佳。首先確保系統已更新到最新補丁,然後下載與系統架構匹配的VS Code安裝包,按照提示安裝。安裝後,注意某些擴展程序可能與Windows 8不兼容,需要尋找替代擴展或在虛擬機中使用更新的Windows系統。安裝必要的擴展,檢查是否正常工作。儘管VS Code在Windows 8上可行,但建議升級到更新的Windows系統以獲得更好的開發體驗和安全保障。

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

VS Code 可用於編寫 Python,並提供許多功能,使其成為開發 Python 應用程序的理想工具。它允許用戶:安裝 Python 擴展,以獲得代碼補全、語法高亮和調試等功能。使用調試器逐步跟踪代碼,查找和修復錯誤。集成 Git,進行版本控制。使用代碼格式化工具,保持代碼一致性。使用 Linting 工具,提前發現潛在問題。

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。
