Autor | Zpráva | ||
---|---|---|---|
bach Profil |
#1 · Zasláno: 23. 9. 2016, 10:37:38
Dobrý den, potřeboval bych radu, jak bych mohl číst údaje ze stránky, na kterou se však musím přihlásit jménem a heslem na web formuláři.
Konkrétně mi jde o tuto stránku www.nibeuplink.com/System/27294/Status/Overview Děkuji za radu. |
||
MilanKarkulka Profil |
#2 · Zasláno: 23. 9. 2016, 10:47:28
PHP + CURL
Kopíruji příklad ze PHP a CURL $ch = curl_init($url); //POKUD CHCES VRATIT INFO HLAVICKU curl_setopt ($ch, CURLOPT_HEADER, 0); //NASTAVIS ZE CHCES ODESLAT DATA curl_setopt($ch,CURLOPT_POST,1); //VLOZIS JAKE DATA SE ODESILAJI METODOU POST $var = "jmeno=xxx&heslo=xxx"; curl_setopt($ch,CURLOPT_POSTFIELDS,$vars); //POKUD CHCES PRACOVAT S VYSLEDNOU STRANKU NASTAV NA 1 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //DO PROMENE NACTES VYSLEDNOU STRANKU A UKONCIS CURL $vystup = curl_exec ($ch); curl_close ($ch); //DALE UZ PRACUJES POUZE S PROMENOU echo $vystup; |
||
bach Profil |
#3 · Zasláno: 23. 9. 2016, 11:42:40
MilanKarkulka:
Asi to bude složitější , našel jsem něco, ale nefunguje to, hlásí mi to chybu serveru i ksyž vyplním správně mail a heslo - včem by ještě mohl být problém? $debug = false; // Create temp file to store cookies $ckfile = tempnam ("/tmp", "CURLCOOKIE"); // URL to login page $url = "https://www.nibeuplink.com/LogIn"; // Get Login page and its cookies and save cookies in the temp file $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Accepts all CAs curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_COOKIEJAR, $ckfile); // Stores cookies in the temp file curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $output = curl_exec($ch); // Now you have the cookie, you can POST login values $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 2); curl_setopt($ch, CURLOPT_POSTFIELDS, "Email=".$_GET['email']."&Password=".$_GET['pass']); curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile); // Uses cookies from the temp file curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Tells cURL to follow redirects $output = curl_exec($ch); curl_setopt($ch, CURLOPT_URL, "https://www.nibeuplink.com/System/27294/Status/ServiceInfo"); curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile); curl_setopt($ch, CURLOPT_POST, 0); $result = curl_exec($ch); |
||
MilanKarkulka Profil |
#4 · Zasláno: 23. 9. 2016, 11:50:02
Jak chybu to hlásí?
|
||
bach Profil |
MilanKarkulka:
Ani to už chybu nehlásí, zkrátil jsem to , ale zase to nepřebírá asi heslo viz níže: http://i.kratochvilovi.net/tk/nibe3.php nyní tam posílám toto , ale evidentně se to nepřihlásí nebo to ještě něco chce : <? // to add additional debug output to the resulting page: $debug = false; // Create temp file to store cookies $ckfile = tempnam ("/tmp", "CURLCOOKIE"); // URL to login page $url = "https://www.nibeuplink.com/LogIn"; // Get Login page and its cookies and save cookies in the temp file $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Accepts all CAs curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_COOKIEJAR, $ckfile); // Stores cookies in the temp file curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $output = curl_exec($ch); // Now you have the cookie, you can POST login values $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 2); curl_setopt($ch, CURLOPT_POSTFIELDS, "Email=".$_GET['email']."&Password=".$_GET['pass']); curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile); // Uses cookies from the temp file curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Tells cURL to follow redirects $output = curl_exec($ch); curl_setopt($ch, CURLOPT_URL, "https://www.nibeuplink.com/System/27294/Status/ServiceInfo"); curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile); curl_setopt($ch, CURLOPT_POST, 0); $result = curl_exec($ch); echo $result; ?> |
||
rafej Profil |
#6 · Zasláno: 23. 9. 2016, 17:23:44
Pravděpodobně předáváš parametry bez správného zakódování pro URL. Zkus tohle:
$data = array( 'Email'=>$_GET['email'], 'Password'=>$_GET['pass'] ); $post_query = http_build_query($data) . "\n"; curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); //volitelně, vyzkoušej curl_setopt($ch, CURLOPT_POSTFIELDS, $post_query); Opravdu názvy parametrů Email a Password začínají velkým písmenem? Na velikosti písmen záleží, bacha na to. Pokud to stále nepůjde, hledej problém pravděpodobně u cookies. |
||
bach Profil |
rafej:
hodnoty parametrů Email a Password by měly být správné dle zdroje stránky: <label for="Email">E-mail</label><br /> <input autocomplete="off" class="LoginTextbox input_trim" data-val="true" data-val-regex="Neplatný e-mail" data-val-regex-pattern="^[\S]+@[\S]+\.[\w]{2,}$" data-val-required="Vyžaduje se E-mail" id="Email" name="Email" tabindex="1" type="email" value="" /> </div> <div style="width: 225px; margin: 0;"> <label for="Password">Heslo</label> (<a href="/ResetPassword">Ztracené heslo</a>)<br /> <input autocomplete="off" class="LoginTextbox" data-val="true" data-val-required="Vyžaduje se Heslo" id="Password" name="Password" tabindex="2" type="password" /> stále to dělá nějaké problémy, není to vyplněno: i.kratochvilovi.net/tk/nibe3.php nyní to mám takto a nevím jak dál: <? // to add additional debug output to the resulting page: $debug = false; // Create temp file to store cookies $ckfile = tempnam ("/tmp", "CURLCOOKIE"); // URL to login page $url = "https://www.nibeuplink.com/LogIn"; // Get Login page and its cookies and save cookies in the temp file $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Accepts all CAs curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_COOKIEJAR, $ckfile); // Stores cookies in the temp file curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $output = curl_exec($ch); // Now you have the cookie, you can POST login values $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 2); $data = array( 'Email'=>$_GET['mail'], 'Password'=>$_GET['heslo'] ); $post_query = http_build_query($data) . "\n"; curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); //volitelně, vyzkoušej curl_setopt($ch, CURLOPT_POSTFIELDS, $post_query); curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile); // Uses cookies from the temp file curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Tells cURL to follow redirects $output = curl_exec($ch); curl_setopt($ch, CURLOPT_URL, "https://www.nibeuplink.com/System/27294/Status/ServiceInfo"); curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile); curl_setopt($ch, CURLOPT_POST, 0); $result = curl_exec($ch); //DALE UZ PRACUJES POUZE S PROMENOU echo $result; ?> |
||
rafej Profil |
#8 · Zasláno: 25. 9. 2016, 23:26:18
bach:
Na řádku 25 (dle předchozí ukázky) máš pravděpodobně překlep, který způsobuje, že se to neodesílá. Před koncovou závorkou by měla být 1. Správně: curl_setopt($ch, CURLOPT_POST, 1); |
||
bach Profil |
#9 · Zasláno: 26. 9. 2016, 07:18:30
rafej:
Situace stejná - stále je to prázdné. |
||
bach Profil |
#10 · Zasláno: 26. 9. 2016, 09:26:25
rafej:
Nakonec jsem to udělal takto a jede to: <? $debug = false; // Create temp file to store cookies $ckfile = tempnam ("/tmp", "CURLCOOKIE"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://www.nibeuplink.com/LogIn'); curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/32.0.1700.107 Chrome/32.0.1700.107 Safari/537.36'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, "Email=mailt&Password=heslo"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_COOKIESESSION, true); curl_setopt($ch, CURLOPT_COOKIEJAR, $ckfile); curl_setopt($ch, CURLOPT_COOKIEFILE, $ckfile); $answer = curl_exec($ch); if (curl_error($ch)) { echo curl_error($ch); } curl_setopt($ch, CURLOPT_URL, 'https://www.nibeuplink.com/System/27294/Status/ServiceInfo'); curl_setopt($ch, CURLOPT_POST, false); curl_setopt($ch, CURLOPT_POSTFIELDS, ""); $answer = curl_exec($ch); if (curl_error($ch)) { echo curl_error($ch); } echo $answer; ?> |
||
Časová prodleva: 9 let
|
0