colinardo
Goto Top

Login bei Dyn.com automatisieren

Der Betreiber des kostenlosen DynDns-Dienstes hat ja bekanntlich seine kostenlosen Accounts mit einer weiteren Beschränkung versehen(Login mindestens alle 30 Tage). Für alle die den Betreiber noch nicht wechseln möchten oder können, hier eine Lösung um den Login zu automatisieren.

back-to-topWICHTIGE INFORMATION: DYN.COM STELLT SEINE KOSTENLOSEN ACCOUNTS AM 7. MAI 2014 EIN ! DAS TOOL WIRD NICHT MEHR AKTUALISIERT!


Benutzt den u.s. AutoIT-Code, und kompiliert das Script.
Wichtiger Hinweis: Das Script ist eine Konsolenvariante und muss deshalb mit der passenden Option kompiliert werden. Wenn Ihr das Script im Editor 'Scite' kompiliert sollte die Option bereits durch die Angaben im Header des Scripts gesetzt sein. Wenn Ihr Aut2Exe benutzt muss in Dialog unten bei "Console?" ein Häkchen gesetzt werden, ansonsten seht ihr beim Ausführen des Scripts keine Konsolenausgaben.

Für alle die kein AutoIT installiert haben bzw. die eine fertige EXE haben wollen ---> Download hier
Der Aufruf erfolgt auf der Kommandozeile mit folgenden selbsterklärenden Parametern:
login.exe [username] [password]
Als Exit-Code gibt das Script bei einem Fehler eine 1 und bei Erfolg eine 0 zurück.

