本文仅供参考,禁止用于任何形式的商业用途。违者自负其责。
准备工作:
(1)手机(安卓、ios均可)/安卓模拟器。今天以Android模拟器为主,操作流程一致。
https://www.telerik.com/download/fiddler
(3)编程工具:pycharm
(4)在Android模拟器(简易安装模拟器)上安装Tik Tok
一、fiddler配置
在“工具”的“选项”中,根据图选中它,然后单击“操作”。
配置远程链接:
允许远程链接监控。端口可以随意设置,只要不重复即可。默认值为8888。
然后:重启fiddler!此配置将生效。
二、安卓模拟器/手机配置
先检查一下这台机器的IP:在cmd中输入ipconfig,记住这个IP。
确保手机和电脑在同一个局域网内。
手机配置:配置连接的WiFi,代理选择手动,然后输入上图8888的ip端口号。
模拟器配置:设置中长按连接的wifi,代理选择手动,然后输入上图的ip端口号为8888。
设置好代理后,在浏览器中输入你设置的ip: port,比如10.10.16.194: 8888,fiddler页面就打开了。然后点击fiddlerRoot certificate安装证书,否则手机会认为环境不安全。
证书的名称是任意的,可能需要设置锁屏密码。
接下来可以在fiddler里抓手机/模拟器软件的包。
三、抖音抓包
打开Tik Tok,然后观察fiddler中的所有包。
有一个包,包类型是json(json是网页返回的数据,具体是百度),主机地址如图,包大小一般都不小。这是视频包。
点击这个json包,在fidder的右边,点击解码,我们就对视频包的json进行解码。
解码后:点击aweme_list,其中每个花括号代表一个视频。这一个,像哔哩哔哩弹幕或自动更快,将载入一点点。看完预装的,再装一些。
Json是一本字典。我们的视频链接在:aweme_list,每个视频下的video下play_addr下的url_list有6个url。都是一样的视频,大概是为了应付不同的环境,但是一般第三个或者第四个联动的视频不容易出错。复制链接并将其粘贴到浏览器中以观看视频。
接下来解决几个问题,
1.视频数量。每个包只有几个视频,怎么抢更多?
这时候我们就需要借助模拟器的模拟鼠标来翻页,这样json包就会不断出现。
2,如何保存json供本地使用
有一种方法可以手动复制粘贴,但这是非常低的。
所以我们用fidder自己的脚本,给它添加规则,刷出来的时候自动保存视频json包。
自定义规则包:
链接:https://pan.baidu.com/s/1wmtUUMChzuSDZFYGSyUhCg
提货代码:7z0l
单击规则脚本,然后将自定义规则放置在如图所示的位置:
这个脚本需要修改两点:
(URL的第一行:
这是从视频包的url中提取的。Tik Tok会不定期更新这个网址,所以用不了就要更新:
比如现在和昨天不一样,记得修改。
(2)路径。那是我设置json包保存的地址。我必须自己修改并创建一个文件夹。修改完后记得保存。
打开设置好的模拟器和脚本后,稍等一会儿,就可以看到文件夹中保存的包了:
四。爬虫脚本
接下来,用pycharm编写一个脚本来获取json包中的视频链接:
导包:
导入操作系统、json、请求
伪装头:
headers={ ‘ User-Agent ‘ : ‘ Mozilla/5.0(Windows NT 10.0;Win64x64) AppleWebKit/537.36 (KHTML,像壁虎一样)Chrome/72 . 0 . 3626 . 119 Safari/537.36 ‘ }
逻辑代码:
运行代码:
效果:
导入OS,JSON,请求#伪装头={ ‘ user-agent ‘ 3360 ‘ Mozilla/5.0(Windows NT 10.0;Win64x64) AppleWebKit/537.36 (KHTML,像壁虎一样)Chrome/72 . 0 . 3626 . 119 Safari/537.36 ‘ } videos _ list=OS . listdir(‘ c :/users/须贺/桌面/Tik Tok数据抓取/Tik Tok数据抓取/raw_data/’) #获取文件夹中所有json包名称的计数count=1 #并将其作为videos_list: #中视频的视频名称来循环json列表/Tik Tok爬网数据/raw_data/{} ‘。格式(videos),编码=’utf-8’) #打开json包content=json . load(a)[‘ a weme _ list ‘]#取出JSON包中的所有视频对于content: #循环视频列表中的视频,选择每个视频video _ url=video[‘ video ‘][‘ play _ addr ‘][‘ url _ list ‘][4]#获取视频URL,每个视频有6个URL,第5个视频MP4=requests.request (‘get ‘,video _ url,Headers=headers)。content #用open(‘)获取视频二进制代码。/Tik Tok抓取数据/视频/{} .mp4 ‘。format (count),’ WB’) ASF3360 #以二进制模式写入路径,记得创建路径f . Write(video MP4)# Write to print(‘ video { }下载完成’)。format(count)) #下载提示count=1 # count 1本文来自精品专栏《爬虫案例合集》