当前位置:WooYun(白帽子技术社区) >> php >> 我是如何解析Wooyun api的-1.php版

我是如何解析Wooyun api的-1.php版

VIP (Fatal error: Call to undefined function getwb() in /data1/www/htdocs/106/wzone/1/index.php on line 10|@齐迹@小胖子@z7y@nauscript|昨晚做梦梦见了一个ecshop注射0day,醒来后忘记在哪了。|预留广告位) | 2013-01-29 08:33

乌云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插件……

分享到:
  1. 1#
    回复此人 感谢
    Wdot | 2013-01-29 09:02

    <?php
    $json=file_get_contents('http://api.wooyun.org/bugs');
    $bugs=json_decode($json);
    foreach($bugs as $id=>$bug)
    {
      //最近10条
      print "------------------------\r\n"
      print "标题:".$bug->title."\r\n";
      print "状态:".$bug->status."\r\n";
      print "时间:".$bug->date."\r\n";
      print "链接:".$bug->link."\r\n";
      
    }
    ?>

  2. 2#
    回复此人 感谢
    Wdot | 2013-01-29 09:04

     2013-01-29 上午9.03.33.png

    上面的  print "------------------------\\r\\n" 这行少了个分号。。

  3. 3#
    回复此人 感谢
    xsser (十根阳具有长短!!) | 2013-01-29 11:08

    这个可以做成js版本作为模块添加到自己的博客当中

  4. 4#
    回复此人 感谢
    半世倾尘 | 2013-01-29 13:01

    @xsser 不会做怎么办

  5. 5#
    回复此人 感谢
    z7y (小胖子首席鉴黄师) | 2013-01-29 21:55

    @VIP  基友,好久没上QQ了,想你了。。。。

  6. 6#
    回复此人 感谢
    f4tb0y (隆) | 2013-01-29 22:17

    @xsser 嗯 3est貌似早就搞了

  7. 7#
    回复此人 感谢
    x7iao (宇宙黑阔。) | 2013-01-29 22:50

    用swith判断状态,用foreach遍历数组..最简单的..

  8. 8#
    回复此人 感谢
    乔夕夏 | 2015-03-05 09:54

    前台用angular解析,分分钟搞定的事情

添加新回复

登录 后才能参与评论.

WooYun(白帽子技术社区)

网络安全资讯、讨论,跨站师,渗透师,结界师聚集之地

登录