2017-10-23 12 views
0

私はcpanelのawstatsページを表示するために実装しようとしています。私は自動的にcpanelにログインし、渡されたドメインのawstatsを表示したいと思います。私は、このために、次のコードを使用しますが、それは、ログインページに行くと、AWStatsのページcpanel awstatsが自動的にリダイレクト

$cp_user = "<username>"; 
$cp_pwd = "<password>"; 
$url = "https://xxxx:2083/login"; 
$cookies = "cookies.txt"; 

$ch=curl_init(); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
//curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies); // Save cookies to 
curl_setopt($ch, CURLOPT_POSTFIELDS, "user=$cp_user&pass=$cp_pwd"); 
curl_setopt($ch, CURLOPT_TIMEOUT, 100020); 

$f = curl_exec($ch); 
$h = curl_getinfo($ch); 
curl_close($ch); 

if ($f == true and strpos($h['url'],"cpsess")) 
{ 
    // Get the cpsess part of the url 
$pattern="/.*?(\/cpsess.*?)\/.*?/is"; 
$preg_res=preg_match($pattern,$h['url'],$cpsess); 
} 

$token= $cpsess[1]; 
header('Locations: https://xxxx:2083'.$token.'/awstats.pl?config=<domain>&ssl=&lang=en'); 

これに何か問題があるのを示していないようですか?

答えて

0

これは古い質問ですが、他の誰も応答していないので、私は答えを捨てると思っていました。たぶんそれは誰かがこれを試しても助けるでしょう。

これを実行できない理由は、cPanelがユーザーのIPアドレスを検証するためです。あなたのcURLスクリプトはサーバ上にIPで格納されており、ログインしようとするユーザは独自のIPアドレスを持っています。

cPanel(x3)ログインフォームをチェックすると、IPアドレスを送信するフォームフィールドもないので、偽装を防ぐためにサーバー側でのみ取得されます。

$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://ss.com:2082'.$token.'/awstats.pl?config=ss.com&ssl=&lang=pt'); 
+0

返信いただきありがとうございました。つまり、これを実現する方法はありません。 –

関連する問題