Funktioniert natürlich nur solange "Dyn.com" die Website nicht umstrukuriert. Werde aber bei Rückmeldung von euch den Code gerne aktualisieren
#NoTrayIcon
; -------------ÄNDERUNGEN -------------
; 01.03.2014 Login Status wurde nach dem Einloggen nicht mehr korrekt erkannt wegen Deutsch / Englisch-Anpassung der Seite
; 19.09.2013 Dyn.com Seite hat sich geändert (zusätzliche Form ist hinzugekommen, Prüfung auf die ersten 5 Buchstaben der ID der Form hinzugefügt
;--------------------------------------
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=login.exe
#AutoIt3Wrapper_Change2CUI=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <IE.au3>
if $Cmdline = 2 then
	$username = $Cmdline[1]
	$password = $Cmdline[2]
Else
	ConsoleWrite(@CRLF & "Fehler in Parametern !   --> Info: " & @CRLF & "    login.exe [USERNAME] [PASSWORD]" & @CRLF)  
	Exit 1
EndIf
ConsoleWrite("Login bei Dyn.com..." & @CRLF)  
$objIE = _IECreate("https://de.account.dyn.com/entrance/",0,0,1)  
if $objIE = 0 then
	ConsoleWriteError("Error: Internet-Explorer-Objekt kann nicht erstellt werden!")  
	exit 1
EndIf
$arrForms = _IEFormGetCollection($objIE)
dim $loginForm
if @error <> 0 then
	ConsoleWriteError("Error: Login-Form kann nicht gefunden werden!")  
	quitError()
Else
	for $oForm in $arrForms
		if StringLower(StringLeft($oForm.id,5)) = "login" then  
			$loginForm = $oForm
		endif
	Next

	if $loginForm = "" then  
		ConsoleWriteError("Error: Login Form nicht gefunden!")  
		quitError()
	endif

EndIf

$objUsername = _IEGetObjById($objIE,$loginForm.id & "_username")  
$objPassword = _IEGetObjById($objIE,$loginForm.id & "_password")  
$objSubmitBtn = _IEGetObjById($objIE,$loginForm.id & "_submit")  
if $objUsername = 0 or $objPassword = 0 or $objSubmitBtn = 0 then
	ConsoleWriteError("Error: Mindestens ein benötigtes Steuerelement nicht gefunden!")  
	quitError()
EndIf

if _IEFormElementSetValue($objUsername,$username) = 1 and _IEFormElementSetValue($objPassword,$password) = 1 then
	_IEAction($objSubmitBtn,"Click")  
	if _IELoadWait($objIE) = 1 then
		$links = _IELinkGetCollection($objIE)
		$loginSuccess = false
		for $l in $links
			if StringRegExp($l.innerHTML ,"Log Out|Ausloggen",0) then  
				$loginSuccess = true
				ExitLoop
			Endif
		Next

		if $loginSuccess then
			ConsoleWrite("Logout..." & @CRLF)  
			_IENavigate($objIE,"https://de.account.dyn.com/entrance/?__logout=1",1)  
			_IEQuit($objIE)
			ConsoleWrite("Fertig...")  
			exit 0
		Else
			ConsoleWriteError("Error: Falscher Benutzername oder Kennwort!")  
			quitError()
		EndIf
	Else
		Switch @error
			Case 6
				ConsoleWriteError("Error: Website Lade-Timeout!")  
			Case Else
				ConsoleWriteError("Error: Website Ladefehler / Code: " & @error)  
		EndSwitch
		quitError()
	Endif
Else
	ConsoleWriteError("Error: Benutzername oder Passwort konnten nicht gesetzt werden")  
	quitError()
EndIf

func quitError()
	_IEQuit($objIE)
	exit 1
EndFunc

Grüße @colinardo

back-to-topÜberarbeitungen:
Datum Änderungen
07.05.2014 -SUPPORTENDE- Dyn.com stellt kostenlose Accounts ein. Ende des Supports für den Updater.
01.03.2014 FIX - Login Status wurde nach dem Einloggen nicht mehr korrekt erkannt wegen Deutsch / Englisch-Anpassung der Seite
19.09.2013 Dyn.com Seite hat sich im HTML-Code ein wenig geändert, Code dahingehend korrigiert und login.exe upgedated.

Content-Key: 206840

Url: https://administrator.de/contentid/206840

Printed on: June 20, 2024 at 22:06 o'clock

Member: Lochkartenstanzer
Lochkartenstanzer May 22, 2013 updated at 11:03:31 (UTC)
Goto Top
Und hier die Bourne-Again-Shell-Version

#!/usr/bin/env bash

LOGIN="Lochkartenstanzer :-)"
PASSWORD="ganz geheimes kennwort"
#UA="Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/0.0.0 (KHTML, like Gecko) Version/0.0.0 Safari/0.0.0"

COOKIES="/tmp/.dynsdns.cookies.txt"

LOGINURL="https://account.dyn.com/entrance/"
POSTURL="$LOGINURL"
CHKURL="https://account.dyn.com/"

(( DEBUG )) && DST="-" || DST="/dev/null"

# Ensure no broken session caching...
[[ -s "$COOKIES" ]] && rm "$COOKIES"

(( DEBUG )) && echo >&2 "DEBUG: Fetching initial headers to pre-load cookies..."
curl -b $COOKIES -c $COOKIES -Ikso "$DST" -A "$UA" --url "$LOGINURL"
(( DEBUG )) && echo >&2 "DEBUG: Fetching UID..."
VALUE="$( curl -b $COOKIES -c $COOKIES -kso - -A "$UA" --url "$LOGINURL" | grep -m 1 "multiform" | cut -d"'" -f 6 )"
(( DEBUG )) && echo >&2 "DEBUG: Read UID as '$VALUE' - posting data..."
curl -b $COOKIES -c $COOKIES -d "username=$LOGIN" -d "password=$PASSWORD" -d "iov_id" -d "multiform=$VALUE" -e "$LOGINURL" -kso "$DST" -A "$UA" --url "$POSTURL"
(( DEBUG )) && echo >&2 "DEBUG: Response received - verifying result..."
curl -b $COOKIES -c $COOKIES -e "$POSTURL" -kso - -A "$UA" --url "$CHKURL" | grep -q "<span>Welcome&nbsp;<b>$LOGIN</b></span>" && echo "Login successful" || echo >&2 "Login failed"

Copy-Pasted von http://blog.stuart.shelton.me/archives/1024 , auf das im Thread Batch für DYNDNS Konto Login per cURL verwiesen wurde.

Funktioniert unter linux und Windows (mit cygwin).

lks

PS: Benötigt natürlich die passenden packages wie curl & Co.
Mitglied: 16568
16568 May 22, 2013 at 11:58:17 (UTC)
Goto Top
Zitat von @Lochkartenstanzer:
Und hier die Bourne-Again-Shell-Version

YMMD!


Lonesome Walker
Member: Grinsebert
Grinsebert May 22, 2013 at 12:32:21 (UTC)
Goto Top
Hey,
vielen Dank, genau sowas habe ich gesucht face-smile
geht einwandfrei

viele Grüße
Member: eagle2
eagle2 May 23, 2013 updated at 08:16:28 (UTC)
Goto Top
Zitat von @Lochkartenstanzer:

> curl -b $COOKIES -c $COOKIES -e "$POSTURL" -kso - -A "$UA" --url "$CHKURL" | grep -q
> "<span>Welcome <b>$LOGIN</b></span>" && echo "Login successful" ||
> echo >&2 "Login failed"
> 

Moin,
hier muss man potentiell auf die Ausgabe nach dem Login achten, ich werde z.B. mit "Hi <username>" begrüßt, sodass ich das "Welcome" abändern musste.

Vielen Dank für das Teilen des Scripts, erspart wirklich Arbeit ;)

