Mit WebBrowser Javascript ausführen.

mQN

Grünschnabel
Hallo Leute,

ich bin im Moment dran meinen YouTube-Freunde-Add-Bot neu umzuschreiben. Ich mache das ganze um Erfahrung zu sammeln und natürlich um einen gewissen Traffik auf meinem Channel zu erzeugen. YouTube hat vor kurzem sein Design umgestellt.

Neues Design:
http://www.youtube.com/user/doohrecords

Altes Design:
http://www.youtube.com/user/majesticdnb

Im neuen Design ist es praktisch (ohne selbst was zu coden) nicht möglich weitere "Freundesanfragen" zu verschicken (Es fehlt der Button). Mit der YouTube Toolbox, ein kostspieliges Programm, ist es immernoch möglich Freundesanfragen an Personen zu schicken die bereits mit dem neuen Design arbeiten. (Das Programm ist nicht von YouTube selbst) Das lässt darauf schließen das man auch ohne Button, auf einem Channel oder YouTube selbst, eine Anfrage an YouTube schicken kann, die dort auslöst das man einen Freundesanfrage verschickt.

Beim alten Design verschickt man so eine Freundesanfrage:

XML:
<a onclick="add_friend('yrCwW7YRvmztK08tpPYQ4A'); return false;" href="#">Als Freund hinzufügen</a>

Das umzusetzten ist natürlich kein Problem. Ich suche mir per RegEx die aktuelle ID raus und benutze diesen Befehl um hinzuzufügen:

C#:
Webbrowser.navigate("Javascript:add_Friend('+uid+'); return false;");

Dieser Button ist beim neuen Design jedoch garnicht vorhanden. Es wird auch keine Javascript Datei importiert, bestimmte Parameter die später gebraucht werden fehlen in der HTML (window.uid/window.boxes siehe unten).

Die funktion add_friend lässt sich beim alten Design in dieser .js finden:
http://s.ytimg.com/yt/js/channel_legacy_all-vfl7YTvf3.js

Hier alles relevante aus der channel_legacy_all-vfl7YTvf3.js:
Code:
// Diese Variablen werden in der HTML deklariert:
window.uid = *kommt immer drauf an welcher channel ist jedoch bekannt*
window.boxes = {"user_playlist_navigator" : {'name' : "user_playlist_navigator",'x_position' : 1,'y_position' : -2,'palette' : "default"},"user_profile" : {'name' : "user_profile",'x_position' : 0,'y_position' : 0,'palette' : "default"},"user_hubber_links" : {'name' : "user_hubber_links",'x_position' : 1,'y_position' : 17,'palette' : "default"},"user_subscribers" : {'name' : "user_subscribers",'x_position' : 0,'y_position' : 39,'palette' : "default"},"user_comments" : {'name' : "user_comments",'x_position' : 1,'y_position' : 48,'palette' : "default"}};


// Wichtiges aus der http://s.ytimg.com/yt/js/channel_legacy_all-vfl7YTvf3.js
function(){
var ChannelBackend=function(uid){this.aq_=new AjaxQueue('/profile_ajax?action_ajax=1&uid='+uid+'&new=1',window.ajax_session_info);};

ChannelBackend.prototype.call_box_method=function(box_info,params,method,callback,opt_logging){
var request=box_info;
request.method=method;
request.params=params;
var unpack_callback=function(response){callback(response.data)}; // Versteh ich nicht.
var logging='box_method='+method+'&box_name='+box_info.name+(opt_logging||'');
this.aq_.quick_send(request,'box_method',unpack_callback,logging);
};

ChannelBackend.singleton_=null;

ChannelBackend.get=function(){
if(!ChannelBackend.singleton_){
ChannelBackend.singleton_=new ChannelBackend(window.uid);
}
return ChannelBackend.singleton_;
};

function get_box_info(box_id){
return window.boxes[box_id];
}

function add_friend(uid){
var box_info=get_box_info('user_profile');
var backend=ChannelBackend.get();
var callback=function(json_resp){ // Woher kommt json_resp?
if(json_resp.requested){
display_success_alert('user_profile-messages',json_resp.message);
_showdiv('aProfileInvitedFriend');
_hidediv('aProfileAddFriend');
}else if(json_resp.success){
display_success_alert('user_profile-messages',json_resp.message);
_showdiv('aProfileRemoveFriend');
_hidediv('aProfileAddFriend');
}else{
display_error_alert('user_profile-messages',json_resp.message||json_resp.errors);
}
};
params={'uid':uid};
backend.call_box_method(box_info,params,'add_friend',callback);
}

Irgendwo in diesem Javascript Code versteckt sich also diese Anfrage an YouTube das man einen Freundesanfrage losschicken will. Ich schätze mal es ist diese Zeile:

XML:
this.aq_.quick_send(request,'box_method',unpack_callback,logging);

Wo sich diese AjaxQueue Klasse befindet und was genau mit den Parametern dort geschieht ist mir rätselhaft. Ich will im prinzip alles was in diesem Code geschieht vorspielen also auf einer Seite per onClick anwenden wo die .js nicht importiert wurde. Wie stell ich das an?

Grüße,
Nick
 
Zuletzt bearbeitet von einem Moderator: