2

これが私がやりたいことです。javascriptを使用して、Youtubeから手動でメッセージを送信したいと思います。Youtube API でメッセージを送信するコードの最後の行を見つけて、それを自分で実行できるようにしようとしています。

ただ入力したくない

inbox.sendMessage();

JavaScript コンソールに。

これが私が現在知っていることです:

メッセージを処理する外部 js ファイル: http://s.ytimg.com/yts/jsbin/www-inbox-vflCOzV-o.js

メッセージの送信を開始する関数は

inbox.sendMessage();

これが呼び出されると、変数 m.va に適用される関数が呼び出されます。この関数には 2 つの重要な部分があります。 メッセージの入力値を収集する部分:

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

(H は基本的に document.getElementById と同等の関数です)

2 番目の重要な部分は、関数がコンパイルされた情報を送信するときです。

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 で見つけることができます:

function pb(a)

ここで参照したほとんどの関数と変数と同様です。

pb(a) のスコープ内で、変数 this.t が初期化されます。

this.t=[];

また、同じ関数内で this.s=new pb(a); であることもわかりました。this.s が別の関数に関係しており、a=as 以外のスクリプト全体で "this.s" (小文字の s、大文字ではない) が参照されるのはこのときだけです。参照されている関数は次のとおりです。

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 を使用して手動でメッセージを送信できます。


質問:この js スクリプトから独立した JavaScript を使用して手動でメッセージを送信できるように、メッセージが送信されるコードの最後の行を見つけるのを手伝ってもらえますか?

4

1 に答える 1

0

YouTube ウェブ インターフェースで使用される JavaScript コードをリバース エンジニアリングして、意図しない目的で使用することについて質問しています。

YouTube Data API を使用してプログラムでメッセージを送信する方法がサポートされています: https://developers.google.com/youtube/2.0/developers_guide_protocol_messages

非公式のメカニズムを使用してメッセージを送信しようとしないでください。それはおそらく不可能であり、可能であれば、将来のある時点で予期せず壊れる可能性があります。

于 2012-12-28T16:56:02.053 に答える