抖音爬虫从0到1

您所在的位置:网站首页 抖音抓取用户信息贩卖违法吗知乎 抖音爬虫从0到1

抖音爬虫从0到1

2024-07-04 23:36| 来源: 网络整理| 查看: 265

相关文章:

抖音 x-gorgon 03 免费生成接口 抖音6.3.0版本

抖音爬虫从0到1-第一弹:环境配置

抖音爬虫从0到1-第二弹:获取抖音用户数据

前言

前面介绍了分析了抖音请求header中的X-gorgon的获取方法,同时在分析获取抖音用户数据的时候,我们发现爬取抖音用户的数据需要使用用户的user_id和sec_user_id,我们通过抓包工具获取用户的id以及sec_user_id,然后通过用户的关注列表和follow列表获取更多的用户的user_id和sec_user_id,下面我将介绍一下如何根据user_id和sec_user_id来获取抖音用户的详细数据。

一、分析请求用户数据的api 1. 用户数据抓包

首先在搭建好的环境中通过Fiddle抓取用户数据包。 用户数据抓包

数据包

2. 用户数据包分析 2.1. 请求信息分析

请求头

请求头字段 字段 字段值 请求方法 GET 请求的api GET后面的 请求的协议 api后面的,系http1.1 请求的目的主机域名 aweme-eagle.snssdk.com 连接信息 keep-alive Cookie 你自己的cookies Accept-Encoding 编码信息 gzip X-SS-QUERIES 请求的query token 你自己的token sdk版本 1 User-Agent 用户代理 X-Khronos 咱也不知道是啥,但是本质上就是个时间戳 X-Gorgon 加密验证的部分,获取方法如前文 X-Pods 咱也不知道是啥,但是貌似没有用 请求的api分析

api 我们知道了请求的api以及请求头里面都包含了哪些信息,我们就可以通过手动构造对应的请求参数来爬取用户的数据了。我已经在前面的文章获取到了1W+ 的用户的uid以及sec_user_id的数据了,然后我们就可以通过这些数据来爬取用户的详细数据(数据可以在微信公众号里面获取)。

2.2. 响应信息分析

响应数据0 响应数据1 响应数据2 响应数据3

二、获取用户数据 1.构造请求api

在文章抖音爬虫从0到1-第二弹:获取抖音用户数据 我们已经介绍了爬取抖音关注列表的api及其构造方法,其实获取用户详细信息和获取用户的关注列表的api基本一致,主要都是需要我们自行填充用户的user_id以及用户的sec_user_id还有一大堆的时间戳信息,其他的信息都是不变的。下面我们构造获取用户详细信息的api 对应的api构造函数

def construct_api(user_id, _rticket, ts, sec_user_id): """ api 构造函数 :param user_id: 用户的id :param _rticket: 时间戳 :param ts: 时间戳 :param sec_user_id: 用户的加密的id :return: api """ api = "https://aweme-eagle.snssdk.com" \ "/aweme/v1/user/?" \ "user_id={}" \ "&retry_type=no_retry" \ "&iid=1846815477740845" \ "&device_id=47012747444" \ "&ac=wifi&channel=wandoujia_aweme1" \ "&aid=1128&app_name=aweme" \ "&version_code=630" \ "&version_name=6.3.0" \ "&device_platform=android" \ "&ssmix=a&device_type=HUAWEI+NXT-AL10" \ "&device_brand=HUAWEI&language=zh" \ "&os_api=26&os_version=8.0.0" \ "&openudid=b202a24eb8c1538a" \ "&manifest_version_code=630" \ "&resolution=1080*1812" \ "&dpi=480&update_version_code=6302" \ "&_rticket={}" \ "&js_sdk_version=1.16.3.5" \ "&ts={}" \ "&sec_user_id={}" \ "".format(user_id, _rticket, ts, sec_user_id) return api 2.构造请求头

上文我们已经分析了请求头,请求头的构造也比较方便,大部分内容都是固定的,需要我们填充的主要还是几个时间戳以及对应的X-Gorgon,其中X-Gorgon的构造方法比较复杂,在文章“抖音 x-gorgon 03 免费生成接口 抖音6.3.0版本”中我已经提供了一个生成X-Gorgon的接口,但是要注意填入正确的Cookie和Token你才能获得可用的X-Gorgon,否则你的Gorgon就是不可用的。下图是请求头里面的主要信息: 请求头 下面我写了一个构造请求头的函数:

