我需要一种方法来通过PHP脚本提取网页上的所有表单信息。 所以我有:
$ url =“http://somewebpage.com/”;
我需要的信息是:
网页上所有表单的列表,以及它们的选项/属性,如:
示例输出如下:
Form1:表单名称:“login”,action:“login.php”,方法:“GET”
表格2:表格名称:“login2”,操作:“login2.php”,方法:“POST”
我使用以下方法将网页的HTML内容放入变量:
// cURL
$browser_id = "some crazy browser";
$curl_handle = curl_init();
$options = array
(
CURLOPT_URL=>$url,
CURLOPT_HEADER=>true,
CURLOPT_RETURNTRANSFER=>true,
CURLOPT_FOLLOWLOCATION=>true,
CURLOPT_USERAGENT=>$browser_id
);
curl_setopt_array($curl_handle,$options);
$server_output = curl_exec($curl_handle);
curl_close($curl_handle);
然后我用它来删除标题信息,并保留HTML的东西,否则DOM总是给我错误。
$server_output2 = substr($server_output, stripos($server_output, "<html"));
为了找到表单,我使用DOM
$dom = new DomDocument;
$dom->preserveWhiteSpace = FALSE;
$dom->loadHTML($server_output2);
$params = $dom->getElementsByTagName('form'); // Find Sections
$k=0;
foreach ($params as $param){
$forms[$k][0] = $params->item($k)->getAttribute('name');
$forms[$k][1] = $params->item($k)->getAttribute('action');
$forms[$k][2] = $params->item($k)->getAttribute('method');
$k++;
}
但是我的问题是,我经常从DOM获得错误,关于未关闭的标签或其他信息。我不想得到这个信息。我怎样才能使它工作? 我当前的代码,只输出表单信息,而不是表单中的输入,我也想知道。我怎样才能做到这一点?谢谢您的帮助。 您可以在http://sourceforge.net/projects/rav/files/查看我的项目远程攻击矢量(这是我需要的) 或者查看我的网站:http://tamasiweb.hu
答案 0 :(得分:1)
好吧,下载这个php lib
http://sourceforge.net/projects/snoopy/
课程用法:
$uri = "http://anysite.com/form";
$snoopy = new Snoopy;
if($snoopy->fetchform($uri)){
$result = $snoopy->results;
}
echo $result;
希望有所帮助