如何使用php curl从youtube URL中获取html?
我想获得Youtube URL(https)的源代码,它类似于我们在浏览器中的“查看页面源代码”选项中看到的内容 下面是我的php代码-(index.php)如何使用php curl从youtube URL中获取html?,php,curl,web-scraping,Php,Curl,Web Scraping,我想获得Youtube URL(https)的源代码,它类似于我们在浏览器中的“查看页面源代码”选项中看到的内容 下面是我的php代码-(index.php) 网址: 它适用于其他URL,但不适用于任何youtube URL。为什么?您可以尝试以下方法: <?php function getSSLPage($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, false); curl_seto
网址:
它适用于其他URL,但不适用于任何youtube URL。为什么?您可以尝试以下方法:
<?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"]));
?>
如果您对卷曲没有坚持,您可以使用:
file_get_contents();
将以字符串形式返回url资源,因此:
echo file_get_contents('https://www.youtube.com/watch?v=fyLGa0E3OXk');
这将打印给定URL的源
由于有关标题的注释而编辑:
您可以传递
file\u get\u contents
一个使用stream\u context\u create()
创建的上下文资源,var\u dump输出以下内容:-布尔值为false。我刚刚用“”测试了该代码,效果良好。你在尝试什么URL?它也会返回与你的URL相同的结果。我已经使用WAMP服务器托管了相同的页面,有什么我需要为https页面设置的吗?谢谢,这很有帮助。是否可以更改访问文件时传递的标头?我想更改标题中的IP地址,就像我使用rand在上面的函数中所做的那样,以防止多次点击页面并被阻止。谢谢您的更改。现在明白了。我仍然有兴趣知道除了学习新事物之外,我学习的错误。CURLOPT_HTTPHEADER的把戏是毫无意义的,不会“欺骗”他们相信你的请求来自那里……但是为什么呢?它会将一个随机IP作为消息头发送给他们,不是吗?$\u SERVER['REMOTE\u ADDR']提供将请求发送到web服务器的IP地址。这通常是访问者的地址。Mercury再仔细研究一下,试试看。您缺少的是TCP为HTTP提供连接,我认为服务器将忽略您在标头中输入的内容,并使用TCP连接中的详细信息。因此,您的意思是web服务器不考虑在具有网页请求的数据包中传递的标头,而是考虑TCP连接的状态?
echo file_get_contents('https://www.youtube.com/watch?v=fyLGa0E3OXk');