Php 我需要通过一个代理(从运行的fsockopen代码获取远程视频文件的大小)
由于fsockopen函数和HEAD命令,我有一个PHP运行代码,可以询问远程mp4文件的文件大小 现在,我需要将此代码移动到代理后面的其他服务器上,这是通过新代理并继续使用fsockopen的最佳方法?我真的卡住了。我不能挖隧道或处理两个插座 有什么想法吗?谢谢你的帮助和时间Php 我需要通过一个代理(从运行的fsockopen代码获取远程视频文件的大小),php,proxy,fsockopen,Php,Proxy,Fsockopen,由于fsockopen函数和HEAD命令,我有一个PHP运行代码,可以询问远程mp4文件的文件大小 现在,我需要将此代码移动到代理后面的其他服务器上,这是通过新代理并继续使用fsockopen的最佳方法?我真的卡住了。我不能挖隧道或处理两个插座 有什么想法吗?谢谢你的帮助和时间 private function filesize_remote($remotefile, $timeout=10) { $size = false; $url = parse_url($re
private function filesize_remote($remotefile, $timeout=10) {
$size = false;
$url = parse_url($remotefile);
if ($fp = @fsockopen($url['host'], ($url['port'] ? $url['port'] : 80), $errno, $errstr, $timeout)) {
fwrite($fp, 'HEAD '.@$url['path'].@$url['query'].' HTTP/1.0'."\r\n".'Host: '.@$url['host']."\r\n\r\n");
while (!feof($fp)) {
$headerline = fgets($fp, 4096);
if (preg_match('/^Content-Length: (.*)/', $headerline, $matches)) {
$size = intval($matches[1]);
break;
}
}
fclose ($fp);
}
return $size;
}
无代理:
<?php
$fp = fsockopen("www.wahoo.com",80);
fputs($fp, "GET <a href=\"http://www.yahoo.com/\" "
."title=\"http://www.yahoo.com/\">http://www.yahoo.com/</a> HTTP/1.0\r\n\r\n");
$data="";
while (!feof($fp)) $data.=fgets($fp,64000);
fclose($fp);
print $data;
?>
使用代理:
<?php
$ip = "1.2.3.4"; // proxy IP, change this according to your proxy setting
$port = 1234; // proxy port, change this according to your proxy setting
$fp = fsockopen($ip,$port); // connect to proxy
fputs($fp, "GET <a href=\"http://www.yahoo.com/\" "
. "title=\"http://www.yahoo.com/\">http://www.yahoo.com/</a> "
. "HTTP/1.0\r\nHost:www.yahoo.com:80\r\n\r\n");
$data="";
while (!feof($fp)) $data.=fgets($fp,64000);
fclose($fp);
print $data;
?>
使用代理和身份验证:
<?php
$ip = "1.2.3.4"; // proxy IP, change this according to your proxy setting
$port = 1234; // proxy port, change this according to your proxy setting
$fp = fsockopen($ip,$port); // connect to proxy
$login = "Alexander"; // login name
$passwd = "kiss me"; // password
fputs($fp, "GET <a href=\"http://www.yahoo.com/\" "
. "title=\"http://www.yahoo.com/\">http://www.yahoo.com/</a> HTTP/1.1\r\n"
. "Host:www.yahoo.com:80\r\n"
. "Proxy-Authorization: Basic ".base64_encode("$login:$passwd") ."\r\n\r\n");
$data="";
while (!feof($fp)) $data.=fgets($fp,64000);
fclose($fp);
//12314
print $data;
?>
看这里:OK@salamis,我试试看。我以前看过那个页面,但我真的被阻塞了,因为我认为不可能使用两次fsockopen。我将提供更多细节,这是一个很酷的例子。当您了解socks和http头时,您可以做任何事情。http是在tcp传输协议下创建的玩具。