• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

login ins ngb mit cURL

Tone

beobachtet

Registriert
20 Juli 2013
Beiträge
308
So, damits nicht langweilig wird auch nochmal eine cURL Frage von mir:

Ausgangssituation:
Ich habe eine interne Webseite auf die ich mich gerne mittels cURL anmelden und dann auslesen würde. Allerdings hatte das, als ich es versucht hatte, nicht geklappt und jetzt ist mein Standort 'extern', heißt ich komme nicht mehr auf die interne Seite (rumgeeier mit VPN usw. ist mir jetzt zu doof), also ist das ngb jetzt meine Testwebsite dafür.
Anpassen für die eigentliche Website sollte ja dann auch machbar sein.

Google habe ich natürlich schon gefragt, Testscripts und alles waren auch dabei, aber ich konnte da keinen nennenswerten Unterschied zu meinen ausmachen.

[src=php]
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://ngb.to/login.php');

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_BINARYTRANSFER, true);

curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookie.txt');

curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, "do=login&vb_login_username=Tone&vb_login_password_hint=zensiert :p");
curl_exec($curl);

curl_setopt($curl, CURLOPT_URL, 'https://ngb.to');
$gran = curl_exec($curl);

curl_close($curl);
[/src]

Dann frage ich immer auf diesen Willkommenstext im ngb ab, der ja nur angezeigt wird wenn man nicht angemeldet ist.
Und da er mir immer angezeigt wird gehe ich davon aus, dass ich nicht angemeldet bin.

Könnt ihr mir ein bisschen auf die Sprünge helfen? :unknown:
 

alter_Bekannter

N.A.C.J.A.C.

Registriert
14 Juli 2013
Beiträge
4.833
Ort
Midgard
Könnte an einer DDoS Protection liegen, die dürfte dann unter anderem noch den User-Agent prüfen.

Da gibts vieles was dazwischen funken könnte, hast du das Request mal lokal geprüft?
 

Tone

beobachtet

Registriert
20 Juli 2013
Beiträge
308
  • Thread Starter Thread Starter
  • #3
Lokal hab ich es schon mit einer simplen Testwebsite probiert, da funktioniert auch alles wie es soll.

Habe jetzt mal die Zeile ergänzt:
[src=php]curl_setopt($curl,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko');[/src]
Damit sollte der Useragent nun vorgeben der IE11 auf Win 8.1 zu sein.
Geht aber leider immer noch nicht :(
 

alter_Bekannter

N.A.C.J.A.C.

Registriert
14 Juli 2013
Beiträge
4.833
Ort
Midgard
Die nächste Idee wäre das ngb für den Login vielleicht SSL erzwingt, aber so kann ich nur ins Blaue schießen...

Was heißt "simple" Testwebseite?

Als vollen Test würde ich empfehlen mal eine Testdatei zu erstellen die alle vermeintlich gesendeten Daten nochmal ausgibt um sicher zu stellen das auch alles ankommt wie es soll. Und das ganze zur Sicherheit mal auf eigenen Space durchs Web schicken um mit dem Test möglichst nah an die Praxis zu kommen.

Also auch die Prüfung des Cookies nicht vergessen.
 

thom53281

SYS64738
Teammitglied

Registriert
14 Juli 2013
Beiträge
6.925
Also auch die Prüfung des Cookies nicht vergessen.
Schätze, es gibt da nicht soviel zu prüfen, wenn der Login fehlschlägt.


Beim Beispielskript fällt mir jetzt als erstes auf, dass er zu keinem Zeitpunkt ein Kennwort an das Board überträgt bzw. zumindest nicht richtig. Imho am richtigsten wäre es, zuerst einen md5-Hash seines Kennworts zu erstellen. Das tut die Boardsoftware i. d. R. auch beim Login (per Javascript). Diesen md5-Hash übergibt man dem Board dann über [kw]vb_login_md5password[/kw] und auch [kw]vb_login_md5password_utf[/kw]. [kw]vbulletin_login_password[/kw] bleibt leer.

Ziemlich komplett aufgeschlüsselt steht das btw. hier, welche Parameter man dem Board mitgeben sollte und wie man das elegant mit md5 löst.
 

virtus

Gehasst

Registriert
24 Apr. 2015
Beiträge
1.689
Ort
AUF DEM MOND
Läuft das Script lokal oder auf einem Server? Falls letzteres der Fall ist könnte die DDoS Protection ebenfalls dazwischen schießen, wenn du aus einem potentiell bösartigen Netz kommst.
 

Tone

beobachtet

Registriert
20 Juli 2013
Beiträge
308
  • Thread Starter Thread Starter
  • #7
Habe jetzt alles mögliche probiert um mich auf die Seite (die richtige, nicht das ngb) einzuloggen, aber alles schlug fehl.

Ich denke ich geb es auf, mit meinen momentanen Wissenstand ist das wohl noch nicht machbar.
 

keksautomat

Neu angemeldet

Registriert
15 Juli 2013
Beiträge
471
Das Skript hier funktioniert:
https://gist.github.com/saltun/0490cdd8598dce10831e

[src=php]function vBulletinLogin($username,$password,$url,$posturl){
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER,false);
curl_setopt($ch, CURLOPT_COOKIEFILE, 'veri.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'veri.txt');
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_COOKIESESSION,true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,true);
curl_setopt($ch, CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_REFERER, $url.'index.php');
curl_setopt($ch, CURLOPT_URL, $url.'login.php?do=login');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "vb_login_username=$username&vb_login_password&s=&securitytoken=guest&do=login&vb_login_md5password=".md5($password)."&vb_login_md5password_utf=".md5($password));
$exec = curl_exec($ch);

curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_REFERER, $url.'login.php?do=login');
curl_setopt($ch, CURLOPT_URL, $url.'clientscript/vbulletin_global.js?v=373');
$exec = curl_exec($ch);

