1

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 クライアントからユーザー ブラウザーに設定しようとしています。

すべての助けをいただければ幸いです。はい、私はグーグルでたくさん検索しました。

4

1 に答える 1

1

これは古い質問であることは知っていますが、他の誰も回答していないので、回答を破棄すると思いました. たぶん、これを試している他の誰かにも役立つでしょう。

これが機能しない理由は、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>
于 2014-07-09T00:03:36.387 に答える