Crawl Dy
时间:2022-07-28
本文章向大家介绍Crawl Dy,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前言
抖音是一个很好的平台,森罗万象,大到央视新闻,小到普通老百姓日常。上面的活跃用户的粉丝数量,有如恒河沙数,也有如寥若晨星。
抖音的推荐算法会逐渐决定你将要看什么,滑稽吧?你的观看选择,从这个角度看,居然是他人决定,而不是自己去寻找?。自己去寻找的不好吗?人懒了吗?
本文建立抖音推荐算法的基础上,爬取一些自己喜欢的东西,当然是小姐姐了。一开口?就知道是老色批了,又在ghs,?✈️拷走。?这边前期刷抖音的时候,在一下小姐姐视频上停留时间过长,抖音app会自动判定你喜欢这类视频,或者在刷到漂亮小姐姐,点个like,后面还是会推送这类视频。于是不需要使用人脸判定接口了,麻烦。
先上结果图:
准备工作
详细过程
- 配置fiddle 打开fiddle,在option里设置如下
重启fiddler。
- 配置模拟器 配置网络,查看本机ip,为192.168.0.106
配置模拟器,保存。
配置证书:在浏览器中输入设置的ip:端口,我的是192.168.0.106:8888,就会打开fiddler的页面。然后点击fiddlerRoot certificate,安装证书。如果没有下面,重启一下fiddle。
点击以后开始下载,在任务栏点击安装,设置名称,设置锁屏手势。
- 打开抖音,如图所示,fiddle有些花眼。红框是需要抓取的进程数据。
- 于是定义显示规则,只显示这个process,不显示其他进程,在其他进程上右键,filter now ,hide’XXXXX’
- 分析抓包数据,我们需要找到json数据。在滑动抖音后,fiddle里面就一个json 包,还非常小,点开后啥数据也没有。
经过我百般探索,在模拟器抖音点击用户头像,就会有较大body 的json出现。
这个json数据包很大吧,打开分析吧。
- 打开后,仔细比较,这就是用户所有数据了。
仔细找找,在video里就能找到视频,把url_list里链接复制到浏览器就能够播放。
- 已经完成一大半了,接下来就是批量获取json数据,然后解析json数据中的video链接,下载到本地。 批量获取json数据,在fiddle定义script rule。如图所示,然后点击 save script。
下面是代码,fielname变量指向的目录D:/抖音/raw_data
手动生成。
static function OnBeforeResponse(oSession: Session) {
if (m_Hide304s && oSession.responseCode == 304) {
oSession["ui-hide"] = "true";
}
if (oSession.uriContains("https://aweme.snssdk.com/aweme/v1/aweme/post/")||oSession.uriContains("https://api3-core-c-lf.amemv.com/aweme/v1/aweme/post/")){
var strBody=oSession.GetResponseBodyAsString();
var sps = oSession.PathAndQuery.slice(-58,);
var filename = "D:/抖音/raw_data" + "/" + sps + ".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();
}
}
接下来,只需要在模拟器里滑动,点击用户,就可以看到在定义的目录里有很多json文件。
- 手动划肯定不得行,于是就需要像按键精灵一样的东西,于是乎,就可以用夜神模拟器里面的操作录制。需要注意的是,有的用户头像上会有直播,点进去会跳到用户直播界面,我也没得办法,可以点击左下方的@user按钮,但按钮位置不太固定。也不好用。 我的解决办法是深夜进行这个操作录制,那时没得人在直播。正常模拟点击即可。
- 解析json. 在
D:/抖音/
下新建crawl.py。 import os,json,requests headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36'} videos_list = os.listdir('D:/抖音/raw_data/') count = 0 # 统计下载视频数量 for videos in videos_list: json_data = open('./raw_data/{}'.format(videos),encoding='utf-8') try: content = json.load(json_data)['aweme_list'] title = content[0]['author']['nickname'] #小姐姐名称 for c in r'#/:*@#?"<>|/': title = title.replace(c,'') print(title,":可爱又美丽的我正在去往您的硬盘里n") if not os.path.exists('./VIDEO/'+title): os.makedirs('./VIDEO/'+title,) # 建立以小姐姐名称的文件夹 for video in content: video_name = video['desc'] for c in r'#/:*@#?"<>|/': video_name = video_name.replace(c,'') try: video_url = video['video']['play_addr']['url_list'][0] print(video_name) continue videoMp4 = requests.request('get',video_url,headers=headers).content with open('./VIDEO/{}/{}.mp4'.format(title,video_name),'wb') as f: f.write(videoMp4) print("可爱又美丽的我已经在硬盘了") count += 1 except: pass except: pass print('--------------------------------') print("一共{}有个在您的硬盘里呢".format(count)) 后记 这些小姐姐们,都是以自己美颜后的模样呈现在视频前,在视频前摆几个动作而已,没看到有啥子与众不同的才艺,或者说闪光点。又或者说,这才是我们大众喜欢的女性,不然怎么一个个的好几万like。人均校花?。 小姐姐们确实挺好看的,不过不太符合我的审美观。萝卜青菜,各有所爱。?希望每个人的另一半都是自己眼里最美的啦。 ?后面打算,基于这些小姐姐,做视频帧数切割,以及?切割。
- 如何编译Livy并在非Kerberos环境的CDH集群中安装
- Livy,基于Apache Spark的开源REST服务,加入Cloudera Labs
- 如何在RedHat7上使用Bind搭建DNS服务
- 如何在Redhat7.3的CDH5.14中启用Kerberos
- 如何使用SAML配置Cloudera Manager的身份验证
- 如何使用Shibboleth搭建IDP服务并集成OpenLDAP
- 如何获取Hive正在执行或者已结束的的MapReduce作业的SQL语句
- 如何启用Oozie的HA
- 如何使用Oozie API接口向Kerberos环境的CDH集群提交Spark作业
- 如何降级Cloudera Manager和CDH
- 如何在CDH中安装和使用StreamSets
- 如何使用Oozie API接口向非Kerberos环境的CDH集群提交Shell工作流
- 如何使用Oozie API接口向非Kerberos环境的CDH集群提交Java作业
- 如何通过Livy的RESTful API接口向Kerberos环境的CDH集群提交作业
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- CentOS 6.8 NFS 文件共享设置的方法
- linux如何mount挂载磁盘并设置开机自动mount的实现
- 浅谈Linux的编码及编码转换方法
- 在 Linux 上用 DNS 实现简单的负载均衡的方法
- centos7.2.1511安装jdk1.8.0_151及mysql5.6.38的方法
- Linux CentOS使用crontab设置定时重启的方法
- centos安装php5、卸载php、安装php7的教程
- centos7中crontab定时计划任务5分钟一次命令写法
- Ubuntu16.04 安装Teamviewer的教程详解
- 01 . OpenResty简介部署,优缺点,压测,适用场景及用Lua实现服务灰度发布
- 详解Linux iptables 命令
- 详解fedora 开启 apache 并 开启目录浏览模式
- CentOS新建用户并使能密钥登录的方法
- Linux系统扩容根目录磁盘空间的操作方法
- Linux如何查看进程栈信息示例