Python使用Python下载twitter视频(不使用twitter api)



我想下载推特视频,而不使用推特的官方API。因此,当我在chrome中打开icognito和chrome开发工具并请求任何类似"https://twitter.com/KTHopkins/status/1248140219490209792"我看到twitter请求两个重要的头来服务器视频1."授权"2."x-guest-token">

我似乎无法理解这些代币是从哪里生成的?亲爱的是我发送的python请求。

import requests
headers = {
'authority': 'api.twitter.com',
'dnt': '1',
'x-twitter-client-language': 'en',
# 'x-csrf-token': '6089ceeab3324243e7b952679b2b7851',
'authorization': 'Bearer AAAAAAAAAAAAAAAAAAAAANk3DgEAAAAAB0pZx4xjgXBOoalj%2FRbagurxD2M%3DG8634UVlBud8LrLG4nGo7FpN2RCO2xul5BuPKHuejUAV14O0KG',
'user-agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
'sec-fetch-dest': 'empty',
'x-guest-token': '1248286947669237760',
'x-twitter-active-user': 'yes',
'accept': '*/*',
'origin': 'https://twitter.com',
'sec-fetch-site': 'same-site',
'sec-fetch-mode': 'cors',
'accept-language': 'en-US,en;q=0.9,hi;q=0.8',
# 'cookie': 'personalization_id="v1_tWyK8Fn5ofSPjSAEKsnyrw=="; guest_id=v1%3A158644503604220835; ct0=6089ceeab3324243e7b952679b2b7851; _twitter_sess=BAh7CSIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNo%250ASGFzaHsABjoKQHVzZWR7ADoPY3JlYXRlZF9hdGwrCDI2fl9xAToMY3NyZl9p%250AZCIlNmM2YjZiYTU4MzdhY2FkNDQwZjcwMGU1NDliNzEzN2Y6B2lkIiViOWUx%250AYzM5MDk3ZTQ0YzMyZDRkMGU3YTdkM2FlMGY2YQ%253D%253D--223c07ac4708a9bec30dec1e0e9c3d52544b310c; _ga=GA1.2.162154316.1586445033; _gid=GA1.2.1445748635.1586445033; gt=1248286947669237760',
}
response = requests.get('https://api.twitter.com/2/timeline/conversation/1248293309950255107.json')
print(response.text)

帮我搞定那两个代币。

这个github repo包含一个可以下载twitter视频的python脚本。你可以查看来源,看看具体如何做到这一点。

您需要做的高级操作是:

  1. 获取承载令牌(您要访问的twitter链接的html链接一个名为main.some random numbers.js的文件。在该javascript文件中是承载令牌
  2. 拿着持有者的代币打电话https://api.twitter.com/1.1/guest/activate.json使用承载令牌作为授权标头

curl'https://api.twitter.com/1.1/guest/activate.json"-X POST-H"授权:承载器AAAAAAAAAAAAAAAAAA NRILgAAAAAAnWIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA">

  1. 这应该返回包含有效来宾令牌的json
  2. 有了承载令牌和访客令牌,您就可以像未经身份验证的用户一样进行请求。要下载视频,你需要找到组成视频的mp4和m4s文件的列表(以你想要的分辨率(,然后下载它们并将它们重建为mp4文件。正如我提到的,链接的github项目拥有所有这些的来源。如果你想要细节,看看那里

您可以通过获得新的x-guest-token

curl -skL https://twitter.com/ -H 'User-Agent: Firefox' --compressed | grep -o 'gt=[0-9]*' | sed s.gt=..

i。e.通过下载网站内容并解析其JavaScript。注意:User-Agent需要设置为Twitter认为可以理解JavaScript的内容。否则,他们会发送一个不包含令牌的旧版网站。

最新更新