Python - 检查url是否存在失败

时间:2015-07-09 14:04:44

标签: python python-2.7 http

我正在尝试创建一个连接到URL的python函数,并检查该网站上是否存在目录列表。所以输入包括目标和目录。我的最终目标是编写类似DirBuster的程序。

这是我的功能,直到现在:

def checkDir(checkDir_target):
    breakurl = urlparse(target)
    conn = httplib.HTTPConnection(breakurl.netloc)
    conn.request('HEAD', checkDir_target)
    response = conn.getresponse()
    print response.status
    complete = target + x
    if (response.status < 400):
        print(" [X] " + complete)
        global total_resp
        total_resp += 1
        found.append(complete)
    else:
        print(" [ ] " + complete)

我现在唯一的问题是像wordpress页面这样的动态创建页面也会返回HTTP状态200代码。因此,即使我在不​​存在的网址上进行测试,网站仍会返回HTTP 200 OK。

示例:在 www.wordpressexamplesite.com/DIRECTORYTHATDOESNTEXISTS / 上进行测试会提供HTTP 200代码以及存在的网站网址。

这意味着checkDir函数中的整个检查并没有像我想要的那样正常工作。

你们其中一个人可以就如何解决这个问题给我一些想法吗?

2 个答案:

答案 0 :(得分:0)

不幸的是,当服务器返回“200 OK”时,这意味着URL确实存在并且返回了内容。这些内容可能是一个页面,上面写着“这不存在”。要确定你需要处理一些人工智能,这些人工智能可以渲染和读取返回的内容并像人类一样理解它。

我认为糟糕的网站设计(对于AJAX API更糟糕)总是返回“200 OK”并在有效负载中嵌入“真实”状态,但这就是有些人编码的方式。

答案 1 :(得分:0)

尝试使用requests lib:

import requests
def checkDir(checkDir_target):
    breakurl = urlparse(target)
    response = requests.get(breakurl.netloc, headers=checkDir_target)
    complete = target + x
    if response.status < 400:
        print(" [X] " + complete)
        global total_resp
        total_resp += 1
        found.append(complete)
    else:
        print(" [ ] " + complete)

我认为这对你有用。