Я пытаюсь автоматически войти в cPanel, а затем перенаправить пользователя на страницу Awstats. Но у меня проблемы. Единственный рабочий метод, который я нашел, это:
<form method="post" id="login-form" action="http://domain.com:2082/login"> <input type="hidden" name="login_theme" id="login_theme" value="cpanel"> <input type="hidden" name="goto_uri" id="goto_uri" value="awstats.pl?config=euqueroinvestir.com&lang=pt"> <input type="hidden" name="user" id="user" value="myuser"> <input type="hidden" name="pass" id="pass" value="mypass"> </form> <script>window.onload = function() { document.forms["login-form"].submit(); }</script>
Но, как вы можете видеть, если пользователь видит исходный код, пароль будет явным в виде простого текста. Я не могу этого сделать. Поэтому я попытался использовать cUrl, но теперь у меня проблемы с заголовками, куки-файлами и т. Д.
Это моя последняя попытка:
$url = "http://domain.com:2082/login"; $curl = curl_init(); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_VERBOSE, 1); curl_setopt($curl, CURLOPT_HEADER, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER,1); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POSTFIELDS, "user=myuser&pass=mypass"); $result = curl_exec($curl); $header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE); $header = substr($result, 0, $header_size); $body = substr($result, $header_size); curl_close($curl); $header = str_replace("\r", '', $header); $header = explode("\n", $header); foreach ($header as $h) { header ($h); } $parts = explode( 'URL=', $result); $session_parts = explode( '/frontend/', $parts[1]); $token = $session_parts[0]; header('Location: http://domain.com:2082'.$token.'/awstats.pl?config=domain.com&ssl=&lang=pt');
С этим я могу получить токен безопасности, а цикл foreach ($ header as $ h) – это попытка установить заголовок и файлы cookie из клиента cUrl в пользовательский браузер.
Каждая помощь будет оценена по достоинству. И да, я много искал в google.
Я знаю, что это старый вопрос, но я подумал, что я выкину ответ, потому что никто больше не ответил. Возможно, это поможет кому-то еще попробовать это.
Причина, по которой вы не можете получить эту работу, заключается в том, что cPanel проверяет IP-адрес пользователя. Сценарий cURL размещается на вашем сервере с его IP-адресом, и пользователь, пытающийся войти в систему, имеет свой собственный IP-адрес.
Ознакомьтесь с формой входа в систему cPanel (x3), даже для поля формы не будет отправлен ваш IP-адрес, поэтому он извлекается исключительно на стороне сервера, чтобы предотвратить спуфинг.
<form id="login_form" action="/login/" method="post" target="_top"> <div class="input-req-login"><label for="user">Username</label></div> <div class="input-field-login icon username-container"> <input name="user" id="user" autofocus="autofocus" value="" placeholder="Enter your username." class="std_textbox" type="text" tabindex="1" required> </div> <div style="margin-top:30px;" class="input-req-login"><label for="pass">Password</label></div> <div class="input-field-login icon password-container"> <input name="pass" id="pass" placeholder="Enter your account password." class="std_textbox" type="password" tabindex="2" required> </div> <div class="controls"> <div class="login-btn"> <button name="login" type="submit" id="login_submit" tabindex="3">Log in</button> </div> </div> <div class="clear" id="push"></div> </form>