Git Product home page Git Product logo

Comments (8)

y-young avatar y-young commented on June 12, 2024 1

再帮我测试一下 1.2 Latest web API 能不能用吧,理论上也是可以的

这算是个 bug,所以 Issue 我先开着,等正式修复了再关

from nazurin.

kumazu avatar kumazu commented on June 12, 2024 1

1.2 Latest web API 也可以用。(未测试 NSFW 推文)

from nazurin.

y-young avatar y-young commented on June 12, 2024

X_FIX_LINK 用于接受 Fix Twitter Link 服务的链接,即遇到这些域,可以视为 twitter.com 继续处理。也可以在程序中预置这些域,推荐参考 https://github.com/jonjomckay/fritter/blob/master/android/app/src/main/AndroidManifest.xml 内给出的域列表。

因为现在只是匹配 twitter.com,所以 fxtwitter.com 这类以 twitter.com 结尾的域名应该都能被匹配并当作 Twitter 处理。如果只是希望当作 Twitter 链接处理但继续使用官方 API 的话我考虑一下提供配置域名的方案,不过可能需要修改 Python 文件而不是配置环境变量。

NITTER_INST 用于配置 Nitter 实例的域。当 NITTER_INST 未配置或为空 List 时,应当仅向 twitter.com 发出请求。当 NITTER_INST 已配置时,应当先请求 twitter.com,如失败再依次向 NITTER_INST 中的实例请求,直到成功或没有可用的实例。

Nitter 实例貌似并没有提供 API 接口,所以不能当作 Twitter API 的备用选项,其自身也没有类似的接口,无法获取到跟官方 API 相似的推文详细数据,即使要支持也得当作新的图源处理。

Twitter (X) 仍对接口调用有限制,旧版本 Nazurin 会报错 Response Error: 0 Attempt to decode JSON with unexpected mimetype:,新版本 Nazurin 会报错 Twitter web API error:
一些第三方客户端已经引入了绕过 Twitter (X) 接口限制的方法,如 TheHCJ/Quackerj-fbriere/squawker ,可以作为参考。

Nitter 和这类客户端应该依然使用的是官方 API,所以理论上无法绕过接口限制,但调用 API 的方法可以作为参考。不过我这边 Twitter 的功能依然正常,不知道你那边是什么问题,最好还是具体看一下原因。报错 Twitter web API error: 之后有详细的信息吗?

from nazurin.

kumazu avatar kumazu commented on June 12, 2024

报错 Twitter web API error: 之后有详细的信息吗?

Telegram 消息为 Twitter web API error:

后台 Log

INFO     - nazurin.bot:123 - update:********* - Collection update: site=twitter, match=('**********************',)
INFO     - nazurin.sites.twitter.api.web:114 - update:********* - Fetching tweet ********************** from web API
ERROR    - nazurin.sites.twitter.api.web:146 - update:********* - Web API Error: 404,

冒号后的内容似乎没有在 Telegram 侧提示。这里提示 404,但推文确实存在。


Nitter 实例貌似并没有提供 API 接口,所以不能当作 Twitter API 的备用选项。

加入 Nitter 是为了 Fallback 保障可用性。但 Nitter 的确未提供 REST API (在 Roadmap 但已三年未解决),可能不太方便加入。是我考虑不周,请见谅。


Nitter 和这类客户端应该依然使用的是官方 API,所以理论上无法绕过接口限制,但调用 API 的方法可以作为参考。不过我这边 Twitter 的功能依然正常,不知道你那边是什么问题,最好还是具体看一下原因。

在两种网络环境下打开同一个链接 twitter.com/[handle]/status/[id]

Note

  1. Fritter 是一个无需登录的第三方 Twitter 客户端。在 Twitter 解除限流后,该应用还是经常无法使用。下文的 Fritter 均是 v3.0.0-beta9 (09dd537)。
  2. Fritter 经常无法使用后,出现了多个活跃维护的 Fork ,QuackerSquawker 是这些 Fork 的代表。下文的 Squawker 均是 v3.2.0 (af31480)。

环境1 (称之为“脏IP环境”)

  • 完整浏览器: 可以打开,有时无法加载回复。
  • Nazurin: Web API Error: 404
  • Fritter: Unable to load this tweet,附带有额外信息
    {
      "statusCode": 404,
      "reasonPhrase": "Not Found",
      "content": ""
    }
  • Squawker: 正常加载(含回复)。

环境2 (称之为“干净IP环境”)

  • 完整浏览器: 可以打开。
  • Nazurin: 正常工作。
  • Fritter: 正常加载。
  • Squawker: 正常加载。

由于“脏IP环境”中,Fritter 和 Nazurin 出现了相同的错误 404,而 Fritter 的 Fork 可以正常加载。

我并不了解编程,所以我在这里提出一个浅薄的观点: Fritter 和 Nazurin 调用 Twitter API 的方式会受到 Twitter 的风控,而 Squawker 调用 Twitter API 的方式一定程度上缓解(绕过)了这种风控。


非常感谢您对这个 issue 的关注。

from nazurin.

y-young avatar y-young commented on June 12, 2024

由于“脏IP环境”中,Fritter 和 Nazurin 出现了相同的错误 404,而 Fritter 的 Fork 可以正常加载。

是所有的推文都会出现问题还是特定推文才会?如果是特定推文的话,该推文有没有某种特殊性,例如 NSFW、作者限制可见性?

方便的话可否提供具体例子?如果不方便公开的话可以使用 PGP 加密,将 Recipient 设置为我 (yyoung)。

之后我会看一下 Squawker 调用 Twitter API 的方式,但如果没有错误复现方法的话恐怕难以测试。

from nazurin.

kumazu avatar kumazu commented on June 12, 2024

是所有的推文都会出现问题还是特定推文才会?如果是特定推文的话,该推文有没有某种特殊性,例如 NSFW、作者限制可见性?

所有推文。

以 40原 老师的推文为例: https://twitter.com/40hara/status/1283175216773046272

  • Telegram 侧:
    image
  • 服务器侧:
INFO     - nazurin.middleware:25 - update:********* - Message ****: https://twitter.com/40hara/status/1283175216773046272
INFO     - nazurin.bot:123 - update:********* - Collection update: site=twitter, match=('1283175216773046272',)
INFO     - nazurin.sites.twitter.api.web:114 - update:********* - Fetching tweet 1283175216773046272 from web API
INFO     - aiohttp.web_log:206 -  - 127.0.0.1 "POST /*********:******************************* HTTP/1.1" 200 152 "-" "-"
ERROR    - nazurin.sites.twitter.api.web:146 - update:********* - Web API Error: 404,

from nazurin.

y-young avatar y-young commented on June 12, 2024

我大概知道原因了,应该是你没有设置你自己的 auth token,目前的 Twitter API 和 Authorization Token 需要登录才能使用,而 Fritter 使用的 Authorization Token 不需要登录(但是这样无法浏览敏感推文)。我在 fix/twitter-api 分支放了新的代码,你可以试一下,如果还是不行的话代码里还有几个可切换的选项(94行和 130行),可以试试。

from nazurin.

kumazu avatar kumazu commented on June 12, 2024

我在 fix/twitter-api 分支放了新的代码,你可以试一下,如果还是不行的话代码里还有几个可切换的选项(94行和 130行),可以试试。

1.3 Fritter 后的 API 地址可以使用,非常感谢 o((>ω< ))o 。

希望在 文档的 Twitter 章节 (Src) 添加相应说明。

from nazurin.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.