Получение форм на странице в Python - PullRequest
0 голосов
/ 20 февраля 2009

Я работаю над сканером веб-уязвимостей. Я выполнил 30% программы, так как она может сканировать только методы HTTP GET. Но я столкнулся с проблемой: я понятия не имею, как заставить программу тестировать метод POST.

У меня была идея сделать так, чтобы она извлекала данные / имена форм со всех страниц на сайте, но я понятия не имею, как мне это сделать. Есть идеи?

Ответы [ 3 ]

3 голосов
/ 20 февраля 2009

Используйте BeautifulSoup для очистки экрана.

Для более сложных сценариев используйте twill :

twill - простой язык, который позволяет пользователям просматривать веб-страницы из интерфейса командной строки. С помощью twill вы можете перемещаться по веб-сайтам, которые используют формы, файлы cookie и большинство стандартных веб-функций.

С помощью twill вы можете легко заполнять формы и POST отправлять их обратно на сервер. Twill имеет Python API . Пример заполнения:

from twill.commands import go, showforms, formclear, fv, submit

go('http://issola.caltech.edu/~t/qwsgi/qwsgi-demo.cgi/')
go('./widgets')
showforms()

formclear('1')
fv("1", "name", "test")
fv("1", "password", "testpass")
fv("1", "confirm", "yes")
showforms()

submit('0')
1 голос
/ 20 февраля 2009

Вы спрашиваете, как использовать urllib2 для выполнения метода POST?

Возможно, вы захотите взглянуть на примеров .

После некоторых попыток вы можете отправить код с более конкретным вопросом.

0 голосов
/ 20 февраля 2009

Если вы знаете, как собирать данные / имена из формы, вам просто нужен способ работы с методом HTTP POST. Полагаю, вам понадобится решение для отправки многочастных форм-данных.

Вы должны взглянуть на MultipartPostHandler:

http://odin.himinbi.org/MultipartPostHandler.py

И если вам нужно поддерживать имена файлов в юникоде, посмотрите исправление по адресу: http://peerit.blogspot.com/2007/07/multipartposthandler-doesnt-work-for.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...