curl_setopt($ch, CURLOPT_REFERER, $url.'login.php?do=login');
curl_setopt($ch, CURLOPT_URL, $url.'index.php');
$exec = curl_exec($ch);

curl_setopt($ch, CURLOPT_REFERER, $url.'index.php');
curl_setopt($ch, CURLOPT_URL, $posturl);

$exec = curl_exec($ch);
return $exec;

}
[/src]

POSTURL ist die Url, die du am Ende haben willst.
Aufruf also:

vBulletinLogin('benutzername','passwort','https://ngb.to/','https://ngb.to/')

Darauf einen "var_dump" o.ä bekommst du die Startseite zurück.
 

Tone

beobachtet

Registriert
20 Juli 2013
Beiträge
308
  • Thread Starter Thread Starter
  • #9
Danke!
Habe es jetzt erstmal stumpf ausprobiert und es geht sowohl im ngb als auch auf meiner Seite (zwar leicht abgewandelt, aber das ist ja nicht schlimm).

Werde das jetzt mit meinen Zeilen vergleichen, wo da der entscheidende Unterschied ist.
Wenn ich es nicht vergesse teile ich es euch dann auch mit :)
 

Tone

beobachtet

Registriert
20 Juli 2013
Beiträge
308
  • Thread Starter Thread Starter
  • #10
Ok, ich hatte 3 Fehler:

1. Fehler - hab ich vergessen
2. Fehler - Schusselfehler
3. Fehler - POST anstatt GET verwendet.

Zum 3. Fehler aber noch eine Frage, der Original Code lautet:
[src=html5]
<form id="login" method="post" action="?action=login_process">
[/src]

Da hier als Methode POST angegeben wird, bin ich davon ausgegangen das ich das auch verwenden muss, dass war aber nicht der Fall, erst nachdem ich "?action=login_process" per GET versendet habe, hat es funktioniert.

Kann mir jemand erklären warum?

Wird form immer per GET versendet und bezieht sich das POST nur auf den Inhalt der form?
 

Casper

Neu angemeldet

Registriert
29 Sep. 2013
Beiträge
115
POST und GET können gemixt werden. In deinem Codeausschnitt heißt das, die Formularfelder werden per POST an das aktuelle Script gesendet mit dem GET-Parameter action=login_process. Heißt das Script hat in $_GET['action'] nachher den Wert 'login_process' und in $_POST befindet sich ein assoziatives Array mit den Feldnamen als Schlüsseln.

Ohne den GET-Parameter wird das ganze nicht funktionieren weil im Loginscript etwas ähnliches wie das hier stehen wird:

PHP:
if($_GET['action']) == 'login_process') {
    // Nutzer einloggen
}

Lässt du den Parameter weg, wird er nicht in den Abfragenblock springen und somit auch keinen Login durchführen.
 
Oben