2013-04-12 4 views
1

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

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

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

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. 

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

+0

Большое спасибо, я сделаю его более читаемым, и я постараюсь решить проблему, глядя на вашу реализацию. – user1405417

+0

Я пытаюсь использовать пример, который вы только что мне показали, когда я делаю запросы в Google, я всегда получаю: 400 плохой запрос при использовании вашего кода. Я получаю код состояния, который вы написали в этом сообщении. Не знаю, что не так. .maybe Мне что-то не хватает где-то. Если вы хотите взглянуть на основную часть кода, здесь: [link] (http://pastebin.com/VaAb18uX) – user1405417

+0

Я взял ваш скрипт и начал играть вокруг с ним я изменил способ восстановления каталогов, и я использовал: «для каталога в fileinput.input (« utils/Directories_Common.wordlist »):« так как у меня есть все каталоги, перечисленные в этом файле .. с эта модификация, я всегда получаю 400 плохих запросов ... – user1405417

Смежные вопросы