Это мой целевой сайт: http://www.rapid7.com/db/ и я хочу провести там поиск, скажем, строку «Симфония», чтобы проверить ее уязвимости.
Осматривая элементы формы ввода, я вижу, что ее имя — «q», пока все хорошо, но кнопка не имеет значения, вместо этого кнопка, которую мне нужно отправить для запроса: <span id="run_search" class="vbsearchBtn"></span>
без поля значения.
Мой код:
$client = new Client();
$crawler = $client->request('GET', 'http://www.rapid7.com/db/');
$form = $crawler->selectButton('????')->form();
$crawler = $client->submit($form, array('q' => 'Symphony'));
print $crawler->html();
Кто-нибудь знает, как это осуществить?
Насколько я понимаю, ваша проблема в том, чтобы получить элемент формы, зачем вам кнопка для этого? Вы можете запросить форму по идентификатору, который является <form id="search_form" ...>
, Вы также можете отправить t
параметр, который является типом базы данных, который вы хотите запросить (a
для всех m
для модулей v
на уязвимости). Ваш код должен быть примерно таким (вам нужен установленный компонент CssSelector):
$client = new Client();
$crawler = $client->request('GET', 'http://www.rapid7.com/db/');
$form = $crawler->filter('#search_form')->first()->form();
$crawler = $client->submit($form, array('q' => 'Symphony', 't' => 'a'));
print $crawler->html();
Других решений пока нет …