Проблема с формой прямой отправки - PullRequest
1 голос
/ 10 июня 2009

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

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

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

1 Ответ

1 голос
/ 10 июня 2009

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

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

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

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

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

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

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

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

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

...