当前位置:WooYun(白帽子技术社区) >> php >> 我是如何解析Wooyun api的-1.php版
乌云API是啥?猛戳这儿,亲:http://api.wooyun.org/
有了乌云api,我们该如何解析呢?请欣赏,《我是如何解析Wooyun api的》第一集--php版。
---------------------------------
乌云Api的接口列表有这些:接口列表:
,而最常用的一般只有这三条:
http://api.wooyun.org/bugs (默认显示最新10条漏洞)
http://api.wooyun.org/bugs/submit (最新提交的漏洞)
http://api.wooyun.org/bugs/confirm (最新确认的漏洞)
http://api.wooyun.org/bugs/public (最新公开的漏洞)
http://api.wooyun.org/bugs/unclaim (等待认领的漏洞)
http://api.wooyun.org/bugs/limit/n (n最大为10)
http://api.wooyun.org/bugs/(submit|confirm|public|unclaim)/limit/n
(例如 http://api.wooyun.org/bugs/submit/limit/n 为最新提交的n条漏洞)http://api.wooyun.org/bugs/submit (最新提交的漏洞)
就用这三条来做实验吧。
http://api.wooyun.org/bugs/confirm (最新确认的漏洞)
http://api.wooyun.org/bugs/public (最新公开的漏洞)
----------
1.先把api的返回json获取过来。获取最新提交的
$data=file_get_contents('http://api.wooyun.org/bugs/submit');
2.使用json_decode解析json$dc=json_decode($data);
3.将数据赋值函数$ti[0]=$dc[0]->title;
$ti[1]=$dc[1]->title;
$ti[2]=$dc[2]->title;
$ti[3]=$dc[3]->title;
$ti[4]=$dc[4]->title;
$ti[5]=$dc[5]->title;
$ti[6]=$dc[6]->title;
$ti[7]=$dc[7]->title;
$ti[8]=$dc[8]->title;
$ti[9]=$dc[9]->title;
$li[0]=$dc[0]->link;
$li[1]=$dc[1]->link;
$li[2]=$dc[2]->link;
$li[3]=$dc[3]->link;
$li[4]=$dc[4]->link;
$li[5]=$dc[5]->link;
$li[6]=$dc[6]->link;
$li[7]=$dc[7]->link;
$li[8]=$dc[8]->link;
$li[9]=$dc[9]->link; //这种方法确实太笨了,后面有简单方法。
4.调用获取到的数据调用第一条数据:
<div class="thread">
<div class="thread-title">
<a title="<?php echo $ti[0];?>" href="<?php echo $li[0];?
>"><?php echo $ti[0];?></a>
</div>
</div>
当然还要调用个乌云的样式表<link type="text/css" rel="stylesheet"
href="http://zone.wooyun.org/themes/wooyun/css/style.css"/></head>
----
1.0完成版:http://baimaozi.tk/2222.php<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link type="text/css" rel="stylesheet"
href="http://zone.wooyun.org/themes/wooyun/css/style.css"/></head>
<body>
<?php
$ac=@$_GET['ac'];
if ($ac=="submit" or $ac=="")
{
$data=file_get_contents('http://api.wooyun.org/bugs/submit');
//echo $data;
}
elseif ($ac=="confirm")
{
$data=file_get_contents('http://api.wooyun.org/bugs/confirm');
//echo $data;
}
elseif ($ac=="public")
{
$data=file_get_contents('http://api.wooyun.org/bugs/public');
//echo $data;
}
else
{
exit("参数错误");
}
$dc=json_decode($data);
$ti[0]=$dc[0]->title;
$ti[1]=$dc[1]->title;
$ti[2]=$dc[2]->title;
$ti[3]=$dc[3]->title;
$ti[4]=$dc[4]->title;
$ti[5]=$dc[5]->title;
$ti[6]=$dc[6]->title;
$ti[7]=$dc[7]->title;
$ti[8]=$dc[8]->title;
$ti[9]=$dc[9]->title;
$li[0]=$dc[0]->link;
$li[1]=$dc[1]->link;
$li[2]=$dc[2]->link;
$li[3]=$dc[3]->link;
$li[4]=$dc[4]->link;
$li[5]=$dc[5]->link;
$li[6]=$dc[6]->link;
$li[7]=$dc[7]->link;
$li[8]=$dc[8]->link;
$li[9]=$dc[9]->link;
?>
<div class="infoTab">
<ul>
<?php
if ($ac=="submit" or $ac=="")
{
echo '<li class="current">';
}
else
{
echo "<li>";
}
?>
<a href="?ac=submit">最新提交</a></li>
<?php
if ($ac=="confirm")
{
echo '<li class="current">';
}
else
{
echo "<li>";
}
?>
<a href="?ac=confirm">最新确认</a></li>
<?php
if ($ac=="public")
{
echo '<li class="current">';
}
else
{
echo "<li>";
}
?>
<a href="?ac=public">最新公开</a></li>
</ul>
</div>
<div class="infoContent block">
<div id="threadlist">
<div class="thread">
<div class="thread-title">
<a title="<?php echo $ti[0];?>" href="<?php echo $li[0];?
>"><?php echo $ti[0];?></a>
</div>
</div>
<div class="thread">
<div class="thread-title">
<a title="<?php echo $ti[1];?>" href="<?php echo $li[1];?
>"><?php echo $ti[1];?></a>
</div></div>
<div class="thread">
<div class="thread-title">
<a title="<?php echo $ti[2];?>" href="<?php echo $li[2];?
>"><?php echo $ti[2];?></a>
</div></div>
<div class="thread">
<div class="thread-title">
<a title="<?php echo $ti[3];?>" href="<?php echo $li[3];?
>"><?php echo $ti[3];?></a>
</div></div>
<div class="thread">
<div class="thread-title">
<a title="<?php echo $ti[4];?>" href="<?php echo $li[4];?
>"><?php echo $ti[4];?></a>
</div></div>
<div class="thread">
<div class="thread-title">
<a title="<?php echo $ti[5];?>" href="<?php echo $li[5];?
>"><?php echo $ti[5];?></a>
</div></div>
<div class="thread">
<div class="thread-title">
<a title="<?php echo $ti[6];?>" href="<?php echo $li[6];?
>"><?php echo $ti[6];?></a>
</div></div>
<div class="thread">
<div class="thread-title">
<a title="<?php echo $ti[7];?>" href="<?php echo $li[7];?
>"><?php echo $ti[7];?></a>
</div></div>
<div class="thread">
<div class="thread-title">
<a title="<?php echo $ti[8];?>" href="<?php echo $li[8];?
>"><?php echo $ti[8];?></a>
</div></div>
<div class="thread">
<div class="thread-title">
<a title="<?php echo $ti[9];?>" href="<?php echo $li[9];?
>"><?php echo $ti[9];?></a>
</div>
</div>
</div>
</div>
</body>
</html>
------
太长了有木有~~~
我想到了php的for语句,来缩短一下。
2.0简化版(当然还可以压缩一下):http://baimaozi.tk/3333.php<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link type="text/css" rel="stylesheet"
href="http://zone.wooyun.org/themes/wooyun/css/style.css"/></head>
<body>
<?php
$ac=@$_GET['ac'];
if ($ac=="submit" or $ac=="")
{
$data=file_get_contents('http://api.wooyun.org/bugs/submit');
//echo $data;
}
elseif ($ac=="confirm")
{
$data=file_get_contents('http://api.wooyun.org/bugs/confirm');
//echo $data;
}
elseif ($ac=="public")
{
$data=file_get_contents('http://api.wooyun.org/bugs/public');
//echo $data;
}
else
{
exit("参数错误");
}
$dc=json_decode($data);
for ($i=0; $i<=9; $i++)
{
$ti[$i]=$dc[$i]->title;
$li[$i]=$dc[$i]->link;
}
?>
<div class="infoTab">
<ul>
<?php
if ($ac=="submit" or $ac=="")
{
echo '<li class="current">';
}
else
{
echo "<li>";
}
?>
<a href="?ac=submit">最新提交</a></li>
<?php
if ($ac=="confirm")
{
echo '<li class="current">';
}
else
{
echo "<li>";
}
?>
<a href="?ac=confirm">最新确认</a></li>
<?php
if ($ac=="public")
{
echo '<li class="current">';
}
else
{
echo "<li>";
}
?>
<a href="?ac=public">最新公开</a></li>
</ul>
</div>
<div class="infoContent block">
<div id="threadlist">
<?php
for ($n=0; $n<=9; $n++)
{
echo <<<EOF
<div class="thread">
<div class="thread-title">
<a title="{$ti[$n]}" href="{$li[$n]}">{$ti[$n]}</a>
</div>
</div>
EOF;
}
?>
</div>
</div>
</body>
</html>
---
本集代码打包下载:http://l5.yunpan.cn/lk/Qv92YJyKCXD3T
------
下集预告:json能不能用js来解析呢,当然可以!说到js,我想到了chrome插件……