手机端抓包环境准备
手机APP抓包分析 环境搭建(夜神模拟器+burp/fidder);
浏览器中F12用手机界面模式重新加载,看network信息,部分手机浏览器可以访问的功能可以以此方式获取。
基本结构
整个社区生态:用于短视频上传、点赞、分享等,记录美好生活,也加快多种生活方式的传播。这是一个15秒音乐短视频社区,视频资源海量,未进行视频特征细分,存在营销号通过不同方式实现涨粉,转发等目的。
登陆与注册:用户每个用户需要登陆后才能发现更多视频、点赞、评论、关注等,一般通过手机号接收验证码的方式进行登陆,如果是第一次登陆则需要完成信息设置密码等,之后可以通过密码登陆,也可以通过第三方QQ等实现登陆。总的来说,抖音提供多种登录选择方式:手机号登录、第三方登录、密码登录,突出登录功能,弱化注册过程。
在手机模拟器中登陆一直出现“相同图片点击”的验证过程,并且一段时间内尝试发送手机验证码的次数不能超过3-4次,将会提示发送太频繁。
爬取与注册限制:
基本使用:查看用户信息,关注用户,观看热点视频,点赞、评论视频,转发视频
请求内容基本结构:抖音APP的包结构名为com.ss.android.ugc.aweme,在请求中一般被放在User-Agent中;在APP请求的URL信息中包含了大量的设备信息,通过param的方式附加在URL后。
基本url请求 包含 p1-dy.byteimg 其中可以从p1到p9,用于传输图片,分配 /large/ /img/ /obj/ ,还有p3.pstatp等,v1-dy 等用于传输视频信息,一般在ixigua.com后缀上
国外访问 tiktokv.com
每一个链接中包含签名信息
常见Use-Agent: "com.ss.android.ugc.aweme/380 (Linux; U; Android 8.0.0; zh_CN_#Hans; MHA-AL00; Build/HUAWEIMHA-AL00; Cronet/58.0.2991.0)"
常见的设备信息参数 common_params = {
"iid": self.device_info['iid'],
"idfa": self.device_info['idfa'],
"vid": self.device_info['vid'],
"device_id": self.device_info['device_id'],
"openudid": self.device_info['openudid'],
"device_type": self.device_info['device_type'],
"os_version": self.device_info['os_version'],
"os_api": self.device_info['os_api'],
"screen_width": self.device_info['screen_width'],
"device_platform": self.device_info['device_platform'],
"version_code": CONFIG['APPINFO']['version_code'],
"channel": CONFIG['APPINFO']['channel'],
"app_name": CONFIG['APPINFO']['app_name'],
"build_number": CONFIG['APPINFO']['build_number'],
"app_version": CONFIG['APPINFO']['app_version'],
"aid": CONFIG['APPINFO']['aid'],
"ac": "WIFI",
"pass-region": "1", # new
# "js_sdk_version": "1.3.0.1"
}
常用接口链接
hot_energy_url = 'https://api.amemv.com/aweme/v1/hotsearch/positive_energy/billboard/'
hot_trend_url = 'https://api.amemv.com/aweme/v1/category/list/'
topic2video_url = 'https://api.amemv.com/aweme/v1/challenge/aweme/'
https://aweme.snssdk.com/aweme/v1/user/ # 用户详细信息
https://aweme.snssdk.com/aweme/v1/user/following/list/ # 关注列表
https://aweme.snssdk.com/aweme/v1/user/follower/list/ # 粉丝列表
https://aweme.snssdk.com/aweme/v1/aweme/post/ # 用户发布的视频
https://aweme.snssdk.com/aweme/v1/aweme/favorite/ # 用户喜欢的视频
https://aweme.snssdk.com/aweme/v1/aweme/detail/ # 视频详细信息
https://aweme.snssdk.com/aweme/v1/comment/list/ # 视频评论信息
https://aweme.snssdk.com/aweme/v1/music/detail/ # 音乐原声的详细信息
https://aweme.snssdk.com/aweme/v1/music/aweme/ # 音乐原声的视频列表
https://aweme.snssdk.com/aweme/v1/hot/search/list/ # 热搜榜
https://aweme.snssdk.com/aweme/v1/hotsearch/aweme/billboard/ # 视频榜(固定20条)
https://aweme.snssdk.com/aweme/v1/hotsearch/music/billboard/ # 音乐榜(固定30条)
https://aweme.snssdk.com/aweme/v2/user/recommend/ # 推荐用户列表(需要登录)
//抖音随机刷新视频列表
url = "https://aweme.snssdk.com/aweme/v1/search/item/?keyword=漫画&offset=10&count=10&source=video_search&is_pull_refresh=1&hot_search=0&ts=1546931874&js_sdk_version=&app_type=normal&openudid=8cec4b81deae6417&version_name=4.0.0&device_type=OPPOR11&ssmix=a&iid=57005283726&os_api=19&mcc_mnc=46007&device_id=59343989226&resolution=720*1280&device_brand=OPPO &aid=1128&manifest_version_code=400&app_name=aweme&_rticket=1546931874668&os_version=4.4.2&device_platform=android&version_code=400&update_version_code=4002&ac=wifi&dpi=240&uuid=863064010113316&language=zh&channel=aweGW"
headers = {
"Host": "aweme.snssdk.com",
"Connection": "keep-alive",
"Cookie": "install_id=57005283726; ttreq=1$4a0dbe45de94b2c261ba4470caadb235daaeba62; odin_tt=4a4e27b35ee49fea4b87c0bf97cc6045521eb2cb1a6eba2bd57a992e322ce1fe144690bbd3f5b070d4e64fdb4022a3b3; sid_guard=7f0b613c53151e8f663d5667aa2ab4a8%7C1546931191%7C5184000%7CSat%2C+09-Mar-2019+07%3A06%3A31+GMT; uid_tt=ba8a9bf01162a3fe45ecee17a222ac70; sid_tt=7f0b613c53151e8f663d5667aa2ab4a8; sessionid=7f0b613c53151e8f663d5667aa2ab4a8",
"Accept-Encoding": "gzip",
"X-SS-REQ-TICKET": "1546931874666",
"X-Tt-Token": "007f0b613c53151e8f663d5667aa2ab4a83581edb01c9fc144a35eb8deee9efdf03906d2746df2a2fc862d2c264ae23dfd36",
"sdk-version": "1",
"X-SS-TC": "0",
"User-Agent": "com.ss.android.ugc.aweme/400 (Linux; U; Android 4.4.2; zh_CN; OPPO R11; Build/NMF26X; Cronet/58.0.2991.0)",
"X-Gorgon": "01815c6f0a7f59ff5db3810469ab03ed9145722c3a62c70571",
"X-Khronos": "1546931874",
"X-Pods": "a1bf8bdca715069f27f9ab3662c19ccec595b790",
"Content-Length": "0"
}
headers_video = {
"Range": "bytes=0-163840",
"Vpwp-Type": "preloader",
# "Vpwp-Raw-Key": "v0200f840000bf5svk8ckqbibu1vt8jg_h264_540p",
"Vpwp-Flag": "0",
"Accept-Encoding": "identity",
"Host": "aweme.snssdk.com",
# "Connection": "Keep-Alive",
"User-Agent": "okhttp/3.10.0.1"
}
视频
视频链接主要包含以下:v1-dy.ixigua.com,v3-dy.ixigua.com,v6-dy.ixigua.com,v9-dy.ixigua.com,大部分视频链接包含expires的参数,用于表示过期时间,一般url有效期是一个小时
加密
每一个查看的链接上包含,一些加密信息,通过签名参数: as, mas, ts, cp等加密算法与协议
其他信息
APP通过定期的向ib-hl.snssdk.com发送/service/2/app_log/的POST请求,实现向服务器发送本机相关的一些信息
APP向restapi.amap.com请求地理信息
一般URL中传递了retry_type=no_retry的内容都属于上传本地设置,状态等信息到服务器上。
通过向p3-dy.byteimg.com,去获取抖音的对应规格的图片信息 /aweme/300x400/17aba000e40f0f37b5ae3.jpeg,此时User-Agent 为com.ss.android.ugc.aweme/620 (Linux; U; Android 5.1.1; zh_CN; SM-G955F; Build/JLS36C; Cronet/58.0.2991.0)