【问题标题】:Find country from domain name and put result in text file从域名中查找国家并将结果放入文本文件
【发布时间】:2018-09-13 23:34:27
【问题描述】:

我在下面有这个脚本如何检查域名的国家/地区。我想把每个国家代码放在一个特定的文件中。

例如:

FR ==> FR.txt
美国 ==> 美国.TXT

脚本输出是这样的:

domain.com [xx.xx.xx.xx]:美国

脚本:

#!/usr/bin/python

import socket
from geolite2 import geolite2

def origin(ip, domain_str, result):
    print("{0} [{1}]: {2}".format(domain_str.strip(), ip, result))

def getip(domain_str):
    ip = socket.gethostbyname(domain_str.strip())
    reader = geolite2.reader()      
    output = reader.get(ip)
    result = output['country']['iso_code']
    origin(ip, domain_str, result)

with open("hostnames.txt", "r") as ins:
    for domain_str in ins:
        try:
            getip(domain_str)
        except socket.error as msg:
            print("{0} [could not resolve]".format(domain_str.strip())) 
            if len(domain_str) > 2:
                subdomain = domain_str.split('.', 1)[1]
                try:
                    getip(subdomain)
                except:
                    continue

geolite2.close()

感谢您提供的任何帮助

【问题讨论】:

    标签: python dns


    【解决方案1】:
    def origin(ip, domain_str, result):
        file_name = "{}.txt".format(result)
        with open(file_name, 'a') as f:
            f.write("{}".format(domain_str.strip()))
    

    【讨论】:

    • shahaf 谢谢你的代码是有效的,但我不希望在文本文件中打印 ip 只是域:EX: domain1 domain2 domain3
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    相关资源
    最近更新 更多