app抓包,根据接口开发web端

平时喜欢看某个做视频的app,最近app有bug,看着看着就会闪退,回到首页,反馈给官方,好久也不处理,于是自己抓包app的接口,直接用php开发个web版本的自己用.
首先抓包过程就不说了,我的另一篇博客有详细介绍:
Charles抓包https,http
先看一下web的界面:


其实就两个页面,非常简单,下面贴一下代码,链接都去掉了,以免被坏人利用:

<?php
ini_set(‘date.timezone‘,‘Asia/Shanghai‘);
header("Content-Type:text/html;Charset=utf8");

if(isset($_GET[‘type‘])){
    $type = $_GET[‘type‘];
}
//判断类型
if(empty($type)){
    $url_sort = ‘day‘;
    $type=1;
}else{
    if($type==1){
        $url_sort = $_GET[‘sort‘];
    }else{
        $catid = $_GET[‘cat‘];
    }
}

//json转数组方法
function toarray($url){
    $url = $url;
    $json_str = file_get_contents($url);
    $list = json_decode($json_str,true);
    return $list;
}

    //获取所有分类
    $url = "#######";
    $list = toarray($url);
    for($a=3;$a<count($list[‘itemList‘]);$a++){
        $cates[$a][‘id‘] = $list[‘itemList‘][$a][‘data‘][‘id‘];
        $cates[$a][‘title‘] = str_replace(‘#‘,‘‘,$list[‘itemList‘][$a][‘data‘][‘title‘]);
    }
    // echo "<pre>";
    // print_r($cates);exit;

//排行视频
if ($type==1) {

    switch ($url_sort)
    {
        case "day":
          $url = "#######";
          break;
        case ‘week‘:
          $url = "#######";
          break;
        case ‘month‘:
          $url = "#######";
          break;
        case ‘zong‘:
            $url = "######l";
            break;
    }
    if($url_sort==‘day‘){
        //每日精选
        $list = toarray($url);
        for($i=1;$i<count($list[‘itemList‘]);$i++){
            if(!empty($list[‘itemList‘][$i][‘data‘][‘content‘])){
                $res_list[$i][‘id‘] = $list[‘itemList‘][$i][‘data‘][‘content‘][‘data‘][‘id‘];
                $res_list[$i][‘title‘] = $list[‘itemList‘][$i][‘data‘][‘content‘][‘data‘][‘title‘];
                $res_list[$i][‘img‘] = $list[‘itemList‘][$i][‘data‘][‘content‘][‘data‘][‘cover‘][‘feed‘];
                $res_list[$i][‘time‘] = date("Y-m-d",str_replace("000","",$list[‘itemList‘][$i][‘data‘][‘header‘][‘time‘]));
                $res_list[$i][‘tag‘]  = "";
                $tags_arr = $list[‘itemList‘][$i][‘data‘][‘content‘][‘data‘][‘tags‘];
                foreach ($tags_arr as $ktag => $vtag) {
                    $res_list[$i][‘tag‘] .= $vtag[‘name‘]." ";
                }
            }

        }

    }else{
        //周,月,总排行
        $list = toarray($url);
        for($i=0;$i<count($list[‘itemList‘]);$i++){
                $res_list[$i][‘id‘] = $list[‘itemList‘][$i][‘data‘][‘id‘];
                $res_list[$i][‘title‘] = $list[‘itemList‘][$i][‘data‘][‘title‘];
                $res_list[$i][‘img‘] = $list[‘itemList‘][$i][‘data‘][‘cover‘][‘feed‘];
                $res_list[$i][‘time‘] = date("Y-m-d",str_replace("000","",$list[‘itemList‘][$i][‘data‘][‘releaseTime‘]));
                $res_list[$i][‘tag‘]  = "";
                $tags_arr = $list[‘itemList‘][$i][‘data‘][‘tags‘];
                foreach ($tags_arr as $ktag => $vtag) {
                    $res_list[$i][‘tag‘] .= $vtag[‘name‘]." ";
                }

        }
    }
    $res = $res_list;
}elseif($type==2){
    //分类
    if(empty($_GET[‘page‘])){
        $page = 1;
    }else{
        $page = $_GET[‘page‘];
    }
    $num = 20;
    $start = ($page-1)*$num;
    $url = "http://####?limit={$start}&num={$num}&id={$catid}";
    $list = toarray($url);
        for($i=0;$i<count($list[‘itemList‘]);$i++){
                $res_list[$i][‘id‘] = $list[‘itemList‘][$i][‘data‘][‘id‘];
                $res_list[$i][‘title‘] = $list[‘itemList‘][$i][‘data‘][‘title‘];
                $res_list[$i][‘img‘] = $list[‘itemList‘][$i][‘data‘][‘cover‘][‘feed‘];
                $res_list[$i][‘time‘] = date("Y-m-d",str_replace("000","",$list[‘itemList‘][$i][‘data‘][‘releaseTime‘]));
                $res_list[$i][‘tag‘]  = "";
                $tags_arr = $list[‘itemList‘][$i][‘data‘][‘tags‘];
                foreach ($tags_arr as $ktag => $vtag) {
                    $res_list[$i][‘tag‘] .= $vtag[‘name‘]." ";
                }

        }
    $res = $res_list;

}else{
    die("写错了您嘞!!!");
}

include("index_extend.html");

?>

html文件代码:

<!DOCTYPE html>
<html>
<head>
    <title>web版本</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="./layui/css/layui.css"  media="all">
    <!-- 让IE8/9支持媒体查询,从而兼容栅格 -->
    <!--[if lt IE 9]>
      <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
      <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
    <style type="text/css">
        #div1{
            position:fixed;
            top:0;
            left:0;
            bottom:0;
            right:0;
            z-index:-1;
            }
        #div1 > img {
            height:100%;
            width:100%;
            border:0;
        }
        .one:hover{
            box-shadow: 5px 5px 5px #a6a6a6;
        }
        .layui-breadcrumb a {
            color: #fff!important;
            font-size: 18px
        }
        .page:hover{
            font-size:15px;
        }
    </style>
