2009-06-10 2 views
1

Если я перейду по ссылке http://mega.1280.com/file/EKOZKE/, введите код captcha и нажмите кнопку «Загрузить», я могу загрузить файл.Проблема с формой прямой отправки

Интересно, могу ли я отправить форму без нажатия кнопки «Загрузить»? Я имею в виду ввод кода captcha непосредственно в адресной строке и нажатие Enter?

Я пробовал http://mega.1280.com/file/EKOZKE/?code_security=xxxxxx где 'code_security' - это имя текстового поля кода captcha, но это не удалось. Есть идеи?

+0

Почему вы это делаете? – Shoban

+0

Я просто хочу узнать технику, которую этот веб-сайт использует для отправки формы. – ByulTaeng

ответ

1

Форма имеет метод POST. Вы не можете эмулировать запрос POST с другим URL-адресом, это то, что делают запросы GET.

Даже если сервер не проверяет метод запроса, вам все равно необходимо предоставить все обязательные данные. Если вы посмотрите на то, что отправлено этой формой, вы увидите еще 3 параметра (action, btn_download, file_id) и, что еще более важно, несколько файлов cookie, которые серверу необходимо восстановить в php-сессии (PHPSESSID), что в свою очередь необходимо для соответствия вашему security_code с предоставленным CAPTCHA.

Нижняя линия: вы можете эмулировать запрос, но не путем простого запроса GET. Вы должны использовать реальный пользовательский агент, способный отправлять почтовые запросы и обрабатывать файлы cookie.

... Но, конечно, это именно то, что CAPTCHA здесь, чтобы вы не делали :-).

Редактировать: ответить на ваш комментарий «Я просто хочу узнать технику, которую этот веб-сайт использует для отправки формы». :

Этот сайт не представляет форму на самом деле. Это ваш браузер, который представляет форму, и делает это, соответствуя стандартам HTML и HTTP. На веб-странице, форма кодируется

<form name="frm_download" method="post" action=""> 

Итак, когда вы нажимаете на кнопку «Отправить», ваш браузер собирает все данные из входов (текст, скрытый, что угодно) и посылает запрос HTTP POST на тот же url, из которого возникла форма, с кучей HTTP-заголовков (включая заголовок Cookie, который содержит всю сохраненную информацию куки, прикрепленную к этому домену сервера) и тело, содержащее данные формы: список пар ключ/значение.

Сервер получает запрос. Он может проверить, что это действительно запрос POST. Он может и будет извлекать все представленные пары данных (параметров). Он может извлекать файлы cookie и будет делать это, чтобы восстановить ваш php-сеанс. Затем он сравнивает ваш параметр security_code с правильными данными, хранящимися в вашем php-сеансе. Если CAPTCHA соответствует, то он отправит вам ответ, содержащий файл, указанный вашим параметром file_id.

+0

Итак, скажем, что у меня есть все обязательные данные, такие как параметры, файлы cookie, код безопасности. Можете ли вы рассказать мне метод отправки почтового запроса на сервер? – ByulTaeng

+1

В зависимости от инструментов, которые вы будете использовать для этого: Я бы использовал Perl и LWP, и вы можете найти отличный учебник для отправки почтовых запросов с поддержкой cookies здесь: http://www.perl.com/lpt/a/661 – Alsciende

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