Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用浏览器用户代理检查网站是否以python响应_Python_Web_Request_Dns_Resolve - Fatal编程技术网

使用浏览器用户代理检查网站是否以python响应

使用浏览器用户代理检查网站是否以python响应,python,web,request,dns,resolve,Python,Web,Request,Dns,Resolve,我试图想出一个脚本来检查域名是否通过dns解析为其IP地址;使用我编写的python脚本 我希望能够在几个连续的循环中实现这一点,但是在尝试运行一次循环后,第二次运行脚本时,以前返回成功dns解析响应的名称现在没有 以下是我的脚本: #! C:\Python27 import socket,time localtime = time.asctime( time.localtime(time.time()) ) def hostres(hostname): print "Attemp

我试图想出一个脚本来检查域名是否通过dns解析为其IP地址;使用我编写的python脚本

我希望能够在几个连续的循环中实现这一点,但是在尝试运行一次循环后,第二次运行脚本时,以前返回成功dns解析响应的名称现在没有

以下是我的脚本:

#! C:\Python27
import socket,time

localtime = time.asctime( time.localtime(time.time()) )


def hostres(hostname):
    print "Attempting to resolve " + hostname 
    try:
        socket.gethostbyname(hostname)
        print "Resolved Successfully!"
    except socket.error:
        print "Could Not Resolve"

print "*************************************************"
print "Website loop starting.."
print "Local current time :", localtime
print "*************************************************"
print ""

text_file = open("sites.txt", "r")
lines = text_file.readlines()
for line in lines:
    hostres(line)
text_file.close()
文本文件的内容包括:

www.google.com
en.wikipedia.org
www.youtube.com
us.gamespot.com
我认为这与这些域服务器将脚本识别为“机器人”而不是合法的最终用户有关,这样假设是否正确


如果是这样,我如何通过查找网站名称(或IP,无所谓)来检查dns名称是否已解析,并能够运行此操作而不会错误读取“请求失败”,尽管该服务可以从浏览器完全访问?

此问题中存在几个问题

  • 您没有检查“网站是否响应”您正在测试DNS解析。您的所有DNS请求都会转到一个名称服务器,即您的LDNS解析器。如果所有问题都解决了,它仍然不会说明网站的状态。而且,因为你实际上并没有和这些网站交谈,他们无法知道你是一个机器人。只有在您发出HTTP请求时,它们才能检测到这一点(基于HTTP用户代理头)
  • 关于代码问题,需要先修剪换行符,然后才能对其执行socket.gethostbyname()操作。将
    socket.gethostbyname(hostname)
    替换为
    socket.gethostbyname(hostname.rstrip())
    ,您就没事了

  • 这个问题有几个问题

  • 您没有检查“网站是否响应”您正在测试DNS解析。您的所有DNS请求都会转到一个名称服务器,即您的LDNS解析器。如果所有问题都解决了,它仍然不会说明网站的状态。而且,因为你实际上并没有和这些网站交谈,他们无法知道你是一个机器人。只有在您发出HTTP请求时,它们才能检测到这一点(基于HTTP用户代理头)
  • 关于代码问题,需要先修剪换行符,然后才能对其执行socket.gethostbyname()操作。将
    socket.gethostbyname(hostname)
    替换为
    socket.gethostbyname(hostname.rstrip())
    ,您就没事了

  • 我看不出这段代码有任何问题,它对我来说很好。可能是您的网络设置有问题或类似的问题?因此它在后续运行中运行良好,没有负面响应?我不断得到“无法解决”所有问题,尝试在linux和winXP上测试(使用空闲)。是否可以尝试从命令行而不是在空闲状态下运行脚本?这肯定是您正在运行脚本的框中的dns配置存在问题。我将相同的代码粘贴到Windows7上的空闲python2.7中,并解析了所有4个地址。考虑寻求帮助,我看不出这个代码有什么问题,它对我来说很好。可能是您的网络设置有问题或类似的问题?因此它在后续运行中运行良好,没有负面响应?我不断得到“无法解决”所有问题,尝试在linux和winXP上测试(使用空闲)。是否可以尝试从命令行而不是在空闲状态下运行脚本?这肯定是您正在运行脚本的框中的dns配置存在问题。我将相同的代码粘贴到Windows7上的空闲python2.7中,并解析了所有4个地址。考虑寻求帮助