JavaScript Return Value im Quelltext

12/30/2015 01:53 Kraizy​#1
Gibt es eine Möglichkeit den Wert einer JavaScript Funktion im Seitenquelltext anzeigen zu lassen? Die Funktion generiert einen Wert, diesen gebe ich im Browser per document.write(var); aus. Wenn ich jedoch auf Seitenquelltext anzeigen gehe, sehe ich dort lediglich die JavaScript Funktion, den generierten Wert jedoch nicht.
12/30/2015 02:02 Devsome#2
Wenn du im Quelltext meinst, dass man diese sehen soll versuche es mal so.

Code:
<div id="Result">

</div>

<script>
	var wert = "<b>Dein Wort</b>";
	document.getElementById('Result').innerHTML += wert;
</script>
12/30/2015 02:25 Kraizy​#3
Hm also entweder bin ich zu blöd oder es funktioniert einfach nicht. Der Wert wird weiterhin nicht im Quelltext angezeigt..
12/30/2015 02:31 False#4
Quote:
Originally Posted by Kraizy​ View Post
Hm also entweder bin ich zu blöd oder es funktioniert einfach nicht. Der Wert wird weiterhin nicht im Quelltext angezeigt..
Wenn ich es richtig verstehe willst du die Value im Quelltext sehen die im Javascript gesetzt wird ?Wenn ja ist es logischerweise nicht möglich, da beim Quelltext angucken die "Roh" Datei angezeigt wird und das Javascript noch nicht ausgeführt wurde.
12/30/2015 02:32 Kraizy​#5
Gibt es da keine andere Möglichkeit?

Um mein Vorhaben mal etwas genauer zu erkären: Ich arbeite zurzeit an einem Bot für eine gewisse Seite. Dort wird beim Login eine JavaScript Datei ausgeführt, die einen Wert generiert. Dieser wird dann im POST Request - neben ID & PW - mitübergeben. Anfangs hatte ich eigentlich vor, die Funktion in .NET nachzubauen, was auch gut funktioniert hat - bis ich dann gemerkt habe, dass sich die JavaScript Funktion bei jedem neuen Loginversuch geringfügig ändert. Sprich die Reihenfolge, wie der Wert generiert wird ändert sich jedesmal zufällig und somit ist z.B. der unterste Teil der Funktion bei einem neuen Login z.B. ganz oben, der erste Teil dann wiederum z.B. irgendwo in der Mitte.

Deswegen habe ich mir überlegt, einfach den JavaScript Link zu holen, ausführen zu lassen und dann aus dem Quelltext den Wert welcher returned wird auszulesen (per HttpWebRequest). Bloß ist nun mein Problem wie gesagt, dass der Http Response lediglich die Funktion selbst als Quelltext liefert, anstatt den Wert.

Wie funktioniert das denn in der Chrome Dev Console?
Hab mir nun mal zum Test ne .html Datei erstellt und geöffnet. Angezeigt wird im Browser nun der generierte Wert. Wenn ich nun auf Rechtsklick -> Seitenquelltext anzeigen gehe, sehe ich lediglich den Inhalt der Datei - die JavaScript Funktion selbst. Sonst nichts. Somit auch keinen generierten Wert.
Wenn ich nun aber mit F12 die Dev Console in Chrome öffne und dann auf Elements gehe, dann wird mir der komplette Inhalt angezeigt - die JavaScript Funktion, sowie im Body der generierte Wert:
[Only registered and activated users can see links. Click Here To Register...]
12/30/2015 02:41 False#6
Quote:
Originally Posted by Kraizy​ View Post
Gibt es da keine andere Möglichkeit?

Um mein Vorhaben mal etwas genauer zu erkären: Ich arbeite zurzeit an einem Bot für eine gewisse Seite. Dort wird beim Login eine JavaScript Datei ausgeführt, die einen Wert generiert. Dieser wird dann im POST Request - neben ID & PW - mitübergeben. Anfangs hatte ich eigentlich vor, die Funktion in .NET nachzubauen, was auch gut funktioniert hat - bis ich dann gemerkt habe, dass sich die JavaScript Funktion bei jedem neuen Loginversuch geringfügig ändert. Sprich die Reihenfolge, wie der Wert generiert wird ändert sich jedesmal zufällig und somit ist z.B. der unterste Teil der Funktion bei einem neuen Login z.B. ganz oben, der erste Teil dann wiederum z.B. irgendwo in der Mitte.

