2016-06-27 6 views
1

다음 PHP 코드를 사용하여 "Ubiquiti Networks-CPE"의 로그인 페이지를 무시하려고합니다. 내 코드가 제대로 쿠키 정보를 저장,하지만,이 로그인 할 수없는 그리고 나는 오류 메시지와 함께 로그인 페이지로 리디렉션 오전 :PHP cURL이 로그인 페이지로 리디렉션됩니다

'잘못된 자격 증명'

Cookie Info from the actual page

추가 정보 실제 로그인 페이지


 
Request URL:https://192.168.179.75/login.cgi 
Request Method:POST 
Status Code:302 Found 
Remote Address:192.168.179.75:443 
Response Headers 
view source 
Content-Type:text/html 
Date:Tue, 28 May 2013 18:58:05 GMT 
Location:/index.cgi 
Server:lighttpd/1.4.31 
Set-cookie:show_security_warning=true 
Set-cookie:ui_language=en_US; expires=Tuesday, 19-Jan-38 03:14:07 GMT 
Transfer-Encoding:chunked 
Request Headers 
view source 
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
Accept-Encoding:gzip, deflate, br 
Accept-Language:en-US,en;q=0.8,en-GB;q=0.6 
Cache-Control:max-age=0 
Connection:keep-alive 
Content-Length:332 
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryszePSjmcB2JJIDDa 
Cookie:last_check=1467001323935; AIROS_SESSIONID=8057f38405a60c6a17f05ef8d759bb42; ui_language=en_US 
Host:192.168.179.75 
Origin:https://192.168.179.75 
Referer:https://192.168.179.75/login.cgi 
Upgrade-Insecure-Requests:1 
User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 
Request Payload 
------WebKitFormBoundaryszePSjmcB2JJIDDa 
Content-Disposition: form-data; name="uri" 


------WebKitFormBoundaryszePSjmcB2JJIDDa 
Content-Disposition: form-data; name="username" 

ubnt 
------WebKitFormBoundaryszePSjmcB2JJIDDa 
Content-Disposition: form-data; name="password" 

ubnt 
------WebKitFormBoundaryszePSjmcB2JJIDDa- 
0,123,178,949에서

PHP 코드 :

<?php 
define('USERNAME', 'ubnt'); 
define('PASSWORD', 'ubnt'); 
define('USER_AGENT', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36'); 

$cookie_file_path = str_replace('\\','/', getcwd().'/cookies'); 

define('COOKIE_FILE', $cookie_file_path); 
define('LOGIN_FORM_URL', 'https://192.168.179.75/login.cgi'); 
define('REQUESTED_URL', 'https://192.168.179.75/status.cgi'); 
define('LOGIN_ACTION_URL', 'https://192.168.179.75/login.cgi'); 

$postValues = array(
    'username' => USERNAME, 
    'password' => PASSWORD, 
); 

$curl = curl_init(LOGIN_FORM_URL); 
curl_setopt($curl, CURLOPT_URL, LOGIN_ACTION_URL); 

//curl_setopt($curl, CURLOPT_HEADER, 1); 
//curl_setopt($curl, CURLOPT_COOKIE, $cookies);  
//curl_setopt($curl,CURLOPT_COOKIESESSION,'AIROS_SESSIONID=ae60748359be4bd0468f51a346f4f3b9; last_check=1467001323935; show_security_warning=true; ui_language=en_US'); 
curl_setopt($curl, CURLOPT_COOKIEJAR, COOKIE_FILE); 
curl_setopt($curl, CURLOPT_COOKIEFILE, COOKIE_FILE); 

curl_setopt($curl, CURLOPT_POST, true); 
//curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); 
//Set our post fields/date (from the array above). 
//curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($postValues)); 


curl_setopt($curl, CURLOPT_POSTFIELDS,$postValues); 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl, CURLOPT_USERAGENT, USER_AGENT); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); 

//curl_setopt($curl, CURLOPT_HTTPHEADER, array('REMOTE_ADDR: 192.168.179.75','Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryAbpUbGA4FIs529Z6')); 
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Host: 192.168.179.75','Expect: ','Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryAbpUbGA4FIs529Z6')); 
curl_setopt($curl, CURLOPT_REFERER, LOGIN_FORM_URL); 
$result = curl_exec($curl); 

if(curl_errno($curl)){ 
    throw new Exception(curl_error($curl)); 
} 
//curl_setopt($curl, CURLOPT_URL, 'https://192.168.179.75/status.cgi'); 
// 
//curl_setopt($curl, CURLOPT_COOKIEJAR, COOKIE_FILE); 
//curl_setopt($curl, CURLOPT_USERAGENT, USER_AGENT); 
//curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); 
//curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
//$result = curl_exec($curl); 
//echo $result; 
print_r($result); 
curl_close($curl); 
?> 
+0

확인할 수 있습니다 ... 단 2 점을 failling 수 있습니다 무슨 ideia : 1 -을 처리 곱슬 곱슬하게 ... "CURLOPT_HTTPHEADER"을 제거 시도하고 2 - HTTP 1.1 강제로 시도 : -> CURL_HTTP_VERSION_1_1 CURLOPT_HTTP_VERSION을 –

답변

0
  1. boundary=----WebKitFormBoundaryAbpUbGA4FIs529Z6처럼 강제 경계를 설정 작동하지 않을 수 있습니다. 컬은 자체 경계를 생성하여 사용할 것입니다. 해당 사용자 정의를 설정하면 POST가 잘못 포맷됩니다. 전체 사용자 정의 Content-Type: 헤더를 제거하면 컬 자체가이를 수행합니다. 또한 Host: 헤더를 설정할 필요가 없습니다. curl은 사용하는 URL에서 필요한 호스트를 추출합니다.

  2. 로그인 페이지는 로그인 POST가 수행 될 때 필요한 쿠키를 설정하거나 설정하는 경우가 있습니다. 그것은 일반적인 관행입니다. 이 작업을하려면 먼저 로그인 페이지를 가져 와서 쿠키를 저장 한 다음 후속 로그인 POST에 사용해야합니다.

  3. 당신은 컬링이 로그인 게시물이 당신을 가장 많이 보내 게 될 리디렉션을 따르게하고 싶습니다. CURLOPT_FOLLOWLOCATION을 true로 설정하십시오.

관련 문제