2011-11-20 3 views
2

PHP에서 브라우저 (인간에 의해)에서 실행 된 페이지를 검사 할 방법이 있는지 궁금합니다.브라우저에서 페이지를 볼 수 있습니까? PHP

나는 단지 컬 요청을 통해 액세스 할 필요가있는 페이지를 가지고있다. 그래서 나는 사용자가 주위에 기웃 거리지 않게하고 싶다.

어떤 아이디어가 있습니까?

감사

편집 : 나는 아이디어 덕분에 함께했다

이 쉽게 웹에없는 그 질문 중 하나이기 때문에

, 여기 내가 사용하는 솔루션입니다 anthony-arnold에게. 그다지 안정적이지는 않지만 지금 당장해야합니다.

//made a new var with the user agent string. 
$user_agent = "anything I want in here, which will be my user agent"; 

//added this line in the cURL request to send the useragent to the target page: 
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); 

을 한 후 나는 단순히 문을 처리 할 경우 썼다 :

난 그저 내 컬 요청에 사용자 에이전트를 전송

if 
($_SERVER['HTTP_USER_AGENT'] == "my expected useragent - the string i previously placed into the $user_agent var."){ 

echo "the useragent is as expected, do whatever"; 
} 

else if 
($_SERVER['HTTP_USER_AGENT'] != "my expected useragent - the string i previously placed into the $user_agent var."){ 

echo "useragent is not as expected, bye now."; exit();} 

을 그리고 그 트릭을했다.

+0

당신은 cURL 요청을 가진 특수 변수를 보낼 수 있습니다 – Sedz

+0

인간이 명령 줄에서'curl '을 사용한다면 어떻게 될까요? : -O – deceze

+0

그래도 괜찮지 만 다른 누군가가 정말로 컬을 사용하여 액세스 권한을 얻고 싶다면 그렇게 할 수 있습니다. – Anthony

답변

4

확인 User-Agent 또는 페이지를 요청하는 브라우저 확인하기 위해 get browser function를 사용합니다. 특정 사용자 에이전트가 지정되지 않은 경우 웹 서버가 실패하도록 구성 할 수 있습니다. --user-agent 스위치를 사용하여 사용자 에이전트를 cURL로 설정할 수 있습니다 (man page 참조). 클라이언트가 보낸 사람이 정확한 사실에 있음을 절대적으로 확신 할 수 없다, 그래서

불행하게도, 사용자 에이전트는 스푸핑 될 수 있습니다.

하지만이 아이디어에는 문제가 있습니다. 공개 웹에 있다면 사람들이 어떤 방식 으로든 액세스하려고 시도 할 수도 있습니다. HTTP 요청이 유효하면 서버가 이에 응답합니다 (기본 구성에서). 실제로에 지정된 URL이 아닌 다른 방법으로 액세스하지 못하게하려면 추가 인증/승인 방법 (예 : 사용자 이름/SSL을 통한 암호 인증)에 투자해야 할 수 있습니다.

+0

get 브라우저 기능을 살펴 보았습니다. 브라우저에서 페이지를 보지 않은 경우 반환 할 내용이 있습니까? ($ _SERVER [ 'HTTP_USER_AGENT'] == "브라우저 정보를 얻지 못하면 반환되는 것은 무엇이든지") {// 뭔가를}} else {// 아무것도하지} 당신은 그렇게 생각합니까? 일할 수 있니? –

+1

예,'$ _SERVER [ 'HTTP_USER_AGENT']'가 작동합니다. 예상하고있는 사용자 에이전트에 대해 확인하십시오. 당신은'get_browser' 함수를 무시할 수 있습니다. – Anthony

+0

굉장합니다. 그 xD에 감사드립니다. –

관련 문제