Gruß,
Eagle2
Member: Lochkartenstanzer
Lochkartenstanzer May 23, 2013 at 08:42:50 (UTC)
Goto Top
Zitat von @eagle2:
hier muss man potentiell auf die Ausgabe nach dem Login achten, ich werde z.B. mit "Hi <username>"
begrüßt, sodass ich das "Welcome" abändern musste.

Bei mir hat es mit Welcome funktioniert.

Vielen Dank für das Teilen des Scripts, erspart wirklich Arbeit ;)

Gern geschen. Aber das skript, ist, wie ich schon schrieb, nicht auf meinem Mist gewachsen.

lks
Member: ralfkausk
ralfkausk May 27, 2013 at 09:30:30 (UTC)
Goto Top
Hallo Lochkartenstanzer

Ich habe gerade versucht das auf meinem QNAP NAS zu starten.
Leider funktioniert das nicht weil grep den Parameter "-m" nicht kennt.
Gibt es dafür eine alternative Schreibweise?

Gruß Ralf
Member: Lochkartenstanzer
Lochkartenstanzer May 27, 2013 at 10:05:11 (UTC)
Goto Top
Zitat von @ralfkausk:
Hallo Lochkartenstanzer

Ich habe gerade versucht das auf meinem QNAP NAS zu starten.
Leider funktioniert das nicht weil grep den Parameter "-m" nicht kennt.
Gibt es dafür eine alternative Schreibweise?

was sagt denn "man grep" auf Deinem QNAS? ich habe leider keien im zugriff, so daß ih nciht selber nachschauen kann.

was -m nachen soll ist:

       -m NUM, --max-count=NUM
              Stop  reading  a file after NUM matching lines.  If the input is standard input
              from a regular file, and NUM matching lines are output, grep ensures that the
              standard input is positioned to just after the last matching line before exiting,
              regardless of the presence of trailing context lines.  This enables a calling
              process to resume a search.  When grep stops after  NUM  matching  lines,
              it outputs any trailing context lines.  When the -c or --count option is also used,
              grep does not output a count greater than NUM.  When the -v or --invert-match option
              is also used, grep stops after outputting NUM non-matching lines.

lks
Member: hononnen
hononnen Aug 28, 2013 at 19:37:24 (UTC)
Goto Top
Hi *,

ich bekomme auf einem Win2008 R2 Small Business Server folgende Fehlermeldung:
=== ERROR ====== ERROR ====== ERROR ====== ERROR ===
Login bei Dyn.com...
--> IE.au3 V2.4-0 Warning from function _IEFormGetCollection, $_IEStatus_NoMatch

Error: Login-Form kann nicht gefunden werden!
=== ERROR ====== ERROR ====== ERROR ====== ERROR ===

kann mir hier einer Helfen?
Einstellungssache im IE?

Viele Grüße & Danke
Heiko
Member: colinardo
colinardo Aug 29, 2013 at 06:37:49 (UTC)
Goto Top
Hallo Heiko,
sehr wahrscheinlich ist auf deinem Server 2008 R2 noch die erweiterte Sicherheit des Internet Explorers aktiv, die verhindert das die Login-Seite von dyn.com aufgerufen werden kann und stattdessen der Standardhinweis dazu im Browser erscheint, wo das Script natürlich das Login-Formular nicht finden kann. Entweder du deaktivierst die erweitere Sicherheit im IE oder du fügst folgende Seiten als Ausnahme in den Sicherheitseinstellungen hinzu:
https://*.dyn.com/*
Auf einem meiner Testsysteme mit Server 2008 R2 und deaktivierter erweiterter Sicherheit funktioniert das Script problemlos.

