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

pan*_*roy 1 python twitter python-requests

我想在不使用 twitter 的官方 API 的情况下下载 twitter 视频。因此,当我在 chrome 中打开 icognito 和 chrome 开发工具并请求任何像“ https://twitter.com/KTHopkins/status/1248140219490209792 ”这样的视频时,我看到 twitter 请求两个重要的标题来为视频提供服务 1.'授权' 2。 'x-客人-令牌'

我似乎无法获得这些令牌是从哪里生成的?下面是我发送的 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)
Run Code Online (Sandbox Code Playgroud)

所以帮我获取这两个令牌。

int*_*ryx 6

此github 存储库包含一个可下载 Twitter 视频的Python 脚本。您可以查看源代码以了解具体操作方法。

您需要做的高级工作是:

  1. 获取不记名令牌(您转到的 Twitter 链接的 html 链接了一个名为main.some random number.js 的文件。在该 javascript 文件中是不记名令牌。
  2. 获取不记名令牌并使用不记名令牌作为授权标头调用https://api.twitter.com/1.1/guest/activate.json

卷曲'https://api.twitter.com/1.1/guest/activate.json'-X POST -H'授权:承载AAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA'

  1. 这应该返回包含有效访客令牌的 json。
  2. 使用不记名令牌和访客令牌,您可以像未经身份验证的用户一样发出请求。要下载视频,您需要找到组成视频的 mp4 和 m4s 文件列表(以您想要的分辨率),然后下载它们并将它们重新组成 mp4 文件。正如我提到的,链接的 github 项目拥有所有这些的源代码。如果您想了解详细信息,请看那里!


小智 5

你可以x-guest-token通过

curl -skL https://twitter.com/ -H 'User-Agent: Firefox' --compressed | grep -o 'gt=[0-9]*' | sed s.gt=..
Run Code Online (Sandbox Code Playgroud)

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