首页 > 解决方案 > socket.gethostbyname [Errno -2] 名称或服务未知

问题描述

我试图检查一些域名,但即使是一些常见的也正在返回这个

错误发生在“df['IPaddr'] = socket.gethostbyname(DN)”

socket.gethostbyname [Errno -2] 名称或服务未知

所以我尝试尝试:但大多数都失败了!

检查域

意外的错误:

AMD.com

意外的错误:

美国在线

import whois
import matplotlib.pyplot as plt
import numpy as np  
import pandas as pd  
import socket
import os
import csv 
import datetime
import time
import requests
from ipwhois import IPWhois
from urllib import request
from ipwhois.utils import get_countries
import tldextract
from ipwhois.utils import get_countries
countries = get_countries(is_legacy_xml=True)
from ipwhois.experimental import bulk_lookup_rdap
from ipwhois.hr import (HR_ASN, HR_ASN_ORIGIN, HR_RDAP_COMMON, HR_RDAP, HR_WHOIS, HR_WHOIS_NIR)
countries = get_countries(is_legacy_xml=True)
import ipaddress

df = pd.read_csv('a.csv')

#TimeOut Setting
s = socket.socket()
s.settimeout(10)

#Date Processing Function

def check_date_type(d):
    if type(d) is datetime.datetime:
        return d
    if type(d) is list:
        return d[0]
for index,row in df.iterrows():
  try:

标签: pythonwhois

解决方案


allow_permutations=True看起来不像IPWhois. 因为您正在使用,所以try您可能看不到 TypeError:

TypeError: __init__() got an unexpected keyword argument 'allow_permutations'

删除该参数后,一切都会按预期进行:

from ipwhois import IPWhois
import socket
DN = 'AMD.com'

ip = socket.gethostbyname(DN)
ipwhois = IPWhois(ip).lookup_whois()

print(ip)
print(ipwhois)
23.50.124.85
{'nir': None, 'asn_registry': 'arin', 'asn': '16625', 'asn_cidr': '23.50.124.0/22', 'asn_country_code': 'US', 'asn_date': '2011-05-16', 'asn_description': 'AKAMAI-AS, US', 'query': '23.50.124.85', 'nets': [{'cidr': '23.32.0.0/11, 23.64.0.0/14', 'name': 'AKAMAI', 'handle': 'NET-23-32-0-0-1', 'range': '23.32.0.0 - 23.67.255.255', 'description': 'Akamai Technologies, Inc.', 'country': 'US', 'state': 'MA', 'city': 'Cambridge', 'address': '145 Broadway', 'postal_code': '02142', 'emails': ['ip-admin@akamai.com', 'abuse@akamai.com'], 'created': '2011-05-16', 'updated': '2012-03-02'}], 'raw': None, 'referral': None, 'raw_referral': None}

如果您仍然遇到问题,则可能是 DNS 或路由问题导致了问题。确定您的本地环境是否存在问题的一种快速方法是在 Google Colab 之类的东西中测试您的代码片段,因为运行时将在 Google 服务器上:https ://colab.research.google.com/

如果这些建议都不起作用,您最好删除 try 语句或将异常打印到控制台并在此处发布您收到的错误:

try:
  ip = socket.gethostbyname(DN)
  ipwhois = IPWhois(ip, allow_permutations=True).lookup_whois()
  print(ip)
  print(ipwhois)

except Exception as e:
  print(e) 

推荐阅读