3.自动化工具.autojs模拟用户抖音列表接口的部署
优采云 发布时间: 2021-08-08 21:113.自动化工具.autojs模拟用户抖音列表接口的部署
目的:采集抖音非常受欢迎的视频(要自动化)
抖音的防爬技术很好,据说还有防爬的部门。所以通过编写代码直接访问抖音接口,是达不到目的的。数据只能通过模拟真实用户行为获得。
我的主要实现方式是:通过在Android模拟器中模拟用户的滑动,通过网络代理拦截滑动过程中产生的数据
开发中使用的工具:
硬件:需要一台免费的电脑,
软件:auto.js、Android模拟器、代理服务项目、按钮向导、抓包工具
开发过程
1 确定抖音的哪个接口使用采集data
考虑从首页推荐列表或用户工作列表中获取数据。
我用的fiddler抓包工具,
抓取首页推荐列表界面,发现数据格式为Protobuf,是一种传输速度更快,占用空间更少的数据格式。解析这种格式需要支持文件。所以我们无法解析并放弃页面推荐列表。
尝试从用户的工作列表界面抓包,发现是json格式,可以获取视频信息。所以我决定获取用户作品列表采集。
2.自动化工具auto.js模拟用户滑动抖音list
为了保证采集的视频受欢迎,我们用户的作品并非都是采集。所以我们模拟了用户的行为:在首页的推荐视频中滑动,滑动到超过10万赞的视频,向左滑动,进入视频作者的作品列表。
首先在你的电脑上安装安卓模拟器,我用的是天天模拟器
在模拟器中安装抖音和auto.js应用,编写auto.js自动化脚本,并运行脚本。
这是我写的 auto.js 脚本。供您参考
<p>var myDate = new Date();
var hours = myDate.getHours();
if (hours >= 0) {
console.log("去启动抖音");
launchApp("抖音");
sleep(7000)
while (true) {
是否满足赞();
左滑进入个人中心();
判断是否出去();
关闭崩溃应用();
toast("quit persion center ")
退出个人中心();
//Swipe(10, device.height / 2,device.width / 2, device.height / 2, 10, 300);//向右滑
sleep(2000);
toast("hua dong cao zuo ")
Swipe(device.width / 2, device.height / 1.5, device.width / 2, 10, 500); //向下滑
sleep(3000);
每10分钟重启();
取消弹框();
判断是否出去();
关闭崩溃应用();
}
}
function 是否满足赞() {
log("是否满足赞")
try {
//不满足1万的赞划走
while (isTrue()) {
Swipe(device.width / 2, device.height / 1.5, device.width / 2, 10, 500); //向下滑
toast("Dig not satisfied")
sleep(1500);
退出个人中心();
}
} catch (e) {}
}
function isTrue() {
// var u = id("aen").find()
// var e = u.length - 2
// var tv = u[e];
return false;
var like = 0;
try {
var b = id("com.ss.android.ugc.aweme:id/aer").find();
var a = b[1].desc()
if (a && a.indexOf("喜欢") > -1) {
like = a.substring(a.indexOf("喜欢") + 2, a.indexOf(",按钮"));
toastLog(like);
}
} catch (e) {}
if (like.indexOf("w") == -1) {
return true;
} else {
return like.substr(0, like.indexOf("w")) -1) {
if (parseInt(totallike.substr(0, totallike.length - 1)) >= 1000) {
//关注作者
payAttention(totallike, totalfans, uniqueid, authorname);
}
}
//总点赞数或粉丝数大于1亿 关注作者并抓取更多
if (authorname && totallike.indexOf("亿") > -1 || totalfans.indexOf("亿") > -1) {
//关注作者
loadMore = payAttention(totallike, totalfans, uniqueid, authorname);
}
//粉丝量大于500W 关注作者, 如果粉丝量大于1000W 抓取作者更多作品
if (authorname && totalfans.indexOf("w") > -1) {
var fansCount = parseInt(totalfans.substr(0, totalfans.length - 1));
if (fansCount >= 500 && fansCount = 1000) {
loadMore = payAttention(totallike, totalfans, uniqueid, authorname);
}
}
if (loadMore) {
sleep(4000);
log("into swipe action ")
for (var i = 0; i