2

好的,这就是我想要做的,我想通过 Youtube 手动发送一条消息,使用 javascript。我试图找到在 Youtube API 中发送消息的最后一行代码,然后自己能够执行该代码。

我不想只输入

inbox.sendMessage();

进入 JavaScript 控制台。

以下是我目前所知道的:

处理消息的外部 js 文件:http: //s.ytimg.com/yts/jsbin/www-inbox-vflCOzV-o.js

开始发送消息的函数是

inbox.sendMessage();

当 this 被调用时,一个应用于变量 m.va 的函数被调用。该函数有 2 个重要部分: 收集消息输入值的部分:

var b=H("compose_message").value;

(H是一个基本上相当于document.getElementById的函数)

第二个重要部分是函数发送编译信息时:

W(this,a,"send_message",h)

上述函数编译 a 中的信息(主题、消息、附件等)并通过 .push 将它们发送到引用为 this.st 的数组中(调用 this.stpush(f),f是编译的信息)。

以下是上述函数调用中信息的排列方式:

a.o = H("user_ext_ids").value;
a.p = H("compose_to").value;
a.V = this.a; (global variable unknown to me)
a.U = H("field_reference_video").value;
a.k = H("compose_subject").value;
a.e = H("compose_message").value;

函数 W 将上面的内容编译成一个新变量: f 像这样:

f.to_user_external_ids = H("user_ext_ids").value;
f.to_users = H("compose_to").value;
f.in_reply_to = this.a; (global variable unknown to me)
f.video_id = H("field_reference_video").value;
f.subject = H("compose_subject").value;
f.message_text = H("compose_message").value;

一旦函数 W 如上所述将信息编译为 f ,它就会将其推送到数组的末尾,我假设它是某种动作队列,或者是与其他动作一起发送的信息包。

这是推送信息的代码:

a.t.push({type:c,request:f});

这些是上述代码行的参考:

a = this.s; (Originally equalled this, when W was called by the first function, but is was changed to this at the beginning of W)
c = "send_message"; (I am guessing this is the part telling the script that the action is sending the message)
f - this is the compiled information that I mapped out above.

我设法找到了 this.st 的设置,但我被困在了这个范围之外。

this.s=new pb(a);

变量 s 设置为此函数。函数 pb(a) 可以通过 Ctrl-F'ing 找到:

function pb(a)

与我在这里引用的大多数函数和变量一样。

在 pb(a) 的范围内,变量 this.t 被初始化:

this.t=[];

我还发现在同一个函数中 this.s=new pb(a); 发生时,this.s 涉及另一个函数,并且它是唯一一次在整个脚本中引用“this.s”(小 s,不是大写字母),除了 a=as; 这是它被引用的函数:

var c=R(R(R(R(R(R(R(R(R(R(this.s,"accept_message",this.v,this),"accept_messages",this.v,this),"block_user",this.v,this),"delete_message",this.v,this),"delete_messages",this.v,this),"display_messages",this.W,this),"ignore_message",this.v,this),"ignore_messages",this.v,this),"mark_as_spam",this.v,this),"send_message",this.Y,this);

这是我所能得到的,现在我完全被难住了。任何帮助将不胜感激,我需要能够到达实际发送消息的最后一行代码,并且没有引用其他任何内容,因此我可以手动发送消息,JavaScript 独立于该脚本。


问题:你能帮我找到发送消息的最后一行代码,以便我可以手动发送消息,JavaScript 独立于这个 js 脚本。

4

1 回答 1

0

您在问一个关于对 YouTube 网络界面使用的 JavaScript 代码进行逆向工程以将其用于非预期目的的问题。

有一种使用 YouTube 数据 API 以编程方式发送消息的受支持方式:https ://developers.google.com/youtube/2.0/developers_guide_protocol_messages

请不要尝试使用非官方机制发送消息。这可能是不可能的,如果可能的话,它可能会在未来的某个时候意外中断。

于 2012-12-28T16:56:02.053 回答