banner
肥皂的小屋

肥皂的小屋

github
steam
bilibili
douban
tg_channel

Python3 - 純真IPデータベースを使用して、IPの所属地を一括で検索します。

起因#

ウェブサイトのログ解析記事を書いている最中に、純真 IP データベースを一括で IP アドレスの所属地を検索する必要があることに気づきました。

そこで、この記事では Python を使用して IP の所属地を一括で検索する方法について説明します。

この記事は Python とツール共有の両方に分類されます。

純真 IP アドレスデータベースの紹介#

純真 IP データベースは qqwry.dat ファイルを解析します。純真版の QQWry IP データベースには、中国電信、中国移動、中国聯通、長城寬帯、聚友寬帯などの ISP の最新かつ正確な IP アドレスデータが収集されています。IP データベースは 5 日ごとに更新され、定期的に最新の IP データベースを更新する必要があります。

ソフトウェアは以下のようになります:

image

このデータベースは頻繁に更新されるため、私はGitHubプロジェクトを見つけました。毎日自動的に最新のqqwry.datをスキャンして同期します。

最新のqqwry.datを取得するには、ここをクリックしてダウンロードしてください(プロキシを使用する必要があります)。

この最新バージョンをダウンロードして元のバージョンと置き換えることもできますので、純真データベースのインストールパッケージを常にダウンロードする必要はありません。

Python で一括検索#

詳細なライブラリについては、最後の参考記事「qqwry-python3」を参照してください。

この作者が作成したツールは、すでにpypiにアップロードされており、pip install qqwry-py3コマンドで使用できます。

~~ もちろん、私は単純に IP の所属地を一括で読み取るためのコードを実装しましたが、後で他のアイデアが浮かんだ場合はこの記事を更新します~~

~~ 最終バージョンのコードは以下の通りです:~~

** なんか難しそうなので、まずは完成した qqwry ライブラリを使います。興味があれば後で書くかもしれません(書かないかもしれません) **

::quyin:1huaji::

テキストから IP アドレスを一括で検索して結果を出力するコードは以下の通りです:

# -*- coding: utf-8 -*-
'''
@author: soapffz
@fucntion: 純真IPデータベースqqwry.datを使用して、txt内のIPの所属地を一括で検索する
@time: 2019-06-28
'''

from qqwry import QQwry
from IPy import IP


def batch_query_and_print():
    q = QQwry()
    q.load_file('qqwry.dat')
    with open('ip.txt') as f:
        ip_list = f.read().splitlines()
        for read_content in ip_list:
            try:
                IP(read_content)
            except:
                print("規格に合わないIPアドレスがあります。確認してから再実行してください。")
                exit(0)
    address_list = [q.lookup(ip) for ip in ip_list]
    for i, j in zip(ip_list, address_list):
        query_results = i+" "+j[0]+" "+j[1]
        print(query_results)
        with open("query_results.txt", 'a', encoding='utf-8') as f:
            f.writelines(query_results+"\n")


if __name__ == "__main__":
    batch_query_and_print()

qqwryIPyライブラリをそれぞれpip installコマンドでインストールしてください。

検索する IP をip.txtに入れ、qqwry.datファイルと.pyファイルと同じディレクトリに配置して実行します。

以下は実行結果です:

image

参考記事:

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。