将图像/视频流嵌入网页

时间:2014-10-04 16:48:34

标签: html image video embed man-in-the-middle

我正在尝试创建 PHP网页,以便访问者可以看到来自的视频流图像网络摄像头,但不允许访问者获取原始网址/ URI 。 换句话说,我有一个在给定地址操作的ip摄像头:端口,我可以看到嵌入HTML体内的流,如下所示:

    <img src="http://5.246.77.89:8080/videostream.cgi?user=myusername&amp;pwd=mypass&amp;resolution=32&amp;rate=15" alt="">

或者如果我们想要静态图像:

    <img src="http://5.246.77.89:8080/snapshot.cgi?user=myusername&amp;pwd=mypass&amp" alt="">

现在的问题是,如果有人查看页面后面的HTML代码,显然会看到相机的网址及其用户/密码凭据。这允许访问者随时连接到摄像头,即使不必访问托管此服务的页面,他们只需要在任何浏览器中键入URL

http://myip:myport/videostream.cgi?user=admin&amp;pwd=fewf2d53BVH&amp;resolution=32&amp;rate=15

我不希望用户能够这样做。所以我有一个想法:如果我能够将流包装到一个充当“中间人”的php网页中。我可以给访问者提供视频而不让他们知道原始来源。原始IP:PORT仅在我的服务器上可见。显然,他们总是可以使用我的网页的URL,但他们永远不会看到相机的用户/密码,我可以随时锁定服务。 此外,为了提高安全性,我可以设置托管网络摄像头的路由器,以接受来自我的网络服务器的连接。这将对尝试直接连接到webcabm的恶意用户起隐秘作用。 我可以在服务器端做什么来获得这种行为?

2 个答案:

答案 0 :(得分:1)

好吧,至少对于你可以使用curl的图像...... 正如我在评论中指出的那样,您可以创建一个包含以下内容的php文件(例如,my.php):

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://example.com/?password=4444&login=1111');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$picture = curl_exec($ch);
curl_close($ch);
//Display the image in the browser
header('Content-type: image/jpeg');
echo $picture;

而不仅仅是写:

 <img src='my.php'>

P.S。虽然我认为它不是最好的做事方式,但看起来它解决了这个问题。 img src中没有更多私人数据。我对视频格式一无所知,但对于图像来说,它似乎很容易。 您可以在此处详细了解curl:http://php.net/manual/en/book.curl.php

答案 1 :(得分:1)

使用上述passthru的另一种解决方案:

<?php 
Header("content-type:image/jpeg"); 
passthru("pic.jpg?login=11&pass=22"); 
?>

但是,它仍然只适用于图像,因为标题...如果您发现任何适用于视频/视频流的内容,请告诉我!