我想获取Youtube网址(https)的源代码,这与我们在上面看到的相似 - "查看网页来源"浏览器中的选项。
以下是我的PHP代码 - (index.php)
<?php
function gethtml($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
$ip=rand(0,255).'.'.rand(0,255).'.'.rand(0,255).'.'.rand(0,255);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("REMOTE_ADDR: $ip", "HTTP_X_FORWARDED_FOR: $ip"));
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/".rand(3,5).".".rand(0,3)." (Windows NT ".rand(3,5).".".rand(0,2)."; rv:2.0.1) Gecko/20100101 Firefox/".rand(3,5).".0.1");
$html = curl_exec($ch);
curl_close($ch);
return $html;
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$url = $_REQUEST["url"];
$html = gethtml($url);
echo htmlspecialchars($html);
}
?>
<html>
<head></head>
<body>
<form name="test" method="POST" action="./index.php"/>
URL : <input type="text" name="url"/>
<br>
<input type="submit" value="See HTML" name="submit"/>
<br>
</form>
</body>
</html>
适用于其他网址,但不适用于任何YouTube网址。为什么?
答案 0 :(得分:2)
你可以试试这个:
<?php
function getSSLPage($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSLVERSION,3);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
var_dump(getSSLPage($_POST["url"]));
?>
答案 1 :(得分:1)
如果你不坚持使用cURL,你可以使用:
file_get_contents();
这会将url资源作为字符串返回,所以:
echo file_get_contents('https://www.youtube.com/watch?v=fyLGa0E3OXk');
这将打印给定URL的来源。
由于对标题的评论而编辑:
您可以传递file_get_contents
使用stream_context_create()
创建的上下文资源。