Вопрос по http-status-codes, python, httpconnection – код состояния Python http

1

Я пишу свой собственный каталогизатор на python и тестирую его на своем веб-сервере в безопасной и надежной среде. Этот скрипт в основном пытается извлечь общие каталоги с данного веб-сайта и, глядя на код состояния HTTP ответа, может определить, доступна ли страница или нет.
Для начала сценарий считывает файл, содержащий все интересующие каталоги, которые необходимо найти, а затем отправляет запросы следующим образом:

for dir in fileinput.input('utils/Directories_Common.wordlist'):

    try:
        conn = httplib.HTTPConnection(url)
        conn.request("GET", "/"+str(dir))
        toturl = 'http://'+url+'/'+str(dir)[:-1]
        print '    Trying to get: '+toturl
        r1 = conn.getresponse()
        response = r1.read()
        print '   ',r1.status, r1.reason
        conn.close()

Затем ответ анализируется, и если возвращается код состояния, равный «200», то страница становится доступной. Я реализовал все это следующим образом:

if(r1.status == 200):
    print '\n[!] Got it! The subdirectory '+str(dir)+' could be interesting..\n\n\n'

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

Ваш Ответ

2   ответа
1
2

за исключением того, что он почти не читается. Я переписал его в этот рабочий фрагмент:

import httplib

host = 'www.google.com'
directories = ['aosicdjqwe0cd9qwe0d9q2we', 'reader', 'news']

for directory in directories:
    conn = httplib.HTTPConnection(host)
    conn.request('HEAD', '/' + directory)

    url = 'http://{0}/{1}'.format(host, directory)
    print '    Trying: {0}'.format(url)

    response = conn.getresponse()
    print '    Got: ', response.status, response.reason

    conn.close()

    if response.status == 200:
        print ("[!] The subdirectory '{0}' "
               "could be interesting.").format(directory)

Выходы:

$ python snippet.py
    Trying: http://www.google.com/aosicdjqwe0cd9qwe0d9q2we
    Got:  404 Not Found
    Trying: http://www.google.com/reader
    Got:  302 Moved Temporarily
    Trying: http://www.google.com/news
    Got:  200 OK
[!] The subdirectory 'news' could be interesting.

Кроме того, я использовалГОЛОВА HTTP-запрос вместо GET, так как он более эффективен, если вам не нужно содержимое и вас интересует только код состояния.

Я взял ваш сценарий и начал играть с ним, я изменил способ извлечения каталогов и использовал: "для каталога в fileinput.input ('utils / Directories_Common.wordlist'):" так как я все каталоги, перечисленные в этом файле .. с этой модификацией я всегда получаю 400 неверных запросов ... user1405417
Большое спасибо, я сделаю его более читабельным и постараюсь решить проблему, глядя на вашу реализацию. user1405417
Этот файл содержит список всех каталогов для поиска, по одной записи для каждой строки. user1405417
Я не могу дать дальнейших советов, если не знаю точно, что это в файле 'utils / Directories_Common.wordlist' и какой вывод вы получаете. Вы уверены, что ваши URL возвращают разные коды? Попробуйте проверить это с помощью этого:stackoverflow.com/a/6136861/325365 Honza Javorek
Я пытаюсь использовать пример, который вы только что показали мне, когда я делаю запросы в Google, я всегда получаю: 400 неправильных запросов при использовании вашего кода, я получаю код состояния, который вы написали в этом посте .. не знаю, что не так .. может быть, я что-то упустил где-то .. если вы хотите взглянуть на основную часть кода здесь:ссылка user1405417

Похожие вопросы