fix(truthsocial): 发送类似浏览器的头部,以修复来自 Cloudflare 的 HTTP 403 错误

作者: Bigmoose2000创建于 2026年7月29日更新于 2026年9月12日

□ 总结

真相社会.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.

□ 建议的固定

6zz
响应=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