def construct_header(user_id, sec_user_id, cookie, query, token, user_agent, _rticket, ts): """ 构造请求头,需要传入的参数如下 :param user_id: 要爬取的用户的uid :param sec_user_id: 要爬取的用户的加密的id :param cookie: cookie :param query: 请求的query :param token: 你的token :param user_agent: 请求的user_agent :param _rticket: 时间戳(毫秒级) :param ts: 时间戳(秒级) :return: 构造好的请求头:headers """ api = construct_api(user_id, _rticket, ts, sec_user_id) headers = { "Host": "aweme-eagle.snssdk.com", "Connection": "keep-alive", "Cookie": cookie, "Accept-Encoding": "gzip", "X-SS-QUERIES": query, "X-SS-REQ-TICKET": _rticket, "X-Tt-Token": token, "sdk-version": "1", "User-Agent": user_agent } x_gorgon = get_gorgon(api, cookie, token, query) headers["X-Khronos"] = ts headers["X-Gorgon"] = x_gorgon print(headers) return headers def get_gorgon(url, cookies, token, query): """ 获取headers里面的X-Gorgon :param url: 请求的api :param cookies: 你的cookie :param token: 你的token :param query: 你的query :return: gorgon """ # 发起请求获取X-Gorgon headers = { "dou-url": url, # 填写对应的请求的api "dou-cookies": cookies, # 填写你的cookies "dou-token": token, # 填写你的token "dou-queries": query # 填写你的请求的queries } gorgon_host = "http://8.131.59.252:8080" res = requests.get(gorgon_host, headers=headers) gorgon = "" if res.status_code == 200: print("请求成功") res_gorgon = json.loads(res.text) if res_gorgon.get("status") == 0: print("成功获取 X-Gorgon") print(res_gorgon.get("X-gorgon")) # 你就可以用来爬数据了 gorgon = res_gorgon.get("X-gorgon") else: print("获取 X-Gorgon 失败") print(res_gorgon.get("reason")) raise ValueError(res_gorgon.get("reason")) else: print("请求发送错误/可能是你的网络错误,也可能是我的错误,但是大概率是你那边的错误") raise ValueError("请求发送错误/可能是你的网络错误,也可能是我的错误,但是大概率是你那边的错误") return gorgon 3. 请求头弄好了我们就可以获取用户数据了 def get_user_detail_info(cookie, query, token, user_agent, user_id, sec_user_id): """ 爬取用户数据 :param cookie: 你自己的cookie :param query: 你自己的query :param token: 你自己的token :param user_agent: 你自己的User-Agent :param user_id: 用户的uid :param sec_user_id: 用户的加密的uid :return: response """ _rticket = str(time.time() * 1000).split(".")[0] ts = str(time.time()).split(".")[0] api = construct_api(user_id, _rticket, ts, sec_user_id) headers = construct_header(user_id, sec_user_id, cookie, query, token, user_agent, _rticket, ts) print(api) req = request.Request(api) for key in headers: req.add_header(key, headers[key]) with request.urlopen(req) as f: data = f.read() return gzip.decompress(data).decode() 4. 解析用户数据

根据上面对响应数据的分析,其对应的响应数据是json格式的,而且数据特别多,分析了一下,我找了一些对我比较有用的数据:

# 用户的抖音号 unique_id=345345345O # 用户的user_id uid=103600654544 # 用户的 sec_user_id sec_uid=MS4wLjABAAAA2_HUlxau0riJ8UBMwyd_bUtA8yzKdWepfg9nUc5wQy0 # 头像地址 avatar_uri=26e880003aefb8cddd496 # 用户的昵称 nickname=成都潮人榜 # 用户的签名 signature=谢谢关注❤ # 用户的出生日期 birthday=1995-01-01 # 用户的国家 country=中国 # 用户的省份 province=四川 # 用户的城市 city=成都 # 用户所在的区域 district=武侯 # 用户的粉丝数 follower_count=929219 # 用户的关注数 following_count=15 # 发布的抖音数量 aweme_count=453 # 发布的动态数量 dongtai_count=480 # 用户点赞的视频数 favoriting_count=322 # 总共被点赞的次数 total_favorited=14900700 5. 下面就可以爬取数据了 if __name__ == '__main__': cookie = "" # 你自己的cookie token = "" # 你自己的token query = "" # 你自己的query user_agent = "" # 你自己的user-agent user_id = 103600654544 sec_user_id = "MS4wLjABAAAA2_HUlxau0riJ8UBMwyd_bUtA8yzKdWepfg9nUc5wQy0" res = get_user_detail_info(cookie,query, token, user_agent, user_id, sec_user_id) print(res) 三、总结 以上就是爬取用户信息的全部内容,完整代码可以关注公众号获取。码字不易,还请点赞关注,有任何问题请留言,或者关注下方微信公众号获取抖音安装包以及Fiddle安装包等。 last but not least

有任何问题,或者想要获取对应的抖音APK和抓包软件或者相关代码,可以关注下方公众号留言,我会及时倾尽所有问您解答 公众号是:kedalongkeai

last and least

如果文章对你有用并且恰好您也手头富裕,可以考虑捐赠一毛钱,我可以升级服务器。 嘻嘻嘻



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3