Grüße Uwe
Member: hononnen
hononnen Aug 29, 2013 at 07:37:37 (UTC)
Goto Top
Hallo Uwe,

Die erweiterte IE Security ist aus... an das habe ich auch schon gedacht... face-sad
Und wenn man die Website im IE startet kommt noch nicht einmal irgend ein Popup/Hinweis/o.ä....

Es handelt sich allerdings um den IE10!

Auf einem Win2012 Server eines Bekannten läuft das Tool ja auch 1a mit IE10... argh... unlogisch.

VG
Heiko
Member: colinardo
colinardo Sep 19, 2013 at 08:20:18 (UTC)
Goto Top
Dyn.com Seite hat sich etwas im HTML-Code verändert, Code wurde deswegen korrigiert (s.o.) ...
Grüße Uwe
Member: 4dminUser
4dminUser Sep 24, 2013 at 15:42:01 (UTC)
Goto Top
Hi
könntest du noch die login.exe aktualisieren?
Vielen Dank und Grüße
Tobias
Member: colinardo
colinardo Sep 24, 2013 at 15:45:15 (UTC)
Goto Top
Zitat von @4dminUser:
Hi
könntest du noch die login.exe aktualisieren?
hatte ich am 19.09 bereits gemacht !
Grüße Uwe
Member: 4dminUser
4dminUser Sep 28, 2013 at 18:31:57 (UTC)
Goto Top
Sorry mein Fehler, habe die Datei Größe nicht direkt verglichen, sondern nur im Explorer geschaut (332KB).

Danke für deine Mühe
Tobias

neue Dateigröße 331 KB (339.423 bytes), alte 331 KB (339.319 bytes)
Member: ralfkausk
ralfkausk Nov 15, 2013 at 09:43:02 (UTC)
Goto Top
Hat das bash Skript schon jemand getestet?
Es läuft bei mir zwar inzwischen ohne Fehlermeldung, aber trotzdem bin ich von DynDns aufgefordert werden mich anzumelden damit mein Konto nicht gelöscht wird.

Gruß Ralf
Member: ralfkausk
ralfkausk Nov 15, 2013 updated at 09:45:30 (UTC)
Goto Top
@ Lochkartenstanzer:

hat sich erledigt.
Auf dem Gerät liegen mehrere grep's
Ich habe jetzt einen gefunden der den Parameter -m kennt
Danke schön
Member: colinardo
colinardo Nov 19, 2013 updated at 18:08:03 (UTC)
Goto Top
Zur Info für alle Nutzer von dyn.com
Folgende Benachrichtigung kam gerade von dyn.com per Mail rein:
Since enforcing our 30-day manual account login for free users, we heard requests that a single email reminder to log in just is not enough. You asked for it, so we delivered. 

Effective December 1, 2013, you will now receive a reminder email 15 days ahead of account expiration, in addition to an alert 5 days ahead of expiration -- both sent if you have not manually logged in within the last 30 days.
d.h. also, wenn Ihr die Benachrichtigungs-Mails in Zukunft zu vermeiden wollt sollte mind. alle 15 Tagen einloggt werden...

Grüße Uwe
Member: wonnobo
wonnobo Mar 02, 2014 at 18:48:57 (UTC)
Goto Top
Könntest man ein Log ausgeben oder eine deutlichere Kennzeichnung,
wenn der Login nicht funktioniert hat? Das Fenster verschwindet ja relativ
schnell und nach einer Zeit schaut man nicht mehr genau hin.
Am liebsten wäre mir aber eine Logdatei.

Gruß
J
Member: colinardo
colinardo Mar 02, 2014 updated at 18:59:23 (UTC)
Goto Top
Zitat von @wonnobo:
Am liebsten wäre mir aber eine Logdatei.
wozu gibt es wohl die Ausgabe des Errorlevels !?

Als Exit-Code gibt das Script bei einem Fehler eine 1 und bei Erfolg eine 0 zurück.
Member: wonnobo
wonnobo Mar 02, 2014 at 21:19:05 (UTC)
Goto Top
Oha
Nettes Danke!
Member: colinardo
colinardo Apr 07, 2014 at 14:55:48 (UTC)
Goto Top
Wie zu erwarten war stellt Dyn.com seine kostenlosen Accounts in 30 Tagen ein:
Dyn.com stellt kostenlose Accounts am 7. Mai 2014 endgültig ein!

Grüße @colinardo