2012-07-30 4 views
1

페이지의 html 콘텐츠 (출처)를 검색해야합니다 (예 : www.google.com 페이지). 그렇다면 나는 PHP를 사용하여 file_get_contents 또는 curl_init을 사용할 수 있습니다.암호가 있으면 PHP가 암호 필요 페이지의 내용을 검색합니까?

정확히 이곳에 누군가의 질문과 같이 나를 위해 그 다음
How do I get the HTML code of a web page in PHP?

하지만 더, 일부 페이지는 은 액세스 필수 있습니다.
하지만 액세스 권한을 부여하고 암호를 알고 있습니다.

은 (는 형태와 비밀번호를 물어 말할 수 있습니다 암호는 "ABCD"입니다.)

그래서 나는 그것을 읽고 어떻게 프로그래밍 PHP와 페이지?

는 (나를 위해, 대답을) 업데이트 :
나는 curl-setopt suggested by Bekzat Abdiraimov below과 해결책을 발견했다. 그럼 내가 여기 어딘가에서 발견하고 수정 된 코드를 여기에 게시 :

<?php 
function curl_grab_page($url, $ref_url, $data, $login, $proxy, $proxystatus){ 
    if($login == 'true') { 
     $fp = fopen("cookie.txt", "w"); 
     fclose($fp); 
    } 

    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); 
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 40); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 

    if ($proxystatus == 'true') { 
     curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE); 
     curl_setopt($ch, CURLOPT_PROXY, $proxy); 
    } 

    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 

    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_REFERER, $ref_url); 

    curl_setopt($ch, CURLOPT_HEADER, TRUE); 
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 
    curl_setopt($ch, CURLOPT_POST, TRUE); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 

    curl_exec($ch); 

    curl_setopt($ch,CURLOPT_URL,$ref_url); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1); 

    ob_start(); 
    $data = curl_exec($ch); 
    ob_end_clean(); 

    curl_close($ch); 
    return $data; 
} 

/* 
* $auth_processing_url .. is the posted 'action' url in login form like <form method=post action='http://www.abc.com/login.asp'> So it should be like: "http://www.abc.com/login.asp" 
* $url_to_go_after_login .. is the url you want to go (to be redireced) after login 
* $login_post_values .. are the form input names what Login Form is asking. E.g on form: <input name="username" /><input name="password" />. So it should be: "username=4lvin&password=mypasswd" 
*/ 
echo curl_grab_page($auth_processing_url, $url_to_go_after_login, $login_post_values, "true", "null", "false"); 
?> 

답변

2

사용 컬 curl_setopt (자원 $의 채널, INT의 $ 옵션, 혼합 $ 값)

option = CURLOPT_HTTPAUTH 
value = choose auth type (CURLAUTH_BASIC, ...) 

http://www.php.net/manual/en/function.curl-setopt.php

+1

http://stackoverflow.com/questions/1304974/set-authorization-header- using-php-and-curl –

+1

네,'curl-setopt'가 올바른 해결책이라는 것을 알았습니다. 코드를 게시하지 않은 경우에도이 질문을 대답으로 설정했습니다. 그러나 그것의 충분히 ok, 나는 그것을 게시하고있다. 감사!! ;) –

0

쿠키 항아리를 사용하여보세요.

먼저, 사용자 인증이 손실 저장하는 "쿠키"(당신은 이미 쿠키 항아리를 사용하지 않는 가정) 인증, 그래서 당신이 만드는 다음 요청, 당신은 로그인 한 알 수 없습니다.

때 따라서 인증 쿠키를 저장하려면 쿠키 Jar을 사용해야합니다.

http://www.electrictoolbox.com/php-curl-cookies/

0

은 필요한 인증의 종류에 따라 달라진다. 널리 사용되는 기본 인증 유형 인 경우 요청에 추가되는 간단한 헤더입니다. 기술적 세부 사항 well explained at Wikipedia을 볼 수 있습니다. file_get_contents을 사용하여 요청에 헤더를 추가하려면 $context parameter을 사용하십시오. 사용 방법은 here으로 설명되어 있습니다.

관련 문제