2015-07-09 5 views
0

Я пытаюсь создать функцию python, которая будет подключаться к URL-адресу и проверять, существует ли список каталогов на этом веб-сайте. Таким образом, вход состоит из цели и каталога. Моя конечная цель - написать какую-то программу DirBuster.Python - Проверьте, не существует ли url

Это моя функция непока Сейчас:

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 кодов. Поэтому даже когда я тестирую несуществующий url, веб-сайт все равно вернет HTTP 200 OK.

Пример: тестирование на www.wordpressexamplesite.com/DIRECTORYTHATDOESNTEXISTS/ дает код HTTP 200, а также URL-адрес веб-сайта, который существует.

Это означает, что вся проверка в функции checkDir не работает, как я хочу.

Можете ли вы, ребята, дать мне несколько идей о том, как это разрешить?

+0

(Пожалуйста, дважды проверьте отступы на образце кода. Как бы то ни было, это не будет работать.) –

+0

Нет ничего, что вы могли бы сделать, кроме как рассказать людям использовать ваши инструменты только с сайтами, которые имеют соответствующее поведение. В большинстве сайтов в эти дни используется динамически созданный контент, и редко существует связь между «url» и «каталогом файловой системы». – larsks

ответ

0

К сожалению, для вас, когда сервер возвращает «200 OK», это означает, что URL-адрес действительно существует и возвращает содержимое. Этим содержанием может быть страница с надписью «Это не существует». Чтобы определить, что вам нужно будет работать над каким-то искусственным интеллектом, который может отображать и читать содержимое, которое было возвращено, и понимать его как человека.

Я считаю, что плохой дизайн веб-сайта (и что еще хуже для API AJAX) всегда возвращает «200 OK» и вставляет «реальный» статус в полезную нагрузку, но именно так некоторые люди его кодируют.

0

Использование Try 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) 

Я думаю, что это может работать для вас.