2013-11-22 4 views
3

IP 카메라가있어서 웹 페이지에 실재보기를 표시하고 싶습니다.IP 카메라에 자동 로그인

IP 카메라 익명 로그인을 허용하지 않으므로 연결하는 동안 사용자 이름과 암호를 입력해야합니다.

나는 자바 스크립트가 :

<img src="http://user:[email protected]_ip_address/cgi-bin/jpg/image.cgi?" width="640" height="480" name="refresh"> 

<script language="JavaScript" type="text/javascript">  
image = "http://camera_ip_address/cgi-bin/jpg/image.cgi?" 
function Start() { 
tmp = new Date(); 
tmp = "?"+tmp.getTime() 
document.images["refresh"].src = image+tmp 
setTimeout("Start()", 100) 
} 
Start();  
</SCRIPT> 

을 그리고 파이어 폭스에서 확인을 작동하지만 :

http://user:[email protected]_ip_number 

다른 브라우저에서 작동하지 않습니다 (이 사용자 이름과 암호를 입력하는 양식 팝업).

그러나 PHP에서는 사용자가 사용할 수 있습니다 물론

<?php 
header('Content-type: image/jpeg'); 
print(file_get_contents('http://user:[email protected]_ip_address/cgi-bin/jpg/image.cgi?')); 
?> 

그것은 단지 하나의 프레임을 보여줍니다하지만 당신은 사용자 이름과 암호를 입력 할 필요가 없습니다 : 나는했습니다 암호를 사용하여 보십시요.

PHP를 사용하여 IP 카메라에 로그인하려면 어떻게해야합니까? 웹 페이지를 열거하는 동안 한 번 로그인 할 수 있으면 브라우저를 닫을 때까지 브라우저가 사용자 이름과 암호를 기억할 것이기 때문에 내 javascript가 제대로 작동합니다.

내가 로그인하는 사용자 이름과 암호를 전송하는 방법을 모르겠어요. 내 영어 죄송합니다

합니다.

+0

웹 사이트 (카메라 아님)에 Apache를 실행하고 있습니까? –

답변

4

좋아, 그래서 그것을 PHP와 자바 스크립트를 사용하여 만들었습니다. 어쩌면 다른 사람에게 도움이 될 것입니다 :

예를 들어, 스냅 샷으로 PHP 파일을 저장하십시오.그것은 모든 브라우저에서 작품을 좋아

<img src="http://domain.com/snapshot.php" width="640" height="380" name="refresh"> 

<script language="JavaScript" type="text/javascript">  
image = "http://domain.com/snapshot.php" 
function Start() { 
tmp = new Date(); 
tmp = "?"+tmp.getTime() 
document.images["refresh"].src = image+tmp 
setTimeout("Start()", 300) 
} 
Start();  
</script> 

: PHP : HTML 파일에서

<?php 
$img="http://user:[email protected]_ip/cgi-bin/jpg/image.cgi?"; 
header ('content-type: image/jpeg'); 
readfile($img); 
?> 

는이 스크립트를 추가합니다. 시간 제한을 300 미만으로 설정하면 지연이 발생합니다. 나는 그것이 왜에 의해 초래 될지 모른다. 어쩌면 인터넷 연결 또는 웹 사이트 속도.

0

대신 Apache mod_rewrite을 사용할 수 있습니다. PHP 스택의 오버 헤드가 줄어들고 일반적으로 빠릅니다. 자세한 내용은 this page을 참조하십시오.

다음 중 하나를 선택하십시오.

아파치 .htaccess - 귀하의 페이지가 http://yoursite/livecam/image.jpg을 요청합니다. 이는 아파치의 프록시를 통해 카메라로 실행됩니다.

RewriteEngine on 
RewriteBase /livecam/ 
RewriteRule ^image.jpg$ http://user:[email protected]_ip_address/cgi-bin/jpg/image.cgi [P] 
ProxyPassReverse /livecam/image.jpg http://user:[email protected]_ip_address/cgi-bin/jpg/image.cgi 

는 PHP에서 image.php라는 파일을 생성 - 당신의 페이지가 요청할 무엇에 이미지를 스트림 http://yoursite/image.php을 요청합니다.

<?php 
$file = 'http://user:[email protected]_ip_address/cgi-bin/jpg/image.cgi'; 

if (file_exists($file)) { 
    header('Content-Type: image/jpeg'); 
    header('Content-Transfer-Encoding: binary'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($file)); 
    ob_clean(); 
    flush(); 
    readfile($file); 
    exit; 
} 
?> 

두 가지 모두 서버를 통해 이미지를 프록시합니다. 공격자가 아무 것도 신경 쓸 수없는 경우에도 공개 페이지에 사용자 이름과 암호를 제공하는 것은 일반적으로 나쁜 습관입니다.

당신의 코드처럼 (아파치 버전을 사용하는 경우 livecam/image.jpg를 함께 image.php 대체) 할 PHP.net

readfile()를 참조하십시오. 나는 또한 당신의 코드를 약간 단축했다.

<img src="http://yourserver/image.php" width="640" height="480" name="refresh"> 
<script language="JavaScript" type="text/javascript">setTimeout(function() {document.images["refresh"].src = "http://yourserver/image.php?"+math.random();}, 100);</SCRIPT> 
+0

Apache 및 PHP 솔루션이 작동하지 않습니다. htaccess를 사용하면 500 개의 내부 서버 오류가 발생하며 PHP를 사용하면 이미지가 있어야하는 빈 필드가 생깁니다. 내가 http : //yourserver/image.php로 간다면 비어있어 카메라에서 한 프레임을 보여야합니다. 그래서 PHP 파일이 있어야합니다. – Odin

0
IP:port/cgi-bin/jpg/image.cgi?&user=XXX&pwd=XXX 
    IP:port/cgi-bin/jpg/image.cgi?&usr=XXX&pwd=XXX 
    IP:port/snapshot.cgi?&user=XXX&pwd=XXX'; 
    IP:port/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=XXX&pwd=XXX';