在PHP

时间:2018-04-10 21:55:53

标签: php

请告诉我:如何在PHP中查看此URL的源代码:https://www.firmy.cz/Remesla-a-sluzby/Bezpecnostni-sluzby?_escaped_fragment_=?我测试了7种变种。它们都不起作用。

有些代码显示了一个奇怪的代码(不可读的字符),请参阅下面的php脚本中的注释。是否有可能该网站以某种方式防止通过PHP读取代码?对于其他站点,这些脚本没有任何问题。

将ISO更改为UTF(iso2utf)的功能也不起作用。

以下都不起作用:

<?php
$link="https://www.firmy.cz/Remesla-a-sluzby/Bezpecnostni-sluzby?_escaped_fragment_=";

// TEST 1:
function get_dataa($url) {
  $ch = curl_init();
  $timeout = 5;
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
  curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  $data = curl_exec($ch);
  curl_close($ch);
  return $data;
}

$html = get_dataa($link);
echo $html;
// return ��[�Z���]sG�&|m��n�lw...



// TEST 2:
$html = readfile($link);
echo $html;
//return ��[�Z���]sG�&|m��n�lw,���[�C��...



// TEST 3:
include_once('simple_html_dom.php');
$html = file_get_html($link);
echo htmlspecialchars($html);
//return empty



// TEST 4:
$c = curl_init($link);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($c);
if (curl_error($c))
    die(curl_error($c));
$status = curl_getinfo($c, CURLINFO_HTTP_CODE);
curl_close($c);
echo htmlspecialchars($html);
//return epmty




// TEST 5:
$html = file_get_contents($link);
echo htmlspecialchars($html);
//return epmty



// TEST 6:
$src=file($link);
print_r($src);
// return: Array ( [0] => ��[�Z���]sG�&|m��n�lw,���[�C��lK∲�ۻ�P$J��@"��......



// TEST 7:
$src=file($link);
$html="";
for($i=0; $i<5000; $i++){
$html.=iso2utf($src[$i]);
}
echo htmlspecialchars($html);
// return: ď[ÉZ˙í˝]sG&|mýnôlw,Ô÷[C¤äślKⲝ۝P$JŞĐ@"šŃs9Ó .....

2 个答案:

答案 0 :(得分:1)

因为页面是压缩的,所以你需要使用这个php函数: http://php.net/manual/en/function.gzdecode.php

以简单的方式:

$link="https://www.firmy.cz/Remesla-a-sluzby/Bezpecnostni-sluzby?_escaped_fragment_=";

function get_dataa($url) {
  $content = file_get_contents($url);
  return gzdecode($content); 
}

echo get_dataa($link);

答案 1 :(得分:0)

最终解决方案:

function get_dataa($url) {
  $content=file_get_contents($url);
   $ch = curl_init($url); 
   curl_setopt($ch, CURLOPT_NOBODY, 1); 
   curl_setopt($ch, CURLOPT_HEADER, 1); 
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
   $output = curl_exec($ch); 
   curl_close($ch);  
   if(strpos(" ".$output, "gzip")){ $content=gzdecode($content); }
  return $content; 
}