Java Script Übersetzung

Fragen zum Thema HTML, JavaScript, PHP
Uzaku
Beiträge: 55
Registriert: So Aug 09, 2009 1:47 pm

Java Script Übersetzung

Beitrag von Uzaku » Fr Dez 25, 2009 6:44 pm

Hi,
Ich brauche eure Hilfe.
Ich schreibe einen Bot für ein Browsergame. Das ganze ist recht einfach, da das Browsergame auf HTML basiert. Dummerweise bin ich jetzt an eine stelle gestoßen, wo ganz am ende der Seite ein Javascript ausgeführt wird. Dieses Java Script verändert den wert der Variable mcp, die beim Seitenladen immer noch 1 ist.
Ich müsste aber in meinem Bot wissen, welchen wert das ganze hat, nachdem das Script drübergelaufen ist.
Vielleicht kann mir das ja jemand sagen. Hier das Script:

Code: Alles auswählen

/*
Page performance optimiser analyser
*/
var vf = 0;
var bh = 0;
var q = 0;
		
var docEl = (
    typeof document.compatMode != "undefined" && 
    document.compatMode        != "BackCompat"
)? "documentElement" : "body";

function init_stat() {
	if(document.layers) document.captureEvents(Event.MOUSEMOVE);
	document.onmousemove =	dpl_m_po;
}

function dpl_m_po(e) {
	var u    =  e? e.pageX : window.event.x;
	var s    =  e? e.pageY : window.event.y;
	
	if((s - bh) < 0)  q += 1;
	if((u - vf) < 0)  q += 5;
	if((u - vf) > 0)  q += 7;
	if((s - bh) > 0)  q += 3;
	
	if (document.all && !document.captureEvents) {
		u    += document[docEl].scrollLeft;
		s    += document[docEl].scrollTop;
	}
    for(var i in document.forms){
		for(var h in document.forms[i].elements){
			var name = document.forms[i].elements[h].name;
			if(name == 'mcp'){ document.forms[i].elements[h].value = q; break;}
		}
	}	
	vf = u; bh = s;
	if (document.layers) routeEvent(e);
}

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Java Script Übersetzung

Beitrag von Xin » Sa Dez 26, 2009 10:16 am

Könntest Du das Problem nochmal beschreiben!? Ich kapiere das nicht wirklich, was Du da tun willst.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Uzaku
Beiträge: 55
Registriert: So Aug 09, 2009 1:47 pm

Re: Java Script Übersetzung

Beitrag von Uzaku » Sa Dez 26, 2009 11:11 am

Also ich schreibe einen Bot für das Browsergame Bitefight, ich benutze C++ und um die Requests zu senden benutze ich libcurl.
Und auf einer seite, die ich leider nicht posten kann, weil man sich dafür einloggen muss, habe ich eine form, die sieht so aus:

Code: Alles auswählen

<form action="robbery.php"  method="POST">
<input type="hidden" name=uja value="77210">
<input type="hidden" name=ujc value="00ceec69eb08237209ddd02afaf97dac">
<input type="hidden" name=ujp value="bfcd2ca254f49c8940b608a6f1c35f32">
<input type="hidden" name="mcp" value="1"><br>
<input type="submit" class=input value="angreifen"></form>
außer mcp sind alle Werte zufällig, aber das ist kein Problem, die kann man ja auslesen.
mcp ist immer 1.
Aber ganz am ende der Seite, findet sich dieser Javascript aufruf:

Code: Alles auswählen