</head>
<body >
<div id="div1"><img src="bg.jpg" /></div> 

<div class="layui-row" style="width:80%;margin:30px auto" >
     <span class="layui-breadcrumb" lay-separator="|" style="margin-left: 30px">
        <a href="#">视频排行:</a>
  <a href="./index.php?type=1&sort=day">日排行</a>
  <a href="./index.php?type=1&sort=week">周排行</a>
  <a href="./index.php?type=1&sort=month">月排行</a>
  <a href="./index.php?type=1&sort=zong">总排行</a>

</span>
<br/><br/>
  <span class="layui-breadcrumb" lay-separator="|" style="margin-left: 30px">
    <a href="#">分类:</a>
    <?php foreach($cates as $kcat => $vcat){ ?>
    <a href="./index.php?type=2&cat=<?php echo $vcat[‘id‘]; ?>"><?php echo $vcat[‘title‘]; ?></a>
    <?php } ?>
</span>
</div>

<div class="layui-row" style="width:80%;margin:30px auto">

    <?php foreach($res as $k => $v){ ?>

    <div onclick="location=‘./detail.php?id=<?php echo $v[‘id‘] ?>‘" class="layui-col-xs12 layui-col-sm6 layui-col-md3" style="display: flex;">
        <div class="one" style="background-color: white;width:100%;min-height: 100px;margin:10px;border-radius: 10px">
            <div style="width:90%;height: 150px;margin:10px auto">
                <img  width="100%" height="100%" style="border-radius: 10px" src="<?php echo $v[‘img‘]; ?>">
            </div>
            <div style="width:90%;min-height: 50px;margin:5px auto"><?php echo $v[‘title‘]; ?>
            <br/><?php echo $v[‘time‘]; ?>
            <br/><?php echo $v[‘tag‘]; ?>
          </div>
        </div>
    </div>

    <?php } ?>

</div>
<div class="layui-row" style="width:80%;margin:30px auto;" >
    <?php
        if(isset($_GET[‘page‘])){?>
<a href="./index.php?type=2&cat=<?php echo $_GET[‘cat‘]; ?>&page=<?php echo $_GET[‘page‘]-1; ?>" class="page" style="width:100px;padding:10px;background-color: white;border-radius: 10px;float: left;text-align: center;">上一页</a>
        <?php }else{
        $_GET[‘page‘]=1;
    }

        ?>
    <?php if($type==2){?>
    <a href="./index.php?type=2&cat=<?php echo $_GET[‘cat‘]; ?>&page=<?php echo $_GET[‘page‘]+1; ?>" class="page" style="width:100px;padding:10px;background-color: white;border-radius: 10px;float: right;text-align: center;">下一页</a>
    <?php }?>
</div>
<script src="./layui/layui.js" charset="utf-8"></script>
<script>
layui.use(‘element‘, function(){
  var element = layui.element; //导航的hover效果、二级菜单等功能,需要依赖element模块
});
</script>
</body>
</html>

详情页的php代码:

<?php
ini_set(‘date.timezone‘,‘Asia/Shanghai‘);
header("Content-Type:text/html;Charset=utf8");

if(isset($_GET[‘id‘])){
    $id = $_GET[‘id‘];
}

//json转数组方法
function toarray($url){
    $url = $url;
    $json_str = file_get_contents($url);
    $list = json_decode($json_str,true);
    return $list;
}

$url = "http://######";
$list = toarray($url);

if(!empty($list[‘playInfo‘][1][‘urlList‘][0][‘url‘])){
    $list[‘playUrl‘] = $list[‘playInfo‘][1][‘urlList‘][0][‘url‘];
}
// echo ‘<pre>‘;
// print_r($list);exit;

include("detail.html");

?>

详情页的html代码:

<!DOCTYPE html>
<html>
<head>
    <title><?php echo $list[‘title‘]; ?></title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="./layui/css/layui.css"  media="all">
    <script type="text/javascript" src="//cytroncdn.videojj.com/latest/cytron.core.js"></script>
    <!-- 让IE8/9支持媒体查询,从而兼容栅格 -->
    <!--[if lt IE 9]>
      <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
      <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
    <style type="text/css">
        #div1{
            position:fixed;
            top:0;
            left:0;
            bottom:0;
            right:0;
            z-index:-1;
            }
        #div1 > img {
            height:100%;
            width:100%;
            border:0;
        }
    </style>
</head>
<body >
<div id="div1"><img src="bg.jpg" /></div> 

<div class="layui-row" style="width:80%;margin:30px auto">

    <div class="layui-col-xs12 layui-col-sm12 layui-col-md12" style="display: flex;">
        <div class="one" style="background-color: white;width:100%;min-height: 100px;margin:10px;border-radius: 10px">
            <div style="width:90%;min-height: 50px;margin:10px auto"><h2><?php echo $list[‘title‘]; ?></h2><br/>
            <h3><?php echo $list[‘description‘]; ?></h3></div>
          <div id="parent" style="width:90%;height: 600px;margin:20px auto">

            </div>

        </div>
    </div>

</div>

<script src="./layui/layui.js" charset="utf-8"></script>
<script type="text/javascript">
        var ivaInstance = new Iva(
            ‘parent‘,//父容器id
            {
                appkey: #####‘,//必填,请在控制台查看应用标识
                video: "<?php echo $list[‘playUrl‘]; ?>",//必填,播放地址(例如:http://v.youku.com/v_show/id_XMTY5NDg2MzY5Ng==.html)
                title: "<?php echo $list[‘title‘]; ?>",//选填,建议填写方便后台数据统计
                cover: "<?php echo $list[‘coverForFeed‘]; ?>",//选填,视频封面url
                playerUrl: ‘‘, //选填,第三方播放器与Video++互动层的桥接文件,由Video++官方定制提供,默认为空
                videoStartPrefixSeconds: 0,//选填,跳过片头,默认为0
                videoEndPrefixSeconds: 0,//选填,跳过片尾,默认为0
                /* 以下参数可以在“控制台->项目看板->应用管理->播放器设置” >进行全局设置,前端设置可以覆盖全局设置 */
                skinSelect: 0,//选填,播放器皮肤,可选0、1、2,默认为0,
                autoplay: true,//选填,是否自动播放,默认为false
                rightHand: false,//选填,是否开启右键菜单,默认为false
                autoFormat: true,//选填,是否自动选择最高清晰度,默认为false
                bubble: false,//选填,是否开启云泡功能,默认为true
                jumpStep: 10,//选填,左右方向键快退快进的时间
                tagTrack: false,//选填,云链是否跟踪,默认为false
                tagShow: false,//选填,云链是否显示,默认为false
                tagDuration: 5,//选填,云链显示时间,默认为5秒
                tagFontSize: 16,//选填,云链文字大小,默认为16像素
                editorEnable: false, // 选填,当用户登录之后,是否允许加载编辑器,默认为true
                vorEnable: false, // 选填,是否允许加载灵悟,默认为true
                vorStartGuideEnable: false //选填, 是否启用灵悟新人引导,默认为true
            }
        );
    </script>
</body>
</html>

ok,到此结束

原文地址:http://blog.51cto.com/itafei/2079804

时间: 2024-11-08 13:36:20

app抓包,根据接口开发web端的相关文章

猫眼电影App抓包获取评论数据接口

?之前在CSDN程序人生公众号上看到了这篇文章<邪不压正>评分持续走低,上万条网友评论揭秘,是救救姜文还是救救观众?,文中提到了通过抓包猫眼App发现了评论的数据接口:http://m.maoyan.com/mmdb/comments/movie/248566.json?_v_=yes&offset=1,其中248566属于电影的专属id,offset代表页数,但并未提及如何在猫眼App抓包.经过笔者的摸索,在尝试Charles等各种抓包工具后,踩了无数的坑之后,最终使用Fiddler

