我正在尝试创建一个连接到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函数中的整个检查并没有像我想要的那样正常工作。
你们其中一个人可以就如何解决这个问题给我一些想法吗?
答案 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)
我认为这对你有用。