通过Twitter,使用JavaScript从内部API获取的信息的方法是什么?
首先
在开发扩展功能中,我遇到了获取Twitter API信息的困难,所以我进行了一番调查。从我所查到的信息中,我进行了进一步的研究,尽力弄清详细的操作方法。
请注意
这是截至2023年12月11日验证的内容。如果Twitter以后发生变化,可能无法使用。此外,此文章并非获取任意推文信息,而是获取当前访问页面中的推文信息。获取的信息应与内部API获取的数据等同。
最好不要访问Twitter的内部API。
首先,在使用Twitter的内部API时最好不要进行访问。
因为在Twitter进行API通信所需参数发生变化时,
存在被冻结或暗影封禁的危险,所以除非有特殊理由,最好避免访问。
因此,我们将使用访问的页面上的信息来获取推文等信息。
机制
在Twitter上,我们使用React Props来存储数据。(可能的话)
通过访问这个React Props,可以获取数据。
获取推文的方法
ツイートの元のオブジェクトには、data-testid=”cellInnerDiv”というプロパティがあります。
それゆえ、まず、取得したいツイートのオブジェクトを取得する必要があります。
(ここでは、仮にtweetelementという変数に保存すると想定しています。)
その後、データが保存されている要素を取得するために、次のようなquerySelectorを使用します。
(tweetdataelemは、お好きな変数名に変更してください。)
const tweetdataelem = tweetelement.querySelector("div[role='group'][id]");
现在我们继续,让我们获取React Props。
在这种情况下,看起来可以通过以下代码获取。
const reactPropsName = Object.getOwnPropertyNames(tweetdataelem).filter((n) => n.startsWith("__reactProps$"))[0];
const reactProps = tweetdataelem[reactPropsName];
一旦获取React Props中的推文数据,工作就完成了。
const tweetdata = tweetdataelem.children[1].props.retweetWithCommentLink.state.quotedStatus
您可以将获取到的内容作为字典类型使用,可以获取到书签数量,以及该推文的作者的固定推文等信息。
获取用户信息的方法(个人资料页面)
请获取带有data-testid=”UserName”属性的元素(在这里我们假设变量名为Username)。
然后,请获取与之前相同的ReactProps。
最后,只需获取React Props中的用户数据即可结束。
reactProps.children[1].props.user;
内容与推特数据中的用户所拥有的一样。
結束
这次我写作为备忘录。
就是这样。
信用
(kurejitto shin’yō)
我正在参考以下这个Github存储库进行研究。
https://github.com/Robot-Inventor/shadowban-scanner
另外,我也在参考以下这个页面。
https://zenn.dev/roboin/articles/5744ef1ba48c03#react-props的取得方法
我几乎是参考这两个页面的代码。谢谢。
(如果没有这两个页面,我现在可能还在网上苦苦寻找。)