x的authorization获取 登录和请求接口的限制

几年前的项目专区推特还是很容易的,去年五月份马斯克收购x之后,就需要登录,接口访问也强制称为了http2.0的协议了,最近在返回数据压缩那块也做了处理。

抓紧记录自己的,怕忘记之前怎么搞得了。每次都需要重头整体。

首先分析header中的authorization。

headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/114.0',
            'Accept': '*/*',
            'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
            'Accept-Encoding': 'gzip, deflate, br',
            'Referer': 'https://twitter.com/search?q=chian&src=typed_query&f=live',
            'content-type': 'application/json',
            'x-client-uuid': '5b19a1c4-0722-4679-8f1d-0167822d6ba0',
            'x-twitter-auth-type': 'OAuth2Session',
            'x-csrf-token': '4180cf4e9619752d7e5932a0830cef3fab78acca4a8867dcbc096e095e62a9d73ff3406ac6acb8bc5960c417a96ecc36162340f1ce986724052bf4bd561a534177f6cfcaa5a43831a97577d8df907f0e',
            'x-twitter-client-language': 'zh-cn',
            'x-twitter-active-user': 'yes',
            'DNT': '1',
            'Sec-Fetch-Dest': 'empty',
            'Sec-Fetch-Mode': 'cors',
            'Sec-Fetch-Site': 'same-origin',
            'authorization': 'Bearer AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA',
            'Connection': 'keep-alive',
            'Cookie': '登录后cookie',
        }

多次请求接口会发现每次登录 x-csrf-token 没啥变化,authorization是变化的。原来还需要x-guest-token 这个字段现在没有了。通过查找authorization关键词能够定位相关参数,追踪能够看到调用逻辑,最终authorization字段就在这个代码中。

https://abs.twimg.com/responsive-web/client-web/main.d2feccda.js

可以通过正则表达式获取相关参数。将其放入头文件中就可以获取到登录后的数据了,python用requests 是无法请求成功,应为Twitter接口启用http2.0,python可以用httpx启动http2。

import ssl
import httpx
ssl_context = httpx.create_ssl_context()

ssl_context.options = ssl.OP_NO_SSLv3  # Enable TLS 1.0 back  OP_NO_TLSv1
client = httpx.Client(http2=True,proxies=proxies,verify=ssl_context)#verify=False
req = client.get(url, headers=h, params=params, timeout=3)

最近碰到返回的数据无法格式化成json的情况发现是因为返回的数据是压缩的代码需要修改请求头中的压缩方式。再有就是解析起来太麻烦,json层级异常的多,字段什么意思也不好判断。

如有问题 可以联系

微信号:liu_yue_yang


 

  • 20
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值