首頁 後端開發 Python教學 一個轉存純真IP資料庫的腳本在Python中實現的程式碼分享

一個轉存純真IP資料庫的腳本在Python中實現的程式碼分享

May 21, 2017 pm 01:37 PM

工作中我們常需要使用純真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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

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

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

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

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

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

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

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

vs code 可以在 Windows 8 中運行嗎 vs code 可以在 Windows 8 中運行嗎 Apr 15, 2025 pm 07:24 PM

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

sublime怎麼運行代碼python sublime怎麼運行代碼python Apr 16, 2025 am 08:48 AM

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

visual studio code 可以用於 python 嗎 visual studio code 可以用於 python 嗎 Apr 15, 2025 pm 08:18 PM

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

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

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

See all articles