нажатие на кнопку отправки с помощью php
-
19-09-2019 - |
Вопрос
У меня есть веб-страница с кнопкой отправки, и я хотел бы, чтобы php проанализировал веб-страницу, нажал кнопку отправки и получил ответ (это может быть ссылка или другая html-страница).)
Есть ли какой-нибудь способ нажать кнопку отправки с помощью php?
Я знаю, что есть что-то вроде htmlunit для java, которое позволяет про-грамматически заполнить поля формы и нажать кнопку отправки.Но я хотел бы сделать то же самое в php.
Спасибо
Решение
CURL позволит вам получить результаты отправки формы
например
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $urlOfFormSubmission);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
"field1"=>"data1",
"field2"=>"data2"
));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$contents = curl_exec($ch);
Вы также можете сделать то же самое с потоковыми функциями PHP
например
$params = array('http' => array(
'method' => "post",
'content' => array("field1"=>"data1", "field2"=>"data2")
));
$ctx = stream_context_create($params);
$fp = @fopen($urlOfFormSubmission, 'rb', false, $ctx);
if (!$fp)
{
throw new Error("Problem with ".$urlOfFormSubmission);
}
$contents = @stream_get_contents($fp);
if ($contents === false)
{
throw new Error("Problem reading data from ".$urlOfFormSubmission);
}
В любом случае, $contents должен содержать результаты отправки формы
Другие советы
Взгляните на Селен Система тестирования веб-приложений.
В Самый простой В библиотеке PHP также есть сканер страниц, который может анализировать HTML-страницу и генерировать соответствующий POST-запрос.
Php - вебхаки выглядит многообещающе для этой задачи.
Особенности, как указано на веб-сайте:
* Support HTTP/1.1
* Fetch web pages.
* Submit forms and upload files.
* Support https.
* Support HTTP cookies.
* Support HTTP redirects and Meta-refresh redirects.
* Support HTTP Authentication.
* Support proxy server.
* Support gzip encoding.
* Logging of HTTP streams for full debugging.
* Parsing HTML forms.
* Custom User-Agent.