Deswegen habe ich mir überlegt, einfach den JavaScript Link zu holen, ausführen zu lassen und dann aus dem Quelltext den Wert welcher returned wird auszulesen (per HttpWebRequest). Bloß ist nun mein Problem wie gesagt, dass der Http Response lediglich die Funktion selbst als Quelltext liefert, anstatt den Wert.
Den längeren Text habe ich nicht zu 100% verstanden...Wenn du jedoch den Javascript teil hast dann bau dir eine Function (Serverseitig) die das Javascript ausführt und den Result zurück gibt.
Sollte mit NodeJs gehen (Weiß ich aber nicht zu 100%).

€:Wenn ich es richtig gesehen habe geht es auch mit PHP selber :)
12/30/2015 02:45 Kraizy​#7
Quote:
Originally Posted by .ƒaℓsє. View Post
Den längeren Text habe ich nicht zu 100% verstanden...Wenn du jedoch den Javascript teil hast dann bau dir eine Function (Serverseitig) die das Javascript ausführt und den Result zurück gibt.
Sollte mit NodeJs gehen (Weiß ich aber nicht zu 100%).

€:Wenn ich es richtig gesehen habe geht es auch mit PHP selber :)
Hab noch nen Bild zu meinem Beitrag dazu gepostet.

Wie genau würde das mit PHP funktionieren?
12/30/2015 02:47 False#8
Quote:
Originally Posted by Kraizy​ View Post
Hab noch nen Bild zu meinem Beitrag dazu gepostet.

Wie genau würde das mit PHP funktionieren?
Wie genau es in PHP geht müsste ich auch gucken ;)In der Dev Tools wird die AKTUELLE Seite angezeigt und somit auch das ausgeführte Javascript, evtl gibt es in .net ja auch eine Methode die "fertige" Seite zu bekommen.

€: Gib mir mal den Javascript teil dann teste ich mal php :)€²: Schau dir mal V8Js an :)
12/30/2015 02:59 Kraizy​#9
Bin jetz leider am Handy, hab die JS Datei grad nicht zur Hand. Wobei es aber doch glaub ich sowieso kein Unterschied macht, obs nun die richtige function ist oder ne Hello World function spielt keine Rolle. Mir geht es ja grade einfach nur darum, den Wert, der von JS generiert bzw returned wird, so auszugeben, dass man die irgendwo auslesen kann per HttpRequest.
12/30/2015 03:07 False#10
Doch eigentlich fand ich das Javascript grade interessant..Normal solltest du das ganze doch in PHP nachbauen können :D ?
12/30/2015 04:38 .SkyneT.#11
Quote:
Originally Posted by Kraizy​ View Post
Gibt es da keine andere Möglichkeit?

Um mein Vorhaben mal etwas genauer zu erkären: Ich arbeite zurzeit an einem Bot für eine gewisse Seite. Dort wird beim Login eine JavaScript Datei ausgeführt, die einen Wert generiert. [...]
Du könntest auch einfach den ganzen Loginvorgang mit irgendeinem Headless-Browser durchführen und dir danach die Cookies holen und diese weiterverwenden. Dann brauchst du dir überhaupt keine Gedanken zu dem ganzen Javascript machen.

Diese Lösung ist natürlich nur geeignet, wenn Performance beim Login selber unwichtig ist.
12/30/2015 12:16 Shadow992#12
Quote:
Originally Posted by Kraizy​ View Post
Gibt es da keine andere Möglichkeit?

Um mein Vorhaben mal etwas genauer zu erkären: Ich arbeite zurzeit an einem Bot für eine gewisse Seite. Dort wird beim Login eine JavaScript Datei ausgeführt, die einen Wert generiert. Dieser wird dann im POST Request - neben ID & PW - mitübergeben. Anfangs hatte ich eigentlich vor, die Funktion in .NET nachzubauen, was auch gut funktioniert hat - bis ich dann gemerkt habe, dass sich die JavaScript Funktion bei jedem neuen Loginversuch geringfügig ändert. Sprich die Reihenfolge, wie der Wert generiert wird ändert sich jedesmal zufällig und somit ist z.B. der unterste Teil der Funktion bei einem neuen Login z.B. ganz oben, der erste Teil dann wiederum z.B. irgendwo in der Mitte.

Deswegen habe ich mir überlegt, einfach den JavaScript Link zu holen, ausführen zu lassen und dann aus dem Quelltext den Wert welcher returned wird auszulesen (per HttpWebRequest). Bloß ist nun mein Problem wie gesagt, dass der Http Response lediglich die Funktion selbst als Quelltext liefert, anstatt den Wert.

