Zyaire
才疏不耻志气狂
Beyond
下载有声小说的接口

记录一个接口获取的过程。

通过手机抓包分析出听中国的部分api接口,并通过java实现有声书搜索和批量下载。

首先在手机上打开PacketCapture,选择单独捕获目标软件的数据包;打开目标程序,搜索内容,选择内容并播放。

接下来,逐个分析捕获到的数据包,有兴趣的小伙伴可以自己分析。

获取到我需要的个接口:

  • 搜索:http://app.tingchina.com/search.asp?keyword=%E5%91%A8%E5%BB%BA%E9%BE%99
  • 下载列表:http://app.tingchina.com/book_downlist.asp?pstr=1&type=1&bookID=22534&pend=50
  • 播放:http://app.tingchina.com/play_cdn.asp?episodes=0&bookID=22534&bookType=1

最后用java发送http请求,获取下载链接,然后下载。

过程很简单,结果很不错,下面贴上代码,仅供参考。

TingChina.java

package top.ting.china;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class TingChina {
    private HttpConnect htc = new HttpConnect();
    private String exec(Map a){
        //这里得到需要请求数据的url
         //Java实现PHP中的http_build_query()效果
        String url = a.get("url")+"?"+ HttpConnect.http_build_query((Map<String, Object>) a.get("body"));
        String data = null;
        if(a.get("method").equals("GET")){
            //判断是否是get
             //System.out.println("the url is:"+url);
            try {
                data = htc.doGet(url);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }else if(a.get("method").equals("POST")){
            //System.out.println("the url is:"+url);
            try {
                data = htc.doPost(url);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        //这里以上都是成功
        return HttpConnect.unicodeToUtf8(data);
    }
    public String search(String keyword){
         //搜书
        Map<String , Object> api = new HashMap<String,Object>();
        Map<String , Object> parm = new HashMap<String,Object>();
        api.put("method","GET");
        api.put("url","http://app.tingchina.com/search.asp");
        parm.put("keyword",keyword);
        api.put("body",parm);
        return exec(api);
    }
    public String book_downlist(int type,int bookID){
         //获取下载列表
        Map<String , Object> api = new HashMap<String,Object>();
        Map<String , Object> parm = new HashMap<String,Object>();
        api.put("method","GET");
        api.put("url","http://app.tingchina.com/book_downlist.asp");
        parm.put("pstr",1);
        parm.put("type",type);
        parm.put("bookID",bookID);
        parm.put("pend",10000);
        api.put("body",parm);
        return exec(api);
    }
    public String play_cdn(int episodes,int type,int bookID){
        //获取下载链接
        Map<String , Object> api = new HashMap<String,Object>();
        Map<String , Object> parm = new HashMap<String,Object>();
        api.put("method","GET");
        api.put("url","http://app.tingchina.com/play_cdn.asp");
        parm.put("bookType",type);
        parm.put("bookID",bookID);
        parm.put("episodes",episodes);
        api.put("body",parm);
        return exec(api);
    }
}

禁止转载。

发表评论

textsms
account_circle
email

18 − 14 =

Beyond

下载有声小说的接口
记录一个接口获取的过程。 通过手机抓包分析出听中国的部分api接口,并通过java实现有声书搜索和批量下载。 首先在手机上打开PacketCapture,选择单独捕获目标软件的数据包;打开目标…
扫描二维码继续阅读
2020-04-05