<script language="javascript" src="mcp.js" type="text/javascript"></script>
Das Java script habe ich oben gepostet.
Der Punkt ist jetzt, dass der Wert von mcp verändert wird. Aber nicht in dem Quelltext im Arbeitsspeicher meines Bots.
Ich muss aber den richtigen Wert für mcp wissen, weil ich sonst nicht das richtige POST abschicken kann. Und wenn das Post nicht stimmt gehts nicht weiter.
Ich muss also rausbekommen, wie das Java Script den Wert von mcp ändert.
Ich sehe, dass mcp der Wert q zugewiesen wird im Script. Ich sehe auch, wo q der Wert zugewiesen wird. allerdings macht das für mich keinen Sinn.
Da das was am Ende für mcp rauskommt in aller Regel eine 4-Stellige Zahl ist. Und ich verstehe nicht, wie die da erzeugt wird.
Ich muss die Berechnung, die in dem Java-script gemacht wird irgendwie in meinem Bot in C++ machen.
Aber da ist gleich das nächste Problem. Für mich sieht es so aus, als würde er das irgendwie aus dem Mauskoordinaten errechnen, dummerweise gibt es keine Mauskoordinaten, wenn mein Bot das macht.

Ich muss einfach in meinem Bot irgendwie auf den richtigen Wert für mcp kommen.

Edit: Ich habe hier jetzt einfach mal den gesamten Quellcode der Seite kopiert:

Code: Alles auswählen

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
		<html>
		<head>
				<title>Bitefight - Das kostenlose online Abenteuer. Spiele dein Monster, Vampir oder Werwolf</title>
				<link rel="stylesheet" type="text/css" href="game.css">
				<meta http-equiv="content-type" content="text/html; charset=UTF-8">
		<meta name="generator" content="Gameforge" />
   <meta name="author" content="Gameforge" />
   <meta name="coypright" content="Gameforge" />

   <meta name="language" content="de" />
   <meta name="publisher" content="Gameforge" />
   <meta name="page-type" content="Kommerzielle Organisation" />
   <meta name="page-topic" content="Spiele" />
   <meta name="audience" content="all" />
   <meta name="Expires" content="never" />
   <meta name="keywords" content="rollenspiel, kostenlos, online, fantasy, mmog, browser, games, k�mpfen, web, explorer, monster, rpg, vampir, werwolf, internet" />
   <meta name="description" content="Vampir oder Werwolf? W�hle und stelle dich dem Kampf! Onlinespiel mit tausenden Monstern! Kostenlos anmelden und spielen" />
   <meta name="robots" content="index,follow" />

   <meta name="Revisit" content="After 1 days" />		
				<style type=text/css>
		.advertising *{margin:0 auto;}
		.advertising {text-align:center;}
		</style>		
		
		
		<body bgcolor="#220202" onload="init_stat()">
	<div id="container">
					<img src="img/header.jpg" width="1035" height="294" style="position:absolute; left:-37px; top:0px;" alt="Bite Fight" />
						  <table width="100%" border="0" cellspacing="0" cellpadding="0">
			<tr>
						
			  <td style="width:20px; background-image:url(img/border.gif); background-repeat:repeat-y; background-position:right;">&nbsp;</td>
			  <td style="width:156px; background-image:url(img/sidebg.jpg); background-repeat:repeat-y; background-position:left; vertical-align:top;">

				<div id="menu">
				<a href="uebersicht.php" target="_top">Übersicht</a>
<a href="msg.php" target="_top">Nachrichten</a>
<a href="palace.php" target="_top">Versteck</a>
<a href="city.php" target="_top">Stadt</a>
<a href="robbery.php" target="_top">Jagd</a><br>
<a href="shoppremium.php?goin=1" target="_top" class="newmessage">VooDoo Shop</a>
<a href="ally.php" target="_top">Clan</a>

<a href="buddylist.php" target="_top">Buddyliste</a>
<a href="notizen.php" target="_top">Notizblock</a>
<a href="einstellungen.php" target="_top">Einstellungen</a><br>
<a href="http://board.bitefight.de" target="_blank">Forum</a>
<a href="highscore.php" target="_top">Highscore</a>
<a href="suche.php" target="_top">Suche</a>
<a href="faq.php" target="_top">Hilfe</a>
<a href="logout.php" target="_top">Logout</a><br>
<center style="font-size: 0.7em;">25.12.2009 16:22h</center>				</div>

				<img src="img/menudivider.gif" width="156" height="17" alt="" />
							  </td>
						  
			  <td style="width:16px; background-image:url(img/border.gif); background-repeat:repeat-y;">&nbsp;</td>
			  <td style="background-image:url(img/darkstone.jpg); vertical-align:top; text-align:center;">
						  <img src="img/content_top.jpg" width="784" height="38" alt="" />
				<div id="content" style="position:relative; top:-30px; width:720px; margin-left:auto; margin-right:auto;">
						<script language="javascript" src="mcp.js" type="text/javascript"></script><div style="position:absolute;left:-500px;top:-500px;">
