Python에서 CSV의 IP 주소 목록을 가져오고 국가 이름을 부여합니다.

6817 단어 Python3geoipPython

개시하다


방문일지를 보고 방문원을 조사하는 국명이 있습니다.
액세스 로그는 CSV에서 출력되므로 지금까지 IP 주소를 확인하십시오.리눅스의'geoiploop'지령과 손싸움 조사를 진행했다.그 효율이 너무 떨어지기 때문에 나는 CSV 파일을 자동으로 가져오고 모든 것을 조사하고 국명을 부여한 다음에 CSV 파일을 출력할 수 있는 Python 프로그램을 만들었다.

환경 및 준비 작업


환경 정보


Winodws10Pro+Visual Studio Code에서 구현되었습니다.
python의 버전은 Python 3.6.1입니다.

geoip2 모듈 설치


Python으로 IP 주소에서 국명을 검색하려면 Geoip2를 설치해야 합니다."pip install geoip2"명령을 실행해야 하지만, Windows의 환경 변수가python 경로를 통과하면 이 명령도 시작됩니다.PowerShell의 콘솔을 시작하고 명령을 입력하면 Geoip2가 안전하게 설치됩니다.
Cisco TALOS

GeoLite2 데이터베이스 다운로드


MAXMIND 웹 사이트에서 IP 주소의 데이터를 다운로드합니다.

"GeoLite2 Country"의 "MaxMind DB binary, gzipped"를 다운로드하여 압축을 풀고 Python 스크립트가 있는 폴더에 넣습니다.tar.gz 파일은 Windows 표준 압축 해제 도구로 해제할 수 없기 때문에 7zip을 사용했습니다.

CSV 파일 정보


예상되는 CSV 파일은 제목 행이 없는 날짜 시간, 액세스 소스 IP 주소 2열로만 구성됩니다.
iplist.csv
2018/1/1 0:00,1.1.1.1
2018/2/1 0:00,2.1.1.1
2018/3/1 0:00,3.1.1.1
2018/4/1 0:00,4.1.1.1
2018/5/1 0:00,5.1.1.1
2018/6/1 0:00,6.1.1.1
2018/7/1 0:00,7.1.1.1
2018/8/1 0:00,8.1.1.1
2018/9/1 0:00,9.1.1.1

IP 주소의 국명을 구하는 스크립트


먼저 IP 주소에서 국가 이름을 계산하는 함수를 만듭니다.소스 CSV 파일의 각 행에서 함수를 읽고 결과를 CSV 파일로 출력합니다.
geoiplookup
## モジュールの読み込み
import geoip2.database
import csv


## GeoIPデータベースとCSVファイルのパス設定
geoip_db_path = "GeoLite2-Country_20190430/GeoLite2-Country.mmdb"
source_file_path = "iplist.csv" 
result_file_path = "result.csv"


## IPアドレスから国名を求める関数
def ipaddrlookup(ipaddress):
    reader = geoip2.database.Reader(geoip_db_path)
    response = reader.country(ipaddress)
    countoryname = response.country.names["en"]
    return countoryname


## IPアドレスリストの取り込み
source_file = open(source_file_path, encoding = "ansi") 
source_reader = csv.reader(source_file)
source_list = list(source_reader)


## 出力ファイルをオープン
result_file = open(result_file_path, "w", newline="")
result_writer = csv.writer(result_file)


## 取り込んだCSVファイルのIPアドレスから国名を求める
for row in source_list:
    outputdata = [row[0]]
    outputdata.append(row[1])
    outputdata.append(ipaddrlookup(row[1]))
    result_writer.writerow(outputdata)


## 出力ファイルをクローズ
result_file.close()

출력된 CSV 파일


날짜 시간, 액세스 소스 IP 주소 열 다음에 액세스 소스 국가 이름 열이 첨부된 CSV 파일을 출력합니다.
result.csv
2018/1/1 0:00,1.1.1.1,Australia
2018/2/1 0:00,2.1.1.1,France
2018/3/1 0:00,3.1.1.1,Singapore
2018/4/1 0:00,4.1.1.1,United States
2018/5/1 0:00,5.1.1.1,Ukraine
2018/6/1 0:00,6.1.1.1,United States
2018/7/1 0:00,7.1.1.1,United States
2018/8/1 0:00,8.1.1.1,United States
2018/9/1 0:00,9.1.1.1,United States

참조 정보


사이트 축소판 그림


GeoLite2 Free Downloadable Databases
GeoLite2를 통해 쉽게 수행할 수 있는 IP 주소의 국가 판정

참고서


윈도우즈 10에서 pip를 사용할 수 있을 때까지 (pythn 3.6)
심심한 건 파이토슨이 하세요. - 비프로그래머도 할 수 있는 자동화 프로세서 디자인.

좋은 웹페이지 즐겨찾기