1.安装抓包工具(filder)和模拟器(夜神模拟器)
注意:抖音有ssl验证,夜神模拟器安装xposed和JustTrustMe之后,才能正常抓包,不然打开抖音是没有网的。
2.破解X-grogon签名算法。因为抖音有签名验证机制,要想直接使用抖音接口,必须破解签名算法!这里有能力的大佬可以通过反编译APP去破解,当然我是没有这个能力的,只能通过抓包工具把数据下载下来。
配置filder下载数据包:
static function OnBeforeResponse(oSession: Session) {
if (m_Hide304s && oSession.responseCode == 304) {
oSession["ui-hide"] = "true";
}
//将关键接口标红
if (oSession.HostnameIs("aweme.snssdk.com")) {
oSession["ui-color"] = "red";
}
//抓取接口的数据
if (oSession.uriContains("https://aweme.snssdk.com/aweme/v2/comment/list/")){
var strBody=oSession.GetResponseBodyAsString();
var sps = oSession.PathAndQuery.slice(-58,);
var host=oSession.PathAndQuery;
var begin=host.indexOf('aweme_id');
var end=host.indexOf('&count=20');
var name=host.Substring(begin,end);
var date = new Date();
var seperator1 = "-";
var year = date.getFullYear();
var month = date.getMonth() + 1;
var strDate = date.getDate();
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
var currentdate = year + seperator1 + month + seperator1 + strDate;
var filetitle=currentdate + '_' + name;
//FiddlerObject.alert(currentdate);
var filename = "E:/www/phpstudy_pro/WWW/douyin/commend" + "/" + filetitle + ".json";
var curDate = new Date();
var sw : System.IO.StreamWriter;
if (System.IO.File.Exists(filename)){
sw = System.IO.File.AppendText(filename);
sw.Write(strBody);
}
else{
sw = System.IO.File.CreateText(filename);
sw.Write(strBody);
}
sw.Close();
sw.Dispose();
}
}
注意:因为抖音每次只显示20条评论,所以需要通过模拟器的宏操作不断下拉获取下一页数据:
录制一段下拉 的操作,不断执行就好。
3.处理数据
数据已经下载好了,接下来只要处理,提取出自己需要的数据就行了。
这里我使用的是php语言处理数据。
<?php
$dir=dirname(__FILE__);
$dir=str_replace('\\','/',$dir);
$listArr = glob($dir.'/commend/*.json');
$arr=[];
foreach ($listArr as $k=>$file){
$json=file_get_contents($file);
$data=json_decode($json,true);
//评论
if (!empty($data['comments'])){
$comments=$data['comments'];
foreach ($comments as $id=>$comment){
//评论
$text=$comment['text'];
//评论的用户
$user=$comment['user'];
$nickname=$user['nickname'];//昵称
$signature=$user['signature'];//签名
$avatar=$user['avatar_168x168']['url_list'][1];//头像
$lable=$comment['label_text'];//身份
//评论id
$cid=$comment['cid'];
//评论时间
$createTme=$comment['create_time'];
//视频id
$awemeId=$comment['aweme_id'];
//数据整合
$arr[$cid]=[
'awemeId'=>$awemeId,
'text'=>$text,
'nickname'=>$nickname,
'signature'=>$signature,
'avatar'=>$avatar,
'lable'=>$lable,
'createTme'=>$createTme,
];
}
}
//评论为空则跳出循环
continue;
}
echo "<pre>";
print_r($arr);
echo "</pre>";
离岸少年