我尝试获取网页的源代码。
$urlArena = 'http://arenavision.in/';
$suffixeSchedule = 'schedule';
$url = $urlArena.$suffixeSchedule;
//url = http://arenavision.in/schedule
$text = file_get_contents($url);
$fp = fopen('data.txt', 'w');
$text .= date('d-m-Y h:m:s');
fwrite($fp, $text);
fclose($fp);
我将它写在一个文件上,以确保包含var $ text:
<html>
<head>
<script type="text/javascript">
<pre>
//<![CDATA[
try{if (!window.CloudFlare) {var CloudFlare=
[{verbose:0,p:0,byc:0,owlid:"cf",bag2:1,mirage2:0,oracle:0,paths:{cloudflare:"/cdn-cgi/nexp/dok3v=1613a3a185/"},atok:"aea30972f99dcd729c29d94acbb3cc58",petok:"87f9b51be2424b953e36dd5ec0f8ce1b0f74a3b5-1493799639-1800",zone:"arenavision.in",rocket:"a",apps:{}}];document.write('<script type="text/javascript" src="//ajax.cloudflare.com/cdn-cgi/nexp/dok3v=85b614c0f6/cloudflare.min.js"><'+'\/script>');}}catch(e){};
//]]>
</script>
<script type="text/rocketscript">function set_cookie(){var now = new
Date();var time = now.getTime();time += 19360000 *
1000;now.setTime(time);document.cookie='beget=begetok'+';
expires='+now.toGMTString()+'; path=/';}set_cookie();location.reload();;
</script>
</head>
<body></body>
</html>
03-05-2017 08:05:46
</pre>
网页上是否有取消函数file_get_contents的脚本? 我可以避免吗?
我尝试卷曲,但我得到相同的结果。 我尝试使用其他网站(google.com),我能够获得所有源代码。
提前感谢您的帮助,
-G。
答案 0 :(得分:1)
此网站上的内容动态生成。因此,您无法下载可在浏览器中看到的完整页面。
无论如何,网站受到某些云系统的保护。但您可以在请求中提供Cookie以获取整页:
您必须模拟真实用户 - 在请求中添加cookie,在第一次响应之前接受它们。使用CURL来实现它
答案 1 :(得分:1)
网站需要一些cookie来获取您想要的页面。
这是场景:
1)卷曲第一页http://arenavision.in
2)使用正则表达式获取此值
document.cookie='beget=begetok'
// ^^^^^^^^^^^^^
3)将cookie值发送到下一个请求。
以下是使用cURL
终端命令的快速示例: -
curl 'http://arenavision.in/'
输出:
<html><head><script>function set_cookie(){var now = new Date();var time = now.getTime();time += 19360000 * 1000;now.setTime(time);document.cookie='beget=begetok'+'; expires='+now.toGMTString()+'; path=/';}set_cookie();location.reload();;</script></head><body></body></html>
在下一个请求中使用document.cookie
的值可以解决问题:
curl 'http://arenavision.in/' -H 'Cookie: beget=begetok'
答案 2 :(得分:0)
感谢Alex Slipknot和hassan。
你的两个解释帮助我理解很多。 所以它有效:) 这是我的最终代码:
$url = $urlArena.$suffixeSchedule;
$text = get_data($url);
$fp = fopen('data.txt', 'w');
$text .= date('d-m-Y h:m:s');
fwrite($fp, $text);
fclose($fp);
function get_data($url) {
$cookie = get_cookie($url);
if(!isset($cookie) || strlen($cookie) == 0)
{
debug('error : '.$cookie.' strlen : '.strlen($cookie));
return false;
}
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
function get_cookie($url)
{
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
preg_match('/document.cookie=\'([^\']+)\'/',$data,$m);
print_r($m);
return $m[1];
}