Wie funktioniert das denn in der Chrome Dev Console?
Hab mir nun mal zum Test ne .html Datei erstellt und geöffnet. Angezeigt wird im Browser nun der generierte Wert. Wenn ich nun auf Rechtsklick -> Seitenquelltext anzeigen gehe, sehe ich lediglich den Inhalt der Datei - die JavaScript Funktion selbst. Sonst nichts. Somit auch keinen generierten Wert.
Wenn ich nun aber mit F12 die Dev Console in Chrome öffne und dann auf Elements gehe, dann wird mir der komplette Inhalt angezeigt - die JavaScript Funktion, sowie im Body der generierte Wert:
[Only registered and activated users can see links. Click Here To Register...]
Nö, keine Chance mit "einfachen" Methoden.
Siehe dazu auch:
Quote:
Originally Posted by .ƒaℓsє. View Post
Wenn ich es richtig verstehe willst du die Value im Quelltext sehen die im Javascript gesetzt wird ?Wenn ja ist es logischerweise nicht möglich, da beim Quelltext angucken die "Roh" Datei angezeigt wird und das Javascript noch nicht ausgeführt wurde.
Eine mögliche Lösung wäre:

Quote:
Originally Posted by .SkyneT. View Post
Du könntest auch einfach den ganzen Loginvorgang mit irgendeinem Headless-Browser durchführen und dir danach die Cookies holen und diese weiterverwenden. Dann brauchst du dir überhaupt keine Gedanken zu dem ganzen Javascript machen.

Diese Lösung ist natürlich nur geeignet, wenn Performance beim Login selber unwichtig ist.
Wobei ich aber Lösung #2 vorziehen würde:
Bau dir einen javascript Teilinterpreter oder hol dir einen Open-Source Javascript Interpreter und hau den drauf, bei ersterem lernst du mehr, zweiteres geht deutlich schneller (vom Aufwand her nicht von der Ausführung).

Edit:
Z.B. Den da: [Only registered and activated users can see links. Click Here To Register...] oder eben das genannte V8js.
12/30/2015 12:52 False#13
Quote:
Originally Posted by .SkyneT. View Post
Du könntest auch einfach den ganzen Loginvorgang mit irgendeinem Headless-Browser durchführen und dir danach die Cookies holen und diese weiterverwenden. Dann brauchst du dir überhaupt keine Gedanken zu dem ganzen Javascript machen.

Diese Lösung ist natürlich nur geeignet, wenn Performance beim Login selber unwichtig ist.
Wenn ich mich recht erinnere hat kraizy schon mehrere Programme geschrieben wo ein Login verfahren von nöten ist, somit hatte sie auch Umgang mit Cookies.Ich gehe davon aus das das Javascript von nöten ist, sonst hätte kraizy schon cookies verwendet.
12/30/2015 19:12 vinnce#14
Quote:
Originally Posted by .ƒaℓsє. View Post
Wenn ich mich recht erinnere hat kraizy schon mehrere Programme geschrieben wo ein Login verfahren von nöten ist, somit hatte sie auch Umgang mit Cookies.Ich gehe davon aus das das Javascript von nöten ist, sonst hätte kraizy schon cookies verwendet.
Javascript kann (mal von node.js abgesehen) unter keinen Umständen
irgendeinen Einfluss auf den Loginprozess haben. Die Javascript Datei aus
welchem der OP einen Wert auslesen möchte ist im Endeffekt auch nichts
anderes als ein Wert der aus dem Backend generiert wird, um beim
gewünschten Request diesen generierten Wert mitzugeben. Die zufällig
generierte Javascript Funktion die der OP hier erwähnt hat ist nichts anderes als
eine Methode um die Lesbarkeit des Wertes zu erschweren.

Quote:
Bau dir einen javascript Teilinterpreter oder hol dir einen Open-Source Javascript Interpreter und hau den drauf, bei ersterem lernst du mehr, zweiteres geht deutlich schneller (vom Aufwand her nicht von der Ausführung).
Abgesehen davon das kein einfacherer Weg daran vorbeiführt, wäre dies von
Anfang an wohl die Methode mit dem geringeren Arbeitsaufwand gewesen
als die JS Funktion von vorneherein komplett nach zuschreiben :rolleyes:
12/30/2015 21:03 False#15
Quote:
Originally Posted by vinnce View Post
Javascript kann (mal von node.js abgesehen) unter keinen Umständen
irgendeinen Einfluss auf den Loginprozess haben. Die Javascript Datei aus
welchem der OP einen Wert auslesen möchte ist im Endeffekt auch nichts
anderes als ein Wert der aus dem Backend generiert wird, um beim
gewünschten Request diesen generierten Wert mitzugeben. Die zufällig
generierte Javascript Funktion die der OP hier erwähnt hat ist nichts anderes als
eine Methode um die Lesbarkeit des Wertes zu erschweren.
Auf irgendeiner weiße ist die Value ja scheinbar wichtig beim Login sonst würde der TE ja einfach Cookies nutzen.
Sei es das die Value im Php dann mit einer Function geprüft wird (z.b die Value generiert durch Uhrzeit o.ä.).
Daher wollte ich den Code auch gerne sehen.