Форма имеет метод 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
.