fix(truthsocial): 发送类似浏览器的头部,以修复来自 Cloudflare 的 HTTP 403 错误
□ 总结
真相社会.py ' 只发出授权 ' 标题。 在前面的Cloudflare
真实社会 com 拒绝技能的默认用户代理,所以每个真实社会
搜索返回 HTTP 403,无论无记名符号是否有效。
这是已经为 Reddit 在 # 199 中修复过的相同的错误 ("fix(reddit):使用类似浏览器头来从urlib中修复HTTP 403"). 事实 社会从来没有得到同样的待遇。
□ 环境
- 发动机v3.18.4
- Windows 11, Python 3.12.10 (英语).
- " TRUTHSOCIAL-TOKEN " 套件,有效,从浏览器DevTools上重新取出
□再现.
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
1. 默认技能 用户代理 - > 403, HTML 挑战页面,而非 JSON
卷曲 - s - o / dev/null - w '%{http code}\n'
-H"授权:持枪者$TRUTHSOCIAL TOKEN"
-H"用户代理:最后30天-技能-3.0(助理技能)"?
"https:// truthsocial.com/api/v2/search?q=健康%20 policy&type=status&limit=3".
-- > 403
2. 相同的符号,浏览器用户代理 - > 200个真实状态
卷起 - s - o / dev/null - w “ http code n” --compressed
-H"授权:持枪者$TRUTHSOCIAL TOKEN"
-H"接受:应用程序/json,文本/平面, /"?
-H "接受语:en-US,en;q=0.9"=
-H "参考:https://realsocial.com/"\?
-H"用户-代理:Mozilla/ 5.0(Windows NT 10.0;Win64;x64;rv:153.0) Gecko/201001Firefox/153.0".
"https:// truthsocial.com/api/v2/search?q=健康%20 policy&type=status&limit=3".
-- > 200个
两通电话都一样 只有信头不同。
□ 根源
`书写/lib/ truthsocial.py:90'
``` ZZ
响应=http.request(
"GET",我们
页: 1
超时=30,
(中文(简体) ).http.request() ' 默认用户-代理人 ' 为最后30天-技能-3.0(助理技能)' (scripts/lib/http.py:37',通过setdefault'在http.py:552'适用)。 ZZ1ZZ
403号
scripts/lib/http.py:742'已经为此定义了BROWSER USER AGENT'
状态,以及“get text()”将其用于无键 Reddit路径。 真理社会
打电话的人只是不选择加入。
□为什么它看起来像一个标志性的问题
真实社会.py:108 ' 将403至真实社会准入被拒绝'(Cloudflare)',
`医生 ' 报告源是配置的,因为有符号。 所以说
用户看到一个不返回的正确配置的源,以及自然
结尾是一个过期的符号。 现存的403个分支都表明
已知但归结于Cloudflare机器人政策,而不是技能本身的UA.
□ 建议的固定
响应=http.request(
"GET",我们
标题QQ
"授权":f"Bearer {token}",",
"用户代理":http.BROWSER USER AGENT,
"接受":"申请/json,正文/正文,*/*".
"接受-语言":"在美国,en;q=0.9",
"参考":"https://referencesocial.com/",.
{\fn华文楷体\fs16\1cHE0E0E0}
超时=30,
(中文(简体) ).□ 核查
通过应用补丁,通过引擎模块而不是卷曲:
. . . . . . .内容来源: mvanhorn/last30days-skill