想开发网页爬虫,发现被反爬了?想对 App 抓包,发现数据被加密了?不要担心,这里可以为你解决。

全面超越Appium,使用Airtest超快速开发App爬虫 想开发网页爬虫,发现被反爬了?想对 App 抓包,发现数据被加密了?不要担心,使用 Airtest 开发 App 爬虫,只要人眼能看到,你就能抓到,最快只需要2分钟,兼容 Unity3D.Cocos2dx-*.Android 原生 App.iOS App.Windows Mobile……. Airtest是网易开发的手机UI界面自动化测试工具,它原本的目的是通过所见即所得,截图点击等等功能,简化手机App图形界面测试代码编写工作. 安

LoadRunner+Android模所器实现抓包并调试本地服务端

步骤就是 1:新建LR脚本.协议选择Mobile Application - HTTP/HTML 2:在record里选择第三个:Record Emulator........ 3:  选择下一步后,在emulator to record选择模拟器tools目录下的emulator.exe                     command line 里输入avd虚拟机的名称:用@连接  如@test      working directory 随便选个路径就行了 4:然后运行,就会自动启

设置fiddler捕获https和app抓包

chrome浏览器抓取HTTPS包 1.options>HTTPS 2. 勾选Capture HTTPS CONNECTS 3.勾选Decrypt Https traffic 4.若还是不行,则手动点击Actions->Reset all certificate,进行重装即可 火狐浏览器抓取HTTPS包 1.打开火狐浏览器->选项->高级->网络->设置,选择使用系统代理,或者手动设置代理 2.安装fiddler证书 1)首先打开fiddler->options&

安卓模拟器BlueStacks+TCPdump对APP抓包分析

最近要搞安卓APP抓包分析,在网上找了一些方法,综合一自身条件下还是安卓模拟器+tcpdump最方便. 需准备工具: 1.Microsoft .NET Framework 2.0 SP22.Bluestack 0.7.5.27003.Bluestack 0.7.5.2700 Root镜像4.调试用的adb程序5.Wireshark之类的分析工具6.待抓包的APP 首先模拟器选用了BlueStacks,要想使用tcpdump必须要Root,所以还要找一个BlueStacks Root镜像来覆盖掉原

fiddler实现B/S端、APP抓包分析遇到的各种疑难杂症

阅读本文前您需要先下载fiddler并成功安装,并且要有一丢丢测试和接口基础或者在学习fidder时遇到了问题,或许本文可以帮助到你 一.B/S端抓包 Fiddler设置 1. 官网下载fiddler适当版本进行接口抓包 2. 打开如下,如果选择Hide All则为阻止接收接口url展示在窗口 如果选择All Progress则显示浏览器所有捕获到的接口请求 3. 真正的接口测试,需要我们指定对应地址进行请求,过滤掉电脑上那些无用请求,那么fiddler应该如何解决这个问题? 此处我以jenki

jmeter编写脚本之手机app抓包

pc端抓包及常用请求脚本编写,点击打开链接. 首先大家应该清楚手机app原理 据我了解,现在市面上收大概分两种, 一类是手游,用游戏引擎开发的客户端,这类我还未涉猎,不敢高谈: 二类是网站app,一般采用html5+css3作为app前端,实际上app就好比一个浏览器(其实也是浏览器内核),只要知道了主页登陆地址,我们就可以在模拟器上运行app了. 这里推荐使用chrome的开发者工具,具备手机浏览器模拟功能,还可以选择多种手机类型. 按F12开启抓包之旅(Windows系统) 如下图示:

APP抓包——Fiddler工具

Fiddler 简介:Fiddler 是强大且好用的Web调试工具之一,它能记录客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据. Fiddler的运行机制其实就是本机上监听8888端口的http代理.对于PC端Fiddler启动的时候默认IE的代理设为了127.0.0.1:8888,而其他浏览器是需要手动设置的,所以如果需要监听PC端Chrome 网络请求,将其代理改为127.0.0.1:8888就可以监听数据了,手机端按照下面的设置即可完成整个系统的htt

Fiddler的安装和APP抓包

前言 1.Fiddler安装包 2.安卓手机 3.iOS手机 ----------------- 1.下载fiddler软件:可以去官网下载https://www.telerik.com/fiddler,可以下载最新版 2.百度云盘(非最新版): 链接:https://pan.baidu.com/s/10XVzoxwFOjB4sIAmM6pHOw 提取码:72sh ---------------- 1.Fiddler配置 1.1下载之后解压缩,直接next,傻瓜式一直到安装成功. 1.2.配置F