로컬 라우터에 자동으로 로그인하기위한 페이지를 만들려고합니다. 현재 CURL을 사용하여 페이지에 로그인하고 인증합니다. 이 코드 부분이 올바르게 작동하는 것 같습니다. 내가 겪고있는 문제는 일단 CURL이 인증되면 사용자를이 페이지로 리디렉션하여 탐색 할 수 있도록해야하지만 CURL에서 수집 한 쿠키를 사용해야합니다. 그것은, 그러나,이 작동하지 않는 순간컬 포스트 트위터 로그인 및 리디렉션
$data = array(
'username' => 'admin',
'password' => 'admin',
);
$ch = @curl_init();
curl_setopt($ch, CURLOPT_URL,'http://192.168.69.1:65080/login.cgi');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, 'public_html/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'public_html/cookie.txt');
$result = curl_exec ($ch);
$info = curl_getinfo($ch);
curl_close ($ch);
print_r($result);
print_r($info);
//Working until this point
preg_match('/^Set-Cookie:\s*([^;]*)/mi', $result, $m);
parse_str($m[1], $cookies);
foreach($cookies as $key=>$cookie)
{
setcookie($key, $cookie, time() + 60*60*24*30, '/');
}
header("location:".$info['redirect_url']);
당신은 내가 $result
정보를 통해 루프에 조각을 발견 한 후 리디렉션하기 전에 쿠키로 설정 볼 수 있듯이 약자로 여기
리디렉션 URL을 URL로 사용하여 CURL을 닫기 전에 추가 호출을하면 인덱스 페이지의 부분 인쇄가 표시되지만 중요한 이미지 등은 표시되지 않습니다. 하지만 단순히 페이지를 인쇄하는 대신 페이지에 액세스하여 탐색 할 수 있어야합니다. 여기
여기 여기Array
(
[url] => http://192.168.69.1:65080/login.cgi
[content_type] => text/html
[http_code] => 302
[header_size] => 314
[request_size] => 251
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0.484
[namelookup_time] => 0
[connect_time] => 0
[pretransfer_time] => 0
[size_upload] => 255
[size_download] => 0
[speed_download] => 0
[speed_upload] => 526
[download_content_length] => -1
[upload_content_length] => 255
[starttransfer_time] => 0
[redirect_time] => 0
[certinfo] => Array
(
)
[redirect_url] => http://192.168.69.1:65080/index.cgi
)
$info
의 인쇄가 마지막으로 여기 내 cookie.txt
# Netscape HTTP Cookie File
# http://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.
192.168.69.1 FALSE / FALSE 0 AIROS_SESSIONID d19e097a07b7b76fd7d90267a8e1f4d2
192.168.69.1 FALSE / FALSE 1370775278 show_security_warning deleted
192.168.69.1 FALSE / FALSE 2147483647 ui_language en_US
입니다 $cookies
의 인쇄입니다 $result
HTTP/1.1 302 Found
Location: /index.cgi
Set-cookie: show_security_warning=deleted; expires=Sunday, 09-Jun-13 10:54:00 GMT
Set-cookie: ui_language=en_US; expires=Tuesday, 19-Jan-38 03:14:07 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Date: Mon, 09 Jun 2014 10:54:01 GMT
Server: lighttpd/1.4.31
의 인쇄입니다
Array
(
[show_security_warning] => deleted
)
누군가가 다음 단계를 달성하는 올바른 방향으로 나를 지적 할 수 있다면, 나는 가장 감사 할 것입니다.
그러나이 줄을'curl_setopt ($ ch, CURLOPT_FOLLOWLOCATION, true);라고 추가하면 여전히 위와 같은 내용으로 strugling됩니다. 모든 필드와 필요한 정보 (예 : 상태 등)가 포함 된 페이지를 반환합니다. 그러나 페이지에 자바 스크립트가 채워지는 경우 아무 것도 값을 갖지 않습니다. CURL은 이것을 파싱 할 수 없으므로 팬텀과 비슷한 것을보고 있습니다.나는 희망이 없다. 나는 아직도 CURL이 수집 한 쿠키를 어떻게 사용할 수 있는지 알고 싶습니다. 하지만이 쿠키는 127.0.0.1 용이며 다른 문제로 여겨지는 라우터 IP가 아닙니다. –