<form action="robbery.php"  method="POST"><select name="mjz" size="1" class="input">
<option value="1"></option><option value="2"></option><option value="3"></option><option value="4"></option><option value="5"></option><option value="6"></option><option value="7"></option><option value="8"></option><option value="9"></option><option value="10"></option><option value="11"></option><option value="12"></option></select>

<input type="submit" class=input value="Los!">
</form>

<form action="robbery.php"  method="POST"><select name="ujo" size="1" class="input">
<option value="1"></option><option value="2"></option></select>
<input type="submit" class=input value="Los!">
</form>

<form action="robbery.php"  method="POST"><input class="input" type="text" name="ujn" size="30" value="" MAXLENGTH="30">
<input type="submit" class=input value="Los!">
</form>


</div>
<h1>Jagdlust Ryu1991</h1><p>Gold: 118 <img src="img/res2.gif" alt="Gold" align="absmiddle" border="0"></p><p style="text-align:justify">Deine Suche war erfolgreich. Du kannst das aufgespürte Opfer nun angreifen!</p>

<center><br><br><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr><td align="center" valign="top">

<table>
<tr><td align="center" valign="top">
<img src="img/logo/1/tmp/m-2-1-4-5-1-2-1.png" border=0 width=168></td></tr></table><p align="center" valign="center"></td>
<td width="10">&nbsp;</td><td valign="top">
<table cellpadding="2" cellspacing="2" border="0" width="100%">
<tr><td class="tdh" colspan="2" align="center">Vampir Blackfire992</td></tr>
	<tr><td class="tdn" colspan="2"><span class="fontsmall2">wurde von einem Ältesten verwandelt</span></td></tr>
<tr><td class="tdn">Gesamtbeute:</td><td class="tdn">11.357 l Blut</td></tr>
<tr><td colspan="2">&nbsp;</td></tr>

<tr><td class="tdh" colspan="2" align="center">Charakterbeschreibung <a class="copyright" href="profilbad.php?id=83883&typ=p&ts=1261754544&nc=34b7d50">(melden)</a></td></tr>

<tr><td class="tdn" colspan="2" style="text-align:justify"><div style="overflow:hidden; width:100%;" align="center">-- keine vorhanden --</div></td></tr>

<tr><td colspan="2" align="center">&nbsp;</td></tr>
<tr><td colspan="2" class="tdh" align="center">Die Charakterwerte von Blackfire992</td></tr>
<tr><td class="tdn">Stufe:</td><td class="tdn">8</td></tr><tr><td class="tdn">Kraft:</td><td class="tdn"><img src="img/b1.gif" alt="" ><img src="img/b2.gif" alt="" height="12" width="188.888888889"><img src="img/b3.gif" alt="" > <span class="fontsmall">(17)</span></td></tr><tr><td class="tdn">Verteidigung:</td><td class="tdn"><img src="img/b1.gif" alt="" ><img src="img/b2.gif" alt="" height="12" width="177.777777778"><img src="img/b3.gif" alt="" > <span class="fontsmall">(16)</span></td></tr><tr><td class="tdn">Geschicklichkeit:</td><td class="tdn"><img src="img/b1.gif" alt="" ><img src="img/b2.gif" alt="" height="12" width="177.777777778"><img src="img/b3.gif" alt="" > <span class="fontsmall">(16)</span></td></tr><tr><td class="tdn">Ausdauer:</td><td class="tdn"><img src="img/b1.gif" alt="" ><img src="img/b2.gif" alt="" height="12" width="188.888888889"><img src="img/b3.gif" alt="" > <span class="fontsmall">(17)</span></td></tr><tr><td class="tdn">Charisma:</td><td class="tdn"><img src="img/b1.gif" alt="" ><img src="img/b2.gif" alt="" height="12" width="200"><img src="img/b3.gif" alt="" > <span class="fontsmall">(18)</span></td></tr><tr><td class="tdn">Erfahrung:</td><td class="tdn"><img src="img/b1.gif" alt="" ><img src="img/b2.gif" alt="" height="12" width="161"><img src="img/b4.gif" alt="" height="12" width="39"><img src="img/b5.gif" alt="" ><span class="fontsmall"> (262 / 325)</span></td></tr><tr><td align="center"><form action="robbery.php"  method="POST"><input type="hidden" name=uja value="83883">

<input type="hidden" name=ujc value="ec3b5d189568f43c4ce2a5f610b9dc9e">
<input type="hidden" name=ujp value="f6994a0bfa42c4b5dd2429d23cd2d5f6">
<input type="hidden" name="mcp" value="1"><br><input type="submit" class=input value="angreifen"></form></td>
<td align="center"><form action="robbery.php"  method="POST"><input type="hidden" name="3656bc8fd3792e94b75072ba96b512be" value="1"><input type="hidden" name="mcp" value="1">	<br><input type="submit" name="b2" class=input value="erneut suchen"></form></td></tr></table>
</td></tr></table>

</center> 
		</div>
		</td>
			  <td style="width:22px; background-image:url(img/border.gif); background-repeat:repeat-y; background-position:left;">&nbsp;</td>
			</tr>
		  </table>

		<div>
		<table width="100%" border="0" cellspacing="0" cellpadding="0">
		<tr>
			<td>
									<img src="img/footer.jpg" width="998" height="92" style="display:block;" alt="" />
							</td>
		</tr>
		</table>
					<div id="copyright" ><a href="changelog.php" class="copyright">v0.42</a> (C) by <a href="http://www.gameforge.de" target="_blank" class="copyright">Gameforge</a>. Alle Rechte vorbehalten. <a href="http://agb.gameforge.de/index.php?lang=de&art=impress&special=&&f_text=C00C0C&f_text_hover=FF0000&f_text_h=220202&f_text_hr=220202&f_text_hrbg=220202&f_text_hrborder=C00C0C&f_text_font=tahoma&f_bg=220202" target="_blank" class="copyright">Impressum</a>, <a href="http://agb.gameforge.de/index.php?lang=de&art=tac&special=&&f_text=C00C0C&f_text_hover=FF0000&f_text_h=220202&f_text_hr=220202&f_text_hrbg=220202&f_text_hrborder=C00C0C&f_text_font=tahoma&f_bg=220202" target="_blank" class="copyright">AGB</a>, <a href="http://agb.gameforge.de/index.php?lang=de&art=datenschutz&special=&&f_text=C00C0C&f_text_hover=FF0000&f_text_h=220202&f_text_hr=220202&f_text_hrbg=220202&f_text_hrborder=C00C0C&f_text_font=tahoma&f_bg=220202" target="_blank" class="copyright">Datenschutzerklärung</a>, <a href="http://board.bitefight.de/index.php?page=Board&boardID=296&s" target="_blank" class="copyright">Regeln</a></div>

					</div>
	</div>
	</body>
</html>
<script language="javascript" src="mcp.js" type="text/javascript"></script>

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Java Script Übersetzung

Beitrag von cloidnerux » Sa Dez 26, 2009 11:43 am

Also, mcp wird am ENDE deiner HTMl-Datei verändert, was bedeutet das du mcp nicht wärend des Aufrufes auslesen kannst.
Jezt kannst du aber auf DHTML zurückgreifen und richtest in deinem Bodytag einen Timer ein:

Code: Alles auswählen

<body onload="window.setTimeout('JavaScriptFunktion()', 1000)">
Diese Funktion wird jetzt jede Sekunde ausgeführt.
In diesem Script änderst du jezt du jezt die Value von mcp:

Code: Alles auswählen

function JavaScriptFunktion()
{
   document.getElementById('mcp').value = neuerMcpWert;
}
Manko: das Script wird erst nach 1 Sekunde ausgeführt.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Uzaku
Beiträge: 55
Registriert: So Aug 09, 2009 1:47 pm

Re: Java Script Übersetzung

Beitrag von Uzaku » Sa Dez 26, 2009 1:27 pm

Danke für die Antwort, aber verzeih mir meine Unwissenheit, ich habe noch Fragen.
Wie nutze ich das, zum einen Bekomme ich ja den Quellcode der Seite, wie soll ich das dann vom Server ausführen lassen?
Kann ich dann selber nen neuen MCP wert festlegen, und der stimmt dann?
Und wie kann ich überhaupt ne Javascriptfunktion von meinem Bot ausführen lassen, wenn das ginge könnte ich ja auch einfach das schon existierende Script ausführen.

Wie setze ich deinen Vorschlag jetzt genau um?

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Java Script Übersetzung

Beitrag von cloidnerux » Sa Dez 26, 2009 1:49 pm

Wie nutze ich das, zum einen Bekomme ich ja den Quellcode der Seite, wie soll ich das dann vom Server ausführen lassen?
Es ist normales Javascript, daher wird es im Browser des Nutzers ausgeführt.
Kann ich dann selber nen neuen MCP wert festlegen, und der stimmt dann?
In meinem Beispiel, verändere ich den Wert des inputs "mcp", also das was du in "value" eingetragen hast, also 1. Den neuen wert den du einträgst ist dann egal.
So kannst dudort auch den wert von mcp eintragen. Ob er dann stimmt, hängt dann davon ab ob das script am Ende der Seite richtig ist.
Und wie kann ich überhaupt ne Javascriptfunktion von meinem Bot ausführen lassen, wenn das ginge könnte ich ja auch einfach das schon existierende Script ausführen.
Javascript kann nur im Browser des nutzers ausgeführt werden, sonst köntest du ja z.B nicht die Mausosition bestimmen, etc.
Der sinn hinter meiner Funktion it nur, im Input das "value"-Attribut zu Updaten, damit es dann beim senden zu deiner PHP-Datei den richtigen Wert hat.
Wie setze ich deinen Vorschlag jetzt genau um?
So wie ich es ezt verstanden habe, sendet der Nutzer die Daten an ein PHP-Script, was die Daten verarbeitet und deinem Bot zugänglich macht. Aber, bisher hattest du immer für mcp den Wert 1. Jezt wurde mcp geuppdatet, sodass du den "richtigen" Wert an die PHP-Datei gesendet bekommst.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Uzaku
Beiträge: 55
Registriert: So Aug 09, 2009 1:47 pm

Re: Java Script Übersetzung

Beitrag von Uzaku » Sa Dez 26, 2009 2:41 pm

So wie ich es ezt verstanden habe, sendet der Nutzer die Daten an ein PHP-Script, was die Daten verarbeitet und deinem Bot zugänglich macht. Aber, bisher hattest du immer für mcp den Wert 1. Jezt wurde mcp geuppdatet, sodass du den "richtigen" Wert an die PHP-Datei gesendet bekommst.
Das ist der Fehler.
Der springende Punkt ist: der Bot ist der Nutzer. Es wird kein Browser benutzt, der Bot generiert die requests selbst.
Und wenn ich nun /GET robery.php sende dann bekomme ich den Seitenquellcode zurück, der in meinem letzten Post rein-editiert ist.
Und das ist alles was ich zur Verfügung habe.
erst habe ich dann, wenn der Bot jagen sollte ein /POST uja=77210&ujc=00ceec69eb08237209ddd02afaf97dac&ujp=bfcd2ca254f49c8940b608a6f1c35f32&mcp=1 gesendet. Ich habe dann ne Weile gebraucht, um zu kapieren, warum mcp nicht stimmt, obwohl ich doch die 1 selber im Quellcode sehe. Ich brauche jetzt für mein Post den richtigen Wert für mcp, und ich kann soweit ich weiß mit meinem Bot kein Java-Script ausführen. Also muss ich irgendwie wissen welchen wert der Bot für mcp senden musst. Und wie du selber richtig erkannt hast, wird der Bot kaum eine Maus bewegen.

Benutzeravatar
stampuhh
Beiträge: 211
Registriert: Sa Nov 07, 2009 4:39 pm
Wohnort: Paderborn

Re: Java Script Übersetzung

Beitrag von stampuhh » Sa Dez 26, 2009 4:25 pm

schneide doch mal den Datenverkehr mit wenn du im Browser das Game spielst. Dann weißt du WANN WAS gesendet wird...so würde ich auf jeden Fall vorgehen ;)

gruß stampuhh
NachDenkSeiten.de

Uzaku
Beiträge: 55
Registriert: So Aug 09, 2009 1:47 pm

Re: Java Script Übersetzung

Beitrag von Uzaku » Sa Dez 26, 2009 4:33 pm

Das wird zufällig generiert. Das heißt mitschneiden was der Browser macht bringt nichts.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Java Script Übersetzung

Beitrag von Xin » Sa Dez 26, 2009 5:21 pm

Das ganze mit ein paar Kommentaren von mir:

Code: Alles auswählen

/*
Page performance optimiser analyser
*/
var vf = 0;
var bh = 0;
var q = 0;
      
var docEl = (
    typeof document.compatMode != "undefined" && 
    document.compatMode        != "BackCompat"
)? "documentElement" : "body";

// Wenn die Mouse bewegt wird, soll dpl_m_po gerufen werden.

function init_stat() {
   if(document.layers) document.captureEvents(Event.MOUSEMOVE);
   document.onmousemove =   dpl_m_po;
}

function dpl_m_po(e) {
 // Sieht mir so aus, als wollte er die Position des MouseZeigers in u/s zu bringen.
 // q ist ursprünglich mal 0, genauso bh und vf. Alle drei Variablen sind global und werden
 // hier geändert.
 // bh wird weiter unten auf den Wert s gesetzt, vh auf u. Also die alten x und y Koordinaten der Maus.
 // s-bh ist entsprechend die Änderung in y-Richtung, u-vf in x Richtung.
 
   var u    =  e? e.pageX : window.event.x;
   var s    =  e? e.pageY : window.event.y;
 
 // Das hier sollte selbsterklärend sein. Maus nach unten? Maus nach rechts? Maus nach links? Maus nach oben?
 // Entsprechend wird q aufaddiert. 
 
   if((s - bh) < 0)  q += 1;
   if((u - vf) < 0)  q += 5;
   if((u - vf) > 0)  q += 7;
   if((s - bh) > 0)  q += 3;

// Hier wird noch auf u und s addiert, was gescrollt wurde?
   
   if (document.all && !document.captureEvents) {
      u    += document[docEl].scrollLeft;
      s    += document[docEl].scrollTop;
   }
   
   // Anscheinend wird hier das Formular gesucht, dass ein Element 'mcp' besitzt und sein Wert
   // auf das ständig steigende q gesetzt.
    for(var i in document.forms){
      for(var h in document.forms[i].elements){
         var name = document.forms[i].elements[h].name;
         if(name == 'mcp'){ document.forms[i].elements[h].value = q; break;}
      }
   }   
   // Hier werden die alten Koordinaten gesetzt.
   vf = u; bh = s;
   
   // Was routeEvent macht, weiß ich nicht? Das Formular abschicken? In dem Fall kann man sehr gut nachvollziehen,
   // wie Du die Maus auf der Website bewegst.
   if (document.layers) routeEvent(e);
}
Kurz: Wenn mcp zu klein ist, wurde die Maus wohl nicht bewegt. Wurde die Maus nicht bewegt und ein Spielzug abgeschickt, war wohl ein Bot am Werk?
Könnte